Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r15325 -r15518 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 15325) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 15518) @@ -51,6 +51,8 @@ public List findSignedRecyclingApplicationByDepartCoding( String deparCoding); + + public boolean isNeedInvoiceForRecyclingApplication(RecyclingApplication application); public void saveOrUpdateRecyclingApplication( RecyclingApplication recyclingApplication,Boolean isCommit); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r15493 -r15518 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 15493) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 15518) @@ -1395,6 +1395,13 @@ //设置申请单状态 if(!isForeignTousseApplication){ invoicePlanManager.computeAndSetStatus(application); + //手术室使用记录转换的申请单是否需要发货 + if(application instanceof RecyclingApplication){ + boolean needInvoice = recyclingApplicationManager.isNeedInvoiceForRecyclingApplication((RecyclingApplication)application); + if(!needInvoice){ + application.setDeliverStatus(""); + } + } }else{ setForeignTousseProperty(record, application); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java =================================================================== diff -u -r15493 -r15518 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 15493) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 15518) @@ -52,6 +52,8 @@ public List getSupplyRoomList(Integer type); + public SupplyRoomConfig getSupplyRoomConfig(String orgUnitCode,Integer type); + public Map getRecyclingApplicationDepartMap(); public boolean isSettleAccountsDepart(String departCoding); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r15493 -r15518 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15493) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15518) @@ -19,11 +19,9 @@ import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; - import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; - import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.collections4.Closure; import org.apache.commons.collections4.CollectionUtils; @@ -38,7 +36,6 @@ import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; - import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; @@ -57,7 +54,6 @@ import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; -import com.forgon.disinfectsystem.entity.basedatamanager.foreigntoussedefinition.ForeignTousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; @@ -1034,8 +1030,6 @@ recyclingApplication.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); recyclingApplication .setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); - recyclingApplication - .setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); recyclingApplication.setOrderByFiled(InvoicePlan.RECYCLING_AWAITRECYCLE); recyclingApplication.setReaders(";ORGUNIT_" + recyclingApplication.getDepartCoding() + ";"); @@ -1108,6 +1102,13 @@ //设置申请单的使用记录 recyclingApplication.setUseRecord((UseRecord)objectDao.getByProperty(UseRecord.class.getSimpleName(), "id", useRecordId)); + boolean needInvoice = isNeedInvoiceForRecyclingApplication(recyclingApplication); + if(needInvoice){ + recyclingApplication.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + }else{ + recyclingApplication.setDeliverStatus(""); + } + saveOrUpdateRecyclingApplication(recyclingApplication,true); } } @@ -1166,39 +1167,55 @@ for (Entry entry : tousseNameAndAmount.entrySet()) { String tousseDefinitionIdAndName = entry.getKey(); String tousseDefinitionId = tousseDefinitionIdAndName.split("_")[0]; - String tousseName = tousseDefinitionIdAndName.split("_")[1]; - /*TousseDefinition tousseDefinition = tousseDefinitionManager - .getTousseDefinitionByName(tousseName);*/ TousseDefinition tousseDefinition = tousseDefinitionManager.getTousseDefinitionById(Long.parseLong(tousseDefinitionId)); if (tousseDefinition != null) { String tousseType = tousseDefinition.getTousseType(); - if(TousseDefinition.PACKAGE_TYPE_DRESSING - .equals(tousseType)){ + if (TousseDefinition.PACKAGE_TYPE_DRESSING.equals(tousseType)) { includeInvoiceItems = InvoicePlan.SIGNED_TRUE; } - if (TousseDefinition.PACKAGE_TYPE_INSIDE - .equals(tousseType)) { + if (TousseDefinition.PACKAGE_TYPE_INSIDE.equals(tousseType) + && !com.forgon.Constants.STR_NO.equals(tousseDefinition + .getIsRecycling())) { needRecycling = true; } } } if (needRecycling) { - recyclingApplication - .setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); - recyclingApplication - .setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + recyclingApplication.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); recyclingApplication.setOrderByFiled(InvoicePlan.RECYCLING_AWAITRECYCLE); recyclingApplication.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); } else { - recyclingApplication - .setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_RECYCLED); - recyclingApplication - .setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + recyclingApplication.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_RECYCLED); recyclingApplication.setOrderByFiled(InvoicePlan.DELIVER_AWAITDELIVER); recyclingApplication.setIncludeRecyclingItems(InvoicePlan.SIGNED_FALSE); } + + boolean needInvoice = isNeedInvoiceForRecyclingApplication(recyclingApplication); + if(needInvoice){ + recyclingApplication.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + }else{ + recyclingApplication.setDeliverStatus(""); + } recyclingApplication.setIncludeInvoiceItems(includeInvoiceItems); } + + /** + * 使用记录转换的申请单是否需要发货 + * @return + */ + public boolean isNeedInvoiceForRecyclingApplication(RecyclingApplication application){ + boolean needInvoice = true; + if (application != null && application.getUseRecord() != null + && StringUtils.isNotBlank(application.getDepartCoding())) { + SupplyRoomConfig config = supplyRoomConfigManager + .getSupplyRoomConfig(application.getDepartCoding(), + SupplyRoomConfig.SUPPLYROOM_TYPE_5); + if (config != null) { + needInvoice = false; + } + } + return needInvoice; + } @SuppressWarnings("unchecked") private List findReturnGoodsRecordByInvoicePlanId( @@ -2612,15 +2629,19 @@ if (committedStatus && (StringUtils.isBlank(application.getDeliverStatus()) || InvoicePlan.DELIVERSTATUS_AWAITDELIVER .equals(application.getDeliverStatus()))) { - application - .setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); - application - .setOrderByFiled(InvoicePlan.RECYCLING_AWAITRECYCLE); + + boolean needInvoice = isNeedInvoiceForRecyclingApplication(application); + if(needInvoice){ + application.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + }else{ + application.setDeliverStatus(""); + } + + application.setOrderByFiled(InvoicePlan.RECYCLING_AWAITRECYCLE); if (InvoicePlan.SIGNED_FALSE.equals(application.getIncludeRecyclingItems())) { application.setRecyclingStatus(null); } else { - application - .setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); + application.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); } } } @@ -3206,6 +3227,10 @@ RecyclingApplication recyclingApplication = new RecyclingApplication(); recyclingApplication .setType(StringUtils.isNotBlank(invoicePlanType) ? invoicePlanType : RecyclingApplication.TYPE_COMBO_FORM); + if(useRecordId != null){ + //设置申请单的使用记录 + recyclingApplication.setUseRecord((UseRecord)objectDao.getByProperty(UseRecord.class.getSimpleName(), "id", useRecordId)); + } recyclingApplication.setApplicant(applicant); recyclingApplication.setDepart(depart); recyclingApplication.setSubmitTime(new Date()); @@ -3264,10 +3289,6 @@ items.add(tousseItem); } } - if(useRecordId != null){ - //设置申请单的使用记录 - recyclingApplication.setUseRecord((UseRecord)objectDao.getByProperty(UseRecord.class.getSimpleName(), "id", useRecordId)); - } saveOrUpdateRecyclingApplication(recyclingApplication,true); list.add(recyclingApplication); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java =================================================================== diff -u -r15493 -r15518 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 15493) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 15518) @@ -612,4 +612,13 @@ } return objectDao.excuteSQL(sql); } + + @Override + public SupplyRoomConfig getSupplyRoomConfig(String orgUnitCoding, Integer type) { + if(StringUtils.isBlank(orgUnitCoding) || type == null){ + return null; + } + String sql = "where po.orgUnitCoding = '" + orgUnitCoding + "' and po.supplyRoomType = " + type; + return (SupplyRoomConfig)objectDao.getBySql(SupplyRoomConfig.class.getSimpleName(), sql); + } }