Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r16676 -r16696 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16676) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16696) @@ -3517,6 +3517,7 @@ JSONArray materialsJsonArray = new JSONArray(); // 消毒物品明细 boolean isDisinfectionGoodsPrintExpirationDate = false;// 消毒物品是否打印失效期 + JSONObject tdJson = new JSONObject(); List tousseInstances = new LinkedList(); JSONArray virtualSeqNumArray = new JSONArray();// 待打印的虚拟篮筐序列号集合 @@ -3537,25 +3538,44 @@ } });*/ + Map packingTaskMap = new HashMap(); + for (PackingTask packingTask : packingTasks) { + + TousseDefinition td = packingTask.getTousseDefinition(); + //如果配置是否打印材料时 + if(TousseDefinition.STR_YES.equals(td.getIsPrint()) && TousseDefinition.STR_YES.equals(td.getIsPrintMaterialForPacking())){ +// json.put("tousseDefinition", JSONObject.fromObject(td , cfg));//会报json异常(net.sf.json.JSONException: There is a cycle in the hierarchy) + tdJson = getTousseDefinitionJson(td); + } + // 更新包数量(主要是消毒物品、自定义包、外来包按材料统计) + updateTousseWorkloadStaticsAmount(td); + String tousseName = td.getName(); + if (td.isForeignTousse() || td.isCustomTousse() || td.isDisinfection()) { + tousseName += ("_" + td.getInvoicePlanID()); + } + packingTaskMap.put(tousseName, packingTask); + } + int needPackingAmount = currentPackAmount; + //遍历装配任务map(如果为普通器械包,则可能map的元素数量为1.如为消毒物品等则可能元素为多个) + Set tdNamesSet = packingTaskMap.keySet(); - for (PackingTask currentPackingTask : packingTasks) { - + // 对进行装配的器械包定义排序,解决装配记录中的器械包出现顺序不固定的问题, Terry Kwan,2016-01-28 + ArrayList tdNamesList = new ArrayList(tdNamesSet); + Collections.sort(tdNamesList); + + for(String tdName : tdNamesList){ tousseInstances.clear(); departmentArray.clear(); virtualSeqNumArray.clear(); //如果待装配数量小于等于0时跳出循环 if(needPackingAmount <= 0){ break; } + PackingTask currentPackingTask = packingTaskMap.get(tdName); TousseDefinition td = currentPackingTask.getTousseDefinition(); - // 更新包数量(主要是消毒物品、自定义包、外来包按材料统计) - updateTousseWorkloadStaticsAmount(td); String tousseType = td.getTousseType(); - String tousseName = td.getName(); - if (td.isForeignTousse() || td.isCustomTousse() || td.isDisinfection()) { - tousseName += ("_" + td.getInvoicePlanID()); - } + String tousseName = tdName; Integer printAmount = td.getPrintAmount(); Map disposableGoodsIdToAmount = null; @@ -3830,7 +3850,7 @@ String department = String.valueOf(departmentArray.get(i)); JSONObject obj = CssdUtils.getTousseObjForPrint( - td.getName(), getTousseDefinitionJson(td), subBarcodeArray, subVirtualSeqNumArray, tousseType, + td.getName(), tdJson, subBarcodeArray, subVirtualSeqNumArray, tousseType, packageType,packageTypeAbbreviation, sterilingType, sterilizerName, sterileFrequency, isPrintUserName, @@ -3890,7 +3910,6 @@ } } } - } }else{ batchLoadToVirtaulBasket = false;//器械包批量装入虚拟篮筐是否成功