Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java =================================================================== diff -u -r17832 -r17840 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java (.../RecyclingApplication.java) (revision 17832) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java (.../RecyclingApplication.java) (revision 17840) @@ -261,8 +261,11 @@ /** * 追加申请项,并持久化 + * @param objectDao + * @param otherUseRecord 是否为第一个使用记录外的另一个使用记录(即转换申请单合并的第二条或第二条以上的使用记录) + * 如果不是,则原申请项的数量保持不变,否则原申请项的基础上进行数据叠加 */ - public List appendTousseItemFromUseRecord(ObjectDao objectDao){ + public List appendTousseItemFromUseRecord(ObjectDao objectDao , boolean otherUseRecord){ if(useRecord != null){ List tousseItemList = this.getApplicationItems(); if(tousseItemList == null){ @@ -271,6 +274,7 @@ List tousseInstanceWillBeConvertedTousseItemList = useRecord.getTousseInstanceWillBeConvertedTousseItemList(objectDao); if(CollectionUtils.isNotEmpty(tousseInstanceWillBeConvertedTousseItemList)){ List tousseTransitionPlanItemList = new ArrayList(); + //循环要转换申请单的包实例 for(TousseInstance tousseInstance : tousseInstanceWillBeConvertedTousseItemList){ TousseDefinition td = tousseInstance.getTousseDefinition(); if(td == null){ @@ -279,10 +283,18 @@ TousseItem currentTousseItem = null; if(CollectionUtils.isNotEmpty(tousseItemList)){ boolean foundTousseItem = false; + //循环之前的每个申请项 for (TousseItem tousseItem : tousseItemList) { - currentTousseItem = tousseItem; if(tousseInstance.getTousseDefinition().getId().longValue() == tousseItem.getTousseDefinitionId().longValue()){ - tousseItem.setAmount(tousseItem.getAmount() + 1); + currentTousseItem = new TousseItem(); + currentTousseItem.setId(tousseItem.getId()); + //是否为第二个或第二个以后的使用记录转换合并到本申请单 + if(otherUseRecord){ + tousseItem.setAmount(tousseItem.getAmount() + 1); + } + if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ + tousseItem.setUrgentAmount(tousseItem.getUrgentAmount() + 1); + } tousseItem.setPrice(tousseInstance.getTousseDefinition().getPrice()); tousseItem.setRowPrice(MathTools.add(tousseItem.getRowPrice() , tousseInstance.getTousseDefinition().getPrice()).doubleValue()); foundTousseItem = true; @@ -297,7 +309,9 @@ currentTousseItem.setInvoicePlanID(this.getId()); currentTousseItem.setTousseName(tousseInstance.getTousseName()); currentTousseItem.setAmount(1); - + if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ + currentTousseItem.setUrgentAmount(currentTousseItem.getUrgentAmount() + 1); + } currentTousseItem.setUnit(td.getUnit()); currentTousseItem.setIsTraceable(td.getIsTraceable()); currentTousseItem.setPrice(td.getPrice()); @@ -324,7 +338,9 @@ currentTousseItem.setInvoicePlanID(this.getId()); currentTousseItem.setTousseName(tousseInstance.getTousseName()); currentTousseItem.setAmount(1); - + if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ + currentTousseItem.setUrgentAmount(currentTousseItem.getUrgentAmount() + 1); + } currentTousseItem.setUnit(td.getUnit()); currentTousseItem.setIsTraceable(td.getIsTraceable()); currentTousseItem.setPrice(td.getPrice()); @@ -347,23 +363,34 @@ //如果包定义为要回收且器械包类型为器械包时,构造预回收计划单明细 if(td.isInsideTousse() && Constants.STR_YES.equals(td.getIsConvertApplyGoods())){ + TousseTransitionPlanItem tousseTransitionPlanItem = null; if(CollectionUtils.isNotEmpty(tousseTransitionPlanItemList)){ - for (TousseTransitionPlanItem tousseTransitionPlanItem : tousseTransitionPlanItemList) { - if(tousseTransitionPlanItem.getTousseItemId() != null && currentTousseItem.getId() != null - && tousseTransitionPlanItem.getTousseItemId() == currentTousseItem.getId()){ + boolean foundTousseTransitionPlanItemInList = false; + for (TousseTransitionPlanItem item : tousseTransitionPlanItemList) { + if(item.getTousseItemId() != null && currentTousseItem.getId() != null + && item.getTousseItemId().longValue() == currentTousseItem.getId().longValue()){ + tousseTransitionPlanItem = item; tousseTransitionPlanItem.setAmount(tousseTransitionPlanItem.getAmount() + 1); - if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ tousseTransitionPlanItem.setUrgentAmount(tousseTransitionPlanItem.getUrgentAmount() + 1); } + foundTousseTransitionPlanItemInList = true; break; } } + if(foundTousseTransitionPlanItemInList == false){ + tousseTransitionPlanItem = new TousseTransitionPlanItem(); + tousseTransitionPlanItem.setTousseItemId(currentTousseItem.getId()); + tousseTransitionPlanItem.setAmount(1); + if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ + tousseTransitionPlanItem.setUrgentAmount(1); + } + tousseTransitionPlanItemList.add(tousseTransitionPlanItem); + } }else{ - TousseTransitionPlanItem tousseTransitionPlanItem = new TousseTransitionPlanItem(); + tousseTransitionPlanItem = new TousseTransitionPlanItem(); tousseTransitionPlanItem.setTousseItemId(currentTousseItem.getId()); tousseTransitionPlanItem.setAmount(1); - tousseTransitionPlanItem.setUrgentAmount(0); if(Constants.STR_YES.equals(tousseInstance.getIsUrgentForUseRecord())){ tousseTransitionPlanItem.setUrgentAmount(1); } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/useRecord/UseRecordManagerTests.java =================================================================== diff -u -r17832 -r17840 --- ssts-web/src/test/java/test/forgon/disinfectsystem/useRecord/UseRecordManagerTests.java (.../UseRecordManagerTests.java) (revision 17832) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/useRecord/UseRecordManagerTests.java (.../UseRecordManagerTests.java) (revision 17840) @@ -1681,6 +1681,7 @@ original1.setOperator(AcegiHelper.getLoginUserFullName()); List orginalTousseInstanceListForUseRecord1 = new ArrayList(); + tousseInstance_开口包1.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); orginalTousseInstanceListForUseRecord1.add(tousseInstance_开口包1); orginalTousseInstanceListForUseRecord1.add(tousseInstance_穿刺包1); original1.setTousseInstanceList(orginalTousseInstanceListForUseRecord1); @@ -1714,6 +1715,8 @@ modified1.setCircuitNurse("李四1"); List modifiedTousseInstanceListForUseRecord1 = new ArrayList(); + tousseInstance_开胸包1.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); + tousseInstance_开口包2.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); modifiedTousseInstanceListForUseRecord1.add(tousseInstance_开胸包1); modifiedTousseInstanceListForUseRecord1.add(tousseInstance_开颅包1); modifiedTousseInstanceListForUseRecord1.add(tousseInstance_开口包2); @@ -1788,6 +1791,9 @@ original2.setCircuitNurse("赵六"); List orginalTousseInstanceListForUseRecord2 = new ArrayList(); + tousseInstance_开胸包3.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); + tousseInstance_开颅包2.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); + tousseInstance_开颅包3.setIsUrgentForUseRecord(com.forgon.Constants.STR_YES); orginalTousseInstanceListForUseRecord2.add(tousseInstance_开口包1); orginalTousseInstanceListForUseRecord2.add(tousseInstance_开胸包2); orginalTousseInstanceListForUseRecord2.add(tousseInstance_开胸包3); Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r17832 -r17840 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 17832) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 17840) @@ -1241,7 +1241,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } }else{ @@ -1276,7 +1276,7 @@ } //追加申请项(相同物品的,则数量进行叠加) List tousseTransitionPlanItemList = - recyclingApplication.appendTousseItemFromUseRecord(objectDao); + recyclingApplication.appendTousseItemFromUseRecord(objectDao , true); //2.插入使用记录转换申请单关联中间表 UseRecordToRecycleApplication useRecordConvertRecyclingApplication = new UseRecordToRecycleApplication(); @@ -1319,7 +1319,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } } @@ -1342,9 +1342,6 @@ useRecordConvertRecyclingApplication.setInvoicePlanId(newRecyclingApplication.getId()); useRecordConvertRecyclingApplication.setUseRecordId(useRecordId); objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); - - //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); } } } @@ -1383,7 +1380,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } }else{ @@ -1418,7 +1415,7 @@ } //追加申请项(相同物品的,则数量进行叠加) List tousseTransitionPlanItemList = - recyclingApplication.appendTousseItemFromUseRecord(objectDao); + recyclingApplication.appendTousseItemFromUseRecord(objectDao , true); //2.插入使用记录转换申请单关联中间表 UseRecordToRecycleApplication useRecordConvertRecyclingApplication = new UseRecordToRecycleApplication(); @@ -1460,7 +1457,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } } @@ -1522,7 +1519,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } }else{ @@ -1556,7 +1553,7 @@ } //追加申请项(相同物品的,则数量进行叠加) List tousseTransitionPlanItemList = - recyclingApplication.appendTousseItemFromUseRecord(objectDao); + recyclingApplication.appendTousseItemFromUseRecord(objectDao , true); //2.插入使用记录转换申请单关联中间表 UseRecordToRecycleApplication useRecordConvertRecyclingApplication = new UseRecordToRecycleApplication(); @@ -1599,7 +1596,7 @@ objectDao.saveOrUpdate(useRecordConvertRecyclingApplication); //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, newRecyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(newRecyclingApplication , false) , false); } } } @@ -1659,7 +1656,7 @@ if(CollectionUtils.isNotEmpty(list)){ for (RecyclingApplication recyclingApplication : list) { //生成预回收记录 - tousseTransitionPlanManager.save(useRecord, recyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(recyclingApplication) , false); + tousseTransitionPlanManager.save(useRecord, recyclingApplication, getTousseTransitionPlanItemListByRecyclingApplication(recyclingApplication , false) , false); } } } @@ -1822,11 +1819,12 @@ /** * 根据申请单构造预回收计划单明细 * @param recyclingApplication 申请单:一般为使用记录转换的申请单 + * @param otherUseRecord 是否为另外的使用记录 * @return */ - private List getTousseTransitionPlanItemListByRecyclingApplication(RecyclingApplication recyclingApplication){ + private List getTousseTransitionPlanItemListByRecyclingApplication(RecyclingApplication recyclingApplication , boolean otherUseRecord){ List resultList = new ArrayList(); - List list = recyclingApplication.appendTousseItemFromUseRecord(objectDao); + List list = recyclingApplication.appendTousseItemFromUseRecord(objectDao , otherUseRecord); if(CollectionUtils.isNotEmpty(list)){ for (TousseTransitionPlanItem tousseTransitionPlanItem : list) { resultList.add(tousseTransitionPlanItemManager.build(tousseTransitionPlanItem.getTousseItemId(), tousseTransitionPlanItem.getAmount(), tousseTransitionPlanItem.getUrgentAmount())); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/borrow/BorrowApplicationTest.java =================================================================== diff -u -r17726 -r17840 --- ssts-web/src/test/java/test/forgon/disinfectsystem/borrow/BorrowApplicationTest.java (.../BorrowApplicationTest.java) (revision 17726) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/borrow/BorrowApplicationTest.java (.../BorrowApplicationTest.java) (revision 17840) @@ -12,13 +12,17 @@ import com.forgon.disinfectsystem.recyclingapplication.vo.ReturnGoodVo; import com.forgon.disinfectsystem.useRecord.service.UseRecordManager; import com.forgon.disinfectsystem.vo.TousseItemVo; + import net.sf.json.JSONArray; import net.sf.json.JSONObject; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.Session; import org.springframework.orm.hibernate4.HibernateTemplate; +import org.springframework.test.annotation.Rollback; import org.testng.annotations.Test; + import test.forgon.constant.Constants; import test.forgon.disinfectsystem.AbstractCSSDTest; import test.forgon.disinfectsystem.borrow.bo.BorrowBo; @@ -28,6 +32,7 @@ import test.forgon.disinfectsystem.dataProvider.tousseDefinition.TousseDefinitionDataProvider; import javax.annotation.Resource; + import java.util.ArrayList; import java.util.Collection; import java.util.Date;