From 3f1deed064048029a6a8c995a17b567188ba7e7f Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Wed, 13 Nov 2024 16:07:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/collect/RelCodeBatchService.java | 62 +++++++++++++------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java index c2c1cc09..7a520182 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java @@ -501,51 +501,73 @@ public class RelCodeBatchService extends ServiceImpl> sortedCodeMap = codeMap.entrySet() + .stream() + .sorted(Comparator.comparing( + e -> Optional.ofNullable(e.getValue().isEmpty() ? null : e.getValue().get(0)) + .map(RelCodeDetail::getPackLayer) + .orElse(Integer.MIN_VALUE), // Default to Integer.MIN_VALUE if the list is empty (shouldn't happen normally) + Comparator.reverseOrder() + )) + .collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (e1, e2) -> e1, // Merge function in case of duplicate keys (shouldn't happen with a well-formed Map) + LinkedHashMap::new // Preserve insertion order, though not strictly necessary for sorting + )); + Map batchIdFkMap = new HashMap<>(); List addRelCodeDetail = new ArrayList<>(); - RelCodeBatch updateDrugLevelRelCodeBatch = null; + List updateDrugLevelRelCodeBatch = new ArrayList<>(); // 遍历 Map - for (Map.Entry> entry : codeMap.entrySet()) { + for (Map.Entry> entry : sortedCodeMap.entrySet()) { String key = entry.getKey(); List list = entry.getValue(); - RelCodeBatch addRelCodeBatch = new RelCodeBatch(); - BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch); - addRelCodeBatch.setParentCode(key); if ("0".equals(key)){ - RelCodeDetail relCodeDetail = list.get(0); - String curCode = relCodeDetail.getCurCode(); - String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); - addRelCodeBatch.setProductCode(diStr); - addRelCodeBatch.setCurCode(curCode); - addRelCodeBatch.setThreeLevelCount(1); - - this.save(addRelCodeBatch); - batchIdFkMap.put(curCode,addRelCodeBatch.getId()); - updateDrugLevelRelCodeBatch = addRelCodeBatch; + for (RelCodeDetail relCodeDetail : list) { + RelCodeBatch addRelCodeBatch = new RelCodeBatch(); + BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch); + addRelCodeBatch.setParentCode(key); + String curCode = relCodeDetail.getCurCode(); + String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); + addRelCodeBatch.setProductCode(diStr); + addRelCodeBatch.setCurCode(curCode); + addRelCodeBatch.setThreeLevelCount(1); + addRelCodeBatch.setId(null); + + this.save(addRelCodeBatch); + batchIdFkMap.put(curCode,addRelCodeBatch.getId()); + updateDrugLevelRelCodeBatch.add(addRelCodeBatch); + } + }else { for (RelCodeDetail detail : list) { Integer packLayer = detail.getPackLayer(); if (packLayer == 2){ RelCodeBatch addRelCodeBatch2 = new RelCodeBatch(); BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch2); - addRelCodeBatch2.setParentCode(key); String curCode = detail.getCurCode(); + String parentCode = detail.getParentCode(); + addRelCodeBatch2.setParentCode(parentCode); String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); addRelCodeBatch2.setProductCode(diStr); addRelCodeBatch2.setCurCode(curCode); addRelCodeBatch2.setThreeLevelCount(0); addRelCodeBatch2.setTwoLevelCount(1); + addRelCodeBatch2.setId(null); this.save(addRelCodeBatch2); batchIdFkMap.put(curCode,addRelCodeBatch2.getId()); //同时也是上面的明细 - detail.setBatchIdFk(batchIdFkMap.get(key)); + detail.setBatchIdFk(batchIdFkMap.get(parentCode)); addRelCodeDetail.add(detail); }else if (packLayer == 1){ //直接明细 - detail.setBatchIdFk(batchIdFkMap.get(key)); + String parentCode = detail.getParentCode(); + detail.setBatchIdFk(batchIdFkMap.get(parentCode)); addRelCodeDetail.add(detail); } } @@ -554,7 +576,9 @@ public class RelCodeBatchService extends ServiceImpl { + this.updateDrugLevelCount(item); + }); } } }