Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r33225 -r33229 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 33225) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 33229) @@ -476,12 +476,23 @@ } } } - + //代理灭菌单上已经申请的物品 + List applicationItems = proxyDisinfection.getApplicationItems(); + //需要删除的物品 + List deleteTousseItems = new ArrayList(); + deleteTousseItems.addAll(applicationItems); // 设置发货物品明细 List tousseInfos = generateTousseItemInfo(proxyDisinfection, newProxyTousseInstanceList); List tousseItemList = new ArrayList(); for(TousseItenInfo tii : tousseInfos){ - TousseItem tousseItem = new TousseItem(); + //从数据库获取已经存在的申请项 + TousseItem tousseItem = getApplicationTousseItem(applicationItems, tii); + if(tousseItem == null){ + //新增的物品 + tousseItem = new TousseItem(); + }else{ + deleteTousseItems.remove(tousseItem); + } tousseItem.setTousseName(tii.getTousseName()); tousseItem.setAmount(tii.getAmount()); tousseItem.setDiposable("否"); @@ -493,9 +504,9 @@ tousseItem.setHasReceivedAmount(tii.getHasReceivedAmount()); tousseItemList.add(tousseItem); } - List applicationItems = proxyDisinfection.getApplicationItems(); - if(applicationItems != null){ - for (TousseItem tousseItem : applicationItems) { + + if(CollectionUtils.isNotEmpty(deleteTousseItems)){ + for (TousseItem tousseItem : deleteTousseItems) { objectDao.delete(tousseItem); } } @@ -522,7 +533,23 @@ } return newProxyTousseInstanceList; } + /** + * 获取旧单已经申请的物品 + * @param applicationItems + * @param tii + * @return + */ + private TousseItem getApplicationTousseItem(List applicationItems, TousseItenInfo tii){ + for (TousseItem tousseItem : applicationItems) { + if(tousseItem.getTousseDefinitionId().equals(tii.getTousseDefinitionId())){ + return tousseItem; + } + } + return null; + } + + /** * 生成申请项的信息。相同名称和类型的包实例,生成一个申请项信息。如果包名称一样,类型不一样。抛出异常,暂时允许这么干. * 同一张申请单,有两个相同名称的申请项,后续操作可能会有问题 * @param proxyDisinfection