Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r36574 -r36575 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36574) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36575) @@ -3433,7 +3433,18 @@ Set oldReviewBasketIds = new HashSet();//包实例中VirtualBasketSeqNum为空的篮筐id 数据中是有这种虚拟筐的 Map toolAndImplantAmountMap = new HashMap(); Map disinfectItemArrayMap = new HashMap(); + List isNotTraceables = new ArrayList();//不追溯的祖先包定义id for (TousseInstance tousseInstance : tousses) { + TousseDefinition td = tousseInstance.getTousseDefinition(); + if (TousseDefinition.STR_NO.equals(td.getIsTraceable()) && !isNotTraceables.contains(td.getAncestorID())) { + isNotTraceables.add(td.getAncestorID()); + } + } + Map tdIdToFixBarcodeMap = null; + if(isNotTraceables.size() > 0){ + tdIdToFixBarcodeMap = tousseDefinitionManager.getTousseDefinitionFixedBarcodeMap(isNotTraceables); + } + for (TousseInstance tousseInstance : tousses) { if(DatabaseUtil.isPoIdValid(tousseInstance.getPackingRecord_id())){ idsForUpdateReviewer.add(tousseInstance.getPackingRecord_id()); } @@ -3569,12 +3580,9 @@ if (TousseDefinition.STR_NO.equals(td.getIsPrint())) { isPrint = false; + } + if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ isTraceable = false; - }else{ - if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ - isTraceable = false; - } - } if (TousseDefinition.STR_NO.equals(td.getIsReview())){ @@ -3586,12 +3594,16 @@ if (!isTraceable) { Long ancestorId = td.getAncestorID(); if(DatabaseUtil.isPoIdValid(ancestorId)){ - fixedBarcode = tousseInstanceManager.getOrCreateTousseDefinitionFixedBarcode(ancestorId); - if(StringUtils.isBlank(fixedBarcode)){ + if(tdIdToFixBarcodeMap != null && tdIdToFixBarcodeMap.containsKey(ancestorId)){ + fixedBarcode = tdIdToFixBarcodeMap.get(ancestorId); + }else{////理论上不会进这个分支 + fixedBarcode = tousseInstanceManager.getOrCreateTousseDefinitionFixedBarcode(ancestorId); + } + if(StringUtils.isBlank(fixedBarcode)){//理论上不会进这个分支 String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); } - }else{ + }else{//理论上不会进入这个分支 String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); }