Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r36717 -r36721 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36717) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36721) @@ -5062,6 +5062,7 @@ //如果未配置按回收材料数量计算积分,但是又开启了积分功能,则每个拆分小包的积分=外来器械包定义里积分系数/拆包总数 FSSDERMYY-9 spiltIntegral = true; } + List tousseInstanceList = new ArrayList(); if (StringUtils.isNotBlank(packingTaskIds)) { Map tousseNameAmountMap = new HashMap(); //logger.debug("装配任务packingTaskIds=" + packingTaskIds); @@ -5257,6 +5258,13 @@ ArrayList tdNamesList = new ArrayList(tdNamesSet); Collections.sort(tdNamesList); Map> packingTaskIdToTousseInstanceIdMap = new HashMap>(); + Map toolAndImplantAmountMap = new HashMap(); + Map materialsJsonArrayMap = new HashMap(); + String orgUnitCoding = loginUser.getOrgUnitCodingFromSupplyRoomConfig(); + String orgUnitName = loginUser.getOrgUnitNameCodingFromSupplyRoomConfig(); + boolean splitPackingForeignTousse = JSONUtil.optBoolean(paramsObj, "splitPackingForeignTousse", true); + Map fixedBarcodeMap = null; + Map packageTypeAbbreviationMap = null; for (PackingTask currentPackingTask : packingTasks) { IDCardInstance idCardInstance = null; String idCardDefinitionId = null; @@ -5289,7 +5297,13 @@ String tousseType = tdOfPackingTask.getTousseType(); String tousseName = TousseDefinitionUtils.getTousseNameForPackingTask(currentPackingTask .getTousseDefinition());; - JSONObject toolAndImplantAmount = tousseDefinitionManager.getToolAndImplantAmount(tdOfPackingTask); + JSONObject toolAndImplantAmount = null; + if(toolAndImplantAmountMap.containsKey(tdOfPackingTask.getId())){ + toolAndImplantAmount = toolAndImplantAmountMap.get(tdOfPackingTask.getId()); + }else{ + toolAndImplantAmount = tousseDefinitionManager.getToolAndImplantAmount(tdOfPackingTask); + toolAndImplantAmountMap.put(tdOfPackingTask.getId(), toolAndImplantAmount); + } String oldRemark = null; PackingTaskPara packingTaskPara = null; if(packingTaskParaMap.containsKey(currentPackingTask.getId())){ @@ -5345,8 +5359,11 @@ // 消毒物品 else if (tdOfPackingTask.isDisinfection()) { isDisinfectionGoods = true; - - materialsJsonArray = tousseDefinitionManager.getMaterialsOfDisinfectionGoods(tdOfPackingTask); + materialsJsonArray = materialsJsonArrayMap.get(tdOfPackingTask.getId()); + if (materialsJsonArray == null) { + materialsJsonArray = tousseDefinitionManager.getMaterialsOfDisinfectionGoods(tdOfPackingTask); + materialsJsonArrayMap.put(tdOfPackingTask.getId(), materialsJsonArray); + } } JSONArray splits = null; @@ -5356,15 +5373,7 @@ Date packingDate = new Date(); - String orgUnitCoding = ""; - String orgUnitName = ""; - - if (loginUser != null) { - orgUnitCoding = loginUser - .getOrgUnitCodingFromSupplyRoomConfig(); - orgUnitName = loginUser - .getOrgUnitNameCodingFromSupplyRoomConfig(); - } + double toussePrice = 0;//单价 double fluctuationPrice = 0; @@ -5379,7 +5388,7 @@ } if(tdOfPackingTask.isForeignTousse()){ - boolean splitPackingForeignTousse = JSONUtil.optBoolean(paramsObj, "splitPackingForeignTousse", true); + if(splitPackingForeignTousse){ if(StringUtils.isBlank(splitPackages)){ // 外来器械包装配时没有做拆分装配的处理。主要处理在回收时,拆分放入多个清洗篮筐的情况 @@ -5457,14 +5466,13 @@ currentPackingTaskAsList.add(currentPackingTask); } else { - SupplyRoomConfig config = supplyRoomConfigManager - .getSystemParamsObj(); + toussePrice = tdOfPackingTask.getPrice() != null ? tdOfPackingTask.getPrice() : 0; if (TousseDefinition.PACKAGE_TYPE_FOREIGN .equals(tousseType) && toussePrice == 0) { - toussePrice = config.getForeignToussePrice(); + toussePrice = supplyRoomConfigParams.getForeignToussePrice(); } // 浮动价格 @@ -5548,16 +5556,34 @@ if(batchLoadToVirtaulBasket){ String fixedBarcode = ""; - if (!isTraceable) { - fixedBarcode = tousseInstanceManager - .getOrCreateTousseDefinitionFixedBarcode(tdOfPackingTask.getAncestorID()); + if(!TousseDefinition.STR_YES.equals(tdOfPackingTask.getIsTraceable())){ + if(fixedBarcodeMap == null){ + fixedBarcodeMap = new HashMap(); + } + if(fixedBarcodeMap.containsKey(tdOfPackingTask.getAncestorID())){ + fixedBarcode = fixedBarcodeMap.get(tdOfPackingTask.getAncestorID()); + }else{ + fixedBarcode = tousseInstanceManager + .getOrCreateTousseDefinitionFixedBarcode(tdOfPackingTask.getAncestorID()); + fixedBarcodeMap.put(tdOfPackingTask.getAncestorID(), fixedBarcode); + } + } //是否打印装配人 boolean isPrintUserName = supplyRoomConfigParams.isPrintUserFullName(); // 装配的是外来器械拆分包 if (splits != null) { - packageTypeAbbreviation = TousseInstanceUtils.getPackageTypeAbbreviation(objectDao, packageType); + if(packageTypeAbbreviationMap == null){ + packageTypeAbbreviationMap = new HashMap(); + } + if(packageTypeAbbreviationMap.containsKey(packageType)){ + packageTypeAbbreviation = packageTypeAbbreviationMap.get(packageType); + }else{ + packageTypeAbbreviation = TousseInstanceUtils.getPackageTypeAbbreviation(objectDao, packageType); + packageTypeAbbreviationMap.put(packageType, packageTypeAbbreviation); + } + for (int j = 0 ; j < splits.size() ; j++){ JSONObject tousse = (JSONObject)splits.get(j); TousseInstance tousseInstance = splitsTousseList.get(j); @@ -5604,7 +5630,7 @@ setPrintCause(currentPackingTask,obj); obj.put("tousseDefinitionId", tdOfPackingTask.getId()); toussesArray.add(obj); - + tousseInstanceList.add(tousseInstance); } } @@ -5639,7 +5665,15 @@ if(noUserFormSterilizationInfo){ sterilingType = tdOfPackingTask.getSterilingMethod(); packageType = tdOfPackingTask.getPackageType(); - packageTypeAbbreviation = TousseInstanceUtils.getPackageTypeAbbreviation(objectDao, packageType); + if(packageTypeAbbreviationMap == null){ + packageTypeAbbreviationMap = new HashMap(); + } + if(packageTypeAbbreviationMap.containsKey(packageType)){ + packageTypeAbbreviation = packageTypeAbbreviationMap.get(packageType); + }else{ + packageTypeAbbreviation = TousseInstanceUtils.getPackageTypeAbbreviation(objectDao, packageType); + packageTypeAbbreviationMap.put(packageType, packageTypeAbbreviation); + } } for(int i = 0;i < tousseInstances.size();i++){ TousseInstance tousse = tousseInstances.get(i); @@ -5674,6 +5708,7 @@ setPrintCause(currentPackingTask,obj); obj.put("tousseDefinitionId", tdOfPackingTask.getId()); toussesArray.add(obj); + tousseInstanceList.add(tousse); } } @@ -5751,7 +5786,7 @@ }else if (toussesArray.size() > 0) { //添加库位编码、库位简称、装配日期、检查人 - toussesArray = setStorageLocationForTousse(toussesArray); + toussesArray = setStorageLocationForTousse(toussesArray,tousseInstanceList); json.put("success", true); json.put("message", msg); json.put("tousses", toussesArray); @@ -5953,21 +5988,10 @@ * @param toussesArray * @return */ - private JSONArray setStorageLocationForTousse (JSONArray toussesArray) { + private JSONArray setStorageLocationForTousse (JSONArray toussesArray, List tousseInstanceList) { if (toussesArray == null || toussesArray.size() == 0) { return toussesArray; } - // 从toussesArray中获取包实例ID - List tousseInstanceIds = new ArrayList(); - for (int i = 0; i < toussesArray.size();i++) { - JSONObject tousseObj = toussesArray.getJSONObject(i); - if (tousseObj == null) { - continue; - } - tousseInstanceIds.add(tousseObj.getLong("id")); - } - // 包实例列表 - List tousseInstanceList = objectDao.findByIds(TousseInstance.class.getSimpleName(), tousseInstanceIds); if (CollectionUtils.isEmpty(tousseInstanceList)) { return toussesArray; } @@ -8629,7 +8653,7 @@ retObj.put("tousseInstances", tousses); //添加库位编码、库位简称、装配日期、检查人 - tousses = setStorageLocationForTousse(tousses); + tousses = setStorageLocationForTousse(tousses,tousseInstanceList); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_CUSTOMISE_PACKING, Log.TYPE_ADD, "自定义装配记录ids:" + packingRecordIdList +",装配数量:" + packAmount