Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r14143 -r14167 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14143) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14167) @@ -2487,7 +2487,14 @@ } // 更新包数量(主要是消毒物品、自定义包、外来包按材料统计) updateTousseWorkloadStaticsAmount(td); - packingTaskMap.put(td.getName(), packingTask); + String tousseName = td.getName(); + String tousseType = td.getTousseType(); + if (TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tousseType) + || TousseDefinition.PACKAGE_TYPE_CUSTOM.equals(tousseType) + || TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)) { + tousseName += ("_" + td.getInvoicePlanID()); + } + packingTaskMap.put(tousseName, packingTask); } int needPackingAmount = currentPackAmount; @@ -2620,7 +2627,14 @@ packingAmountForThisTask, currentPackingTask); //对于器械包名称含有下划线的,将对参数进行特殊处理 - currentPackingTaskAsList = packingTasks; + if(tousseName.indexOf("_") != -1){ + currentPackingTaskAsList.add(currentPackingTask); + if(needPackingAmount > currentPackingTask.getUnPackAmount()){ + packingAmountForThisTask = currentPackingTask.getUnPackAmount(); + } + }else{ + currentPackingTaskAsList = packingTasks; + } JSONObject result = batchCreateTousseInstance( operator, operatorCode, reviewer, @@ -3185,23 +3199,31 @@ */ private void updatePackingTask(List packingTaskList, Integer currentPackAmount , String tousseName,String basketBarcode){ int leftAmount = currentPackAmount; + Map map = new HashMap(); for(PackingTask packingTask : packingTaskList){ if(leftAmount >= packingTask.getUnPackAmount()){ leftAmount -= packingTask.getUnPackAmount(); delete(packingTask); - updateContainerStatus(packingTask); + if(StringUtils.isNotBlank(packingTask.getBasketBarcode())){ + map.put(packingTask.getBasketBarcode(), packingTask.getBasketBarcode()); + } }else{ // 修改待装配数量 packingTask.setUnPackAmount(packingTask.getUnPackAmount() - leftAmount); saveOrUpdate(packingTask); break; } } + if(map.size() > 0){ + for (String basketBarcodeStr : map.keySet()) { + updateContainerStatus(basketBarcodeStr); + } + } } - private void updateContainerStatus(PackingTask task){ - if(task != null && StringUtils.isNotBlank(task.getBasketBarcode())){ - String [] basketArray = task.getBasketBarcode().split(";"); + private void updateContainerStatus(String basketBarcodeStr){ + if(StringUtils.isNotBlank(basketBarcodeStr)){ + String [] basketArray = basketBarcodeStr.split(";"); if(basketArray != null && basketArray.length > 0 ){ for (String basketBarcode : basketArray) { String sql = "where po.basketBarcode like '%" + basketBarcode + "%' and po.unPackAmount > 0"; @@ -3214,8 +3236,7 @@ } } } - } - + } } } @@ -3249,7 +3270,7 @@ }else{ tousseInstance.setStatus(TousseInstance.STATUS_PACKED); } - tousseInstance.setTousseName(tousseName); + tousseInstance.setTousseName(td.getName()); tousseInstance.setOperator(operator); tousseInstance.setOperatorCode(operatorCode);