Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r38229 -r38281 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 38229) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 38281) @@ -8068,13 +8068,22 @@ String key = wentry.getKey(); String washTime = ""; Long washRecordId = 0L; - List tis = wentry.getValue(); + List wtis = wentry.getValue(); String[] arr = key.split("_"); if(arr != null && arr.length > 1 && !"notWashInstance".equals(arr[0])){ washTime = arr[0]; washRecordId = Long.valueOf(arr[1]); } - if(tis != null && tis.size() > 0){ + if(CollectionUtils.isEmpty(wtis)){ + continue; + } + //根据申请单ID进行分组,确保每个装配任务只关联一个申请单的物品 + Map> invoicePlanIdTousseInstanceMap = groupByInvoicePlanId(wtis); + for (Entry> ipEntry : invoicePlanIdTousseInstanceMap.entrySet()) { + List tis = ipEntry.getValue(); + if(CollectionUtils.isEmpty(tis)){ + continue; + } int amount = tis.size(); TousseInstance tousseInstance = tis.get(0); PackingTask packingTask = new PackingTask(); @@ -8094,6 +8103,8 @@ packingTask.setSettleAccountsDepartCoding(tousseInstance.getSettleAccountsDepartCoding()); packingTask.setRpInvoicePlanId(tousseInstance.getInvoicePlanID()); } + //被重装器械包关联的退货重发申请单(被重装器械包做了退货重发后,质量监测重装的包,应该发货到退货重发申请单) + packingTask.setRtInvoicePlanId(tousseInstance.getRtInvoicePlanId()); packingTask.setRpTousseItemId(tousseInstance.getForeignProxyItem_id()); // SourceId 要么是回收单id,要么是申请单id,没有回收单时,用申请单id. if(packingTask.getSourceId() == null){ @@ -8177,6 +8188,28 @@ } /** + * 根据申请单ID分组 + * @param tis + * @return + */ + private Map> groupByInvoicePlanId(List tis) { + Map> invoicePlanIdTousseInstanceMap = new HashMap>(); + if(CollectionUtils.isEmpty(tis)){ + return invoicePlanIdTousseInstanceMap; + } + for (TousseInstance tousseInstance : tis) { + Long invoicePlanID = tousseInstance.getInvoiceTargetInovicePlanId(); + List tiList = invoicePlanIdTousseInstanceMap.get(invoicePlanID); + if(tiList == null){ + tiList = new ArrayList(); + } + tiList.add(tousseInstance); + invoicePlanIdTousseInstanceMap.put(invoicePlanID, tiList); + } + return invoicePlanIdTousseInstanceMap; + } + + /** * 查询包实例来源科室编码及名称的map * @param tdIdMapTousseInstances * @return