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); }