Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r31279 -r31295 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 31279) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 31295) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -53,11 +54,13 @@ import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; +import com.forgon.disinfectsystem.recyclingapplication.service.RecyclingApplicationManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.materialinstance.service.MaterialInstanceManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; +import com.forgon.disinfectsystem.vo.TousseItemVo; import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; @@ -116,6 +119,13 @@ private UrgentLevelManager urgentLevelManager; + private RecyclingApplicationManager recyclingApplicationManager; + + public void setRecyclingApplicationManager( + RecyclingApplicationManager recyclingApplicationManager) { + this.recyclingApplicationManager = recyclingApplicationManager; + } + public void setUrgentLevelManager(UrgentLevelManager urgentLevelManager) { this.urgentLevelManager = urgentLevelManager; } @@ -1535,27 +1545,14 @@ String operationTime, String operationRoom, String ascriptionDepartment) throws Exception { ForeignTousseApplication splitApplication = new ForeignTousseApplication(); - List newApplicationItems = new ArrayList(); BeanUtils.copyProperties(splitApplication, foreignTousseApplication); - for (TousseItem tousseItem : splitApplicationItems) { - TousseItem ti = new TousseItem(); - BeanUtils.copyProperties(ti, tousseItem); - ti.setId(null); - ti.setInvoicePlan(null); - ti.setInvoicePlanID(null); - newApplicationItems.add(ti); - tousseItem.setInvoicePlan(null); - tousseItem.setInvoicePlanID(null); - applicationItems.remove(tousseItem); - } - splitApplication.setApplicationItems(newApplicationItems); splitApplication.setId(null); splitApplication.setInvoice(null); splitApplication.setSerialNumber(serialNumManager.getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); // 生成备注:“本申请单于2021-04-21 17:20由“原申请单流水号”中的”器械包名称“更改病人住院号后生成” String tousseNames = ""; String supplierNames = ""; - for (TousseItem tousseItem : newApplicationItems) { + for (TousseItem tousseItem : splitApplicationItems) { if(StringUtils.isBlank(tousseNames)){ tousseNames = tousseItem.getTousseName(); }else{ @@ -1599,6 +1596,21 @@ splitApplication.setOperationRoom(operationRoom); splitApplication.setAscriptionDepartment(ascriptionDepartment); objectDao.save(splitApplication); + + // 设置申请单物品 + List newApplicationItems = new ArrayList(); + for (TousseItem tousseItem : splitApplicationItems) { + TousseItem ti = new TousseItem(); + BeanUtils.copyProperties(ti, tousseItem); + ti.setId(null); + ti.setInvoicePlan(null); + ti.setInvoicePlanID(null); + newApplicationItems.add(ti); + tousseItem.setInvoicePlan(null); + tousseItem.setInvoicePlanID(null); + applicationItems.remove(tousseItem); + } + splitApplication.setApplicationItems(newApplicationItems); List foreignTdIdList = new ArrayList(); for (TousseItem tousseItem : newApplicationItems) { tousseItem.setInvoicePlan(splitApplication); @@ -1641,8 +1653,42 @@ foreignTousseApplication.setTousseName(tousseNames1); foreignTousseApplication.setSupplierName(supplierNames1); objectDao.saveOrUpdate(foreignTousseApplication); + + if(!InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + .equals(foreignTousseApplication.getRecyclingStatus())){ + // 回收环节之后的拆分操作 + Collection splitedItemVos = newTousseItemVos(splitApplication.getApplicationItems()); + recyclingApplicationManager.splitApplication(foreignTousseApplication, splitedItemVos, splitApplication); + splitApplication.setRecyclingStatus(foreignTousseApplication.getRecyclingStatus()); + } + } + /** + * + */ + private Collection newTousseItemVos(List applicationItems) { + Collection vos = new ArrayList(); + if(CollectionUtils.isEmpty(applicationItems)){ + return vos; + } + for (TousseItem item : applicationItems) { + TousseItemVo vo = new TousseItemVo(); + vo.setTousseName(item.getTousseName()); + vo.setAmount(item.getAmount()); + vo.setPrice(item.getPrice()); + vo.setRowPrice(MathTools.mul(vo.getAmount(), vo.getPrice()).doubleValue()); + vo.setDiposable(item.getDiposable()); + vo.setTousseDefinitionId(item.getTousseDefinitionId()); + vo.setTousseDefinitionID(item.getTousseDefinitionId()); + vo.setDisposableGoodsId(item.getDisposableGoodsId()); + vo.setTousseType(item.getTousseType()); + vo.setUnit(item.getUnit()); + vos.add(vo); + } + return vos; + } + /** * 外来器械申请单拆分检查 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r31252 -r31295 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31252) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31295) @@ -7866,7 +7866,8 @@ * @param oldRecyclingApplication * @param splitedItemVos */ - private void splitApplication(RecyclingApplication oldRecyclingApplication, Collection splitedItemVos, RecyclingApplication newRecyclingApplication) { + @Override + public void splitApplication(InvoicePlan oldRecyclingApplication, Collection splitedItemVos, InvoicePlan newRecyclingApplication) { if(CollectionUtils.isEmpty(splitedItemVos)){ return; } @@ -7927,7 +7928,7 @@ * @param splitedItemVos */ @SuppressWarnings("unchecked") - private void splitTousseInstance(RecyclingApplication newPlan, RecyclingApplication oldPlan, Collection splitedItemVos) { + private void splitTousseInstance(InvoicePlan newPlan, InvoicePlan oldPlan, Collection splitedItemVos) { List tousseDefinitionIdList = new ArrayList(); Map amountMap = new HashMap(); @@ -7958,6 +7959,9 @@ tousseInstance.setInvoicePlanSerialNum(newPlan.getSerialNumber()); tousseInstance.setRecyclingRecordId(newRecyclingRecord.getId()); tousseInstance.setRecyclingItemId(itemMap.get(td.getId()).getId()); + if(DatabaseUtil.isPoIdValid(tousseInstance.getForeignTousseApp_id())){ + tousseInstance.setForeignTousseApp_id(newPlan.getId()); + } amountMap.put(tousseInstance.getTousseDefinition().getId(), --amount); } } @@ -8077,7 +8081,7 @@ * @param newClassifyBaskets * @param newPlan */ - private RecyclingRecord addRecyclingRecord(List newClassifiedItem, RecyclingApplication newPlan, RecyclingApplication oldPlan, RecyclingRecord oldRecyclingRecord) { + private RecyclingRecord addRecyclingRecord(List newClassifiedItem, InvoicePlan newPlan, InvoicePlan oldPlan, RecyclingRecord oldRecyclingRecord) { if(CollectionUtils.isEmpty(newClassifiedItem)){ return null; } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r31086 -r31295 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 31086) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 31295) @@ -597,4 +597,12 @@ */ public Map calStorageForTousseDefinition(List tousseDefinitionIdList, String cssdOrgUnitCode); + /** + * 从旧申请单上拆分物品; + * 新申请单生成回收记录; + * @param oldRecyclingApplication + * @param splitedItemVos + */ + public void splitApplication(InvoicePlan oldRecyclingApplication, Collection splitedItemVos, InvoicePlan newRecyclingApplication); + }