From 6f14256fb5a4f826670e945490b07685c468b8af Mon Sep 17 00:00:00 2001 From: 10002327 Date: Tue, 3 Sep 2024 09:17:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E5=8C=85=E6=8C=89=E5=8F=91?= =?UTF-8?q?=E8=B4=A7-=E7=9B=B4=E5=8F=91-=E5=88=B6=E4=BD=9C=E7=9A=84?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...enerateVirtualPackageServiceFor31Impl.java | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java index 393c1031..0a68788d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java @@ -39,6 +39,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -193,7 +194,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew TransactionDefinition def = new DefaultTransactionDefinition(); TransactionStatus status = transactionManager.getTransaction(def); if(CollUtil.isNotEmpty(childrenForAdd)){ - //按 "(发货)","(制作)","(直发)","(发货前装配)" 放在同一个组内排序 by 10002327 0830 + //按 "(发货)","(直发)","(制作)","(发货前装配)" 放在同一个组内排序 by 10002327 0830 Map> chMap = childrenForAdd.stream().collect(Collectors.groupingBy(c -> { return c.getDrawingNo().replaceAll("\\(发货\\)|\\(制作\\)|\\(直发\\)|\\(发货前装配\\)",""); })); @@ -201,8 +202,26 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew List>> mpList = new ArrayList<>(chMap.entrySet()); mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("") .compareTo(Optional.of(c2).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("")))); + //对map值的集合按照 按发货-直发-制作的顺序排序 + Function sortFn = (ent) -> { + String num = "1"; + String desc = Optional.ofNullable(ent).map(BomNewEbomChildEntity::getMaterialDesc).orElse(""); + if(desc.contains("(发货)")){ + num = "1"; + } + if(desc.contains("(直发)")){ + num = "2"; + } + if(desc.contains("(制作)")){ + num = "3"; + } + if(desc.contains("(发货前装配)")){ + num = "4"; + } + return num; + }; childrenForAdd.removeAll(childrenForAdd); - mpList.forEach(m -> childrenForAdd.addAll(m.getValue())); + mpList.forEach(m -> childrenForAdd.addAll(m.getValue().stream().sorted(Comparator.comparing(sortFn::apply)).collect(Collectors.toList()))); } try { @@ -419,27 +438,38 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew } } + /** + * 按发货-直发-制作的顺序 by 10002327 240903 + * @param root + * @param child + */ private void build1010VirtualPackage(BomNewEbomParentEntity root, BomNewEbomChildEntity child) { //发货包 BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); BomNewEbomParentEntity qp1 = buildVirtualPackage(root, qc1); //制作包 - BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); + BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002"); BomNewEbomParentEntity qp2 = buildVirtualPackage(qp1, qc2); child.setParentRowId(qp2.getRowId()); child.setModifyTime(LocalDateTime.now()); childrenForUpdate.add(child); //直发包 - BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); + BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001"); buildVirtualPackage(qp1, qc3); } + /** + * 按发货-直发-制作的顺序 by 10002327 240903 + * @param root + * @param mount + * @param child + */ private void build1020VirtualPackage(BomNewEbomParentEntity root, boolean mount, BomNewEbomChildEntity child) { //发货包 BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); BomNewEbomParentEntity xp1 = buildVirtualPackage(root, xc1); //制作包 - BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); + BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002"); BomNewEbomParentEntity xp2 = buildVirtualPackage(xp1, xc2); if (mount) { child.setParentRowId(xp2.getRowId()); @@ -447,7 +477,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew childrenForUpdate.add(child); } //直发包 - BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); + BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001"); buildVirtualPackage(xp1, xc3); }