diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java index c6b63192..57cbf2b6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java @@ -9,17 +9,19 @@ import lombok.Getter; public enum VirtualPackageTypeEnum implements ValueEnum{ //1-发货包 2-制作包 4-直发包 8-发货前装配包 - UN_VIRTUAL_PACKAGE(0,"非虚拟包","" ,"", ""), - DELIVERY_PACKAGE(1,"发货包","发货" ,"201101", ""), - MAKING_PACKAGE(2,"制作包","制作","201101",""), - DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101","F"), - PRE_ASSEMBLY_PACKAGE(8,"发货前装配包","发货前装配","200601","Z"); + UN_VIRTUAL_PACKAGE(0, "非虚拟包", "", "", "", ""), + DELIVERY_PACKAGE(1, "发货包", "发货", "201101", "", "(发货)"), + MAKING_PACKAGE(2, "制作包", "制作", "201101", "", "(制作)"), + DIRECT_DELIVERY_PACKAGE(4, "直发包", "直发", "201101", "F", "(直发)"), + PRE_ASSEMBLY_PACKAGE(8, "发货前装配包", "发货前装配", "200601", "Z", "(发货前装配)"), + PAINT_PACKAGE(16, "油漆包", "油漆包", "201101", "", ""); private final Integer value; private final String description; private final String conMaterialName; private final String materialCategoryCode; private final String productTypeKey; + private final String findConMaterialName; public static Integer getAll(){ 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 f16004d7..f2eaeeec 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 @@ -13,6 +13,7 @@ import com.nflg.product.bomnew.pojo.dto.AddVirtrualMaterialDTO; import com.nflg.product.bomnew.pojo.dto.MaterialUpdateBillDTO; import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; +import com.nflg.product.bomnew.pojo.query.GenerateVirtualPackageItem; import com.nflg.product.bomnew.pojo.query.GenerateVirtualPackageQuery; import com.nflg.product.bomnew.pojo.vo.ChildListForGenerateVirtualPackageVO; import com.nflg.product.bomnew.pojo.vo.MaterialMainVO; @@ -69,21 +70,29 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew List olds = ebomParentService.getChildListForGenerateVirtualPackage(root); List> futures = new ArrayList<>(); query.getChildren().forEach(it -> { - CompletableFuture future = CompletableFuture.runAsync(() -> { - ChildListForGenerateVirtualPackageVO old = olds.stream().filter(f -> Objects.equals(f.getRowId(), it.getRowId())).findFirst().orElse(null); - VUtils.isTure(Objects.isNull(old)).throwMessage(it.getRowId() + "无效"); - BomNewEbomChildEntity child = ebomChildService.getById(it.getRowId()); - if (it.isGenerate1010() && it.isGenerate1020()) { - selectedAll(root, child, old); - } else if (!it.isGenerate1010() && !it.isGenerate1020()) { - cancelAll(root, child, old); - } else if (it.isGenerate1010()) { - selected1010Cancel1020(root, child, old); - } else { - selected1020Cancel1010(root, child, old); - } - }); - futures.add(future); + if (it.getRowId() > 0) { + CompletableFuture future = CompletableFuture.runAsync(() -> { + ChildListForGenerateVirtualPackageVO old = olds.stream().filter(f -> Objects.equals(f.getRowId(), it.getRowId())).findFirst().orElse(null); + VUtils.isTure(Objects.isNull(old)).throwMessage(it.getRowId() + "无效"); + BomNewEbomChildEntity child = ebomChildService.getById(it.getRowId()); + if (it.isGenerate1010() && it.isGenerate1020()) { + selectedAll(root, child, old); + } else if (!it.isGenerate1010() && !it.isGenerate1020()) { + cancelAll(root, child, old); + } else if (it.isGenerate1010()) { + selected1010Cancel1020(root, child, old); + } else { + selected1020Cancel1010(root, child, old); + } + }); + futures.add(future); + } else { + //油漆包 + CompletableFuture future = CompletableFuture.runAsync(() -> { + buildPaintVirtualPackage(it, root, query); + }); + futures.add(future); + } }); CompletableFuture combinedFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); combinedFuture.join(); @@ -119,6 +128,39 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew return errorMsgList; } + private void buildPaintVirtualPackage(GenerateVirtualPackageItem it, BomNewEbomParentEntity root, GenerateVirtualPackageQuery query) { + if (it.isGenerate1010()) { + BomNewEbomChildEntity xc1 = buildVirtualPackage(false, root.getRowId(), root + , root.getMaterialName(), VirtualPackageTypeEnum.PAINT_PACKAGE + , StrUtil.padPre(String.valueOf(query.getChildren().size()), 3, '0')); + buildVirtualPackage(root, xc1); + } + if (it.isGenerate1020()) { + BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root + , root.getMaterialName(), VirtualPackageTypeEnum.PAINT_PACKAGE + , StrUtil.padPre(String.valueOf(query.getChildren().size() + 1), 3, '0')); + buildVirtualPackage(root, xc1); + } + if (!it.isGenerate1010() || !it.isGenerate1020()) { + List cs = ebomChildService.lambdaQuery() + .eq(BomNewEbomChildEntity::getParentRowId, root.getRowId()) + .eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.PAINT_PACKAGE.getValue()) + .list(); + if (!it.isGenerate1010()) { + BomNewEbomChildEntity c = cs.stream().filter(f -> !f.getDrawingNo().contains("仙桃")).findFirst().orElse(null); + if (Objects.nonNull(c)) { + childRowIdsForDel.add(c.getRowId()); + } + } + if (!it.isGenerate1020()) { + BomNewEbomChildEntity c = cs.stream().filter(f -> f.getDrawingNo().contains("仙桃")).findFirst().orElse(null); + if (Objects.nonNull(c)) { + childRowIdsForDel.add(c.getRowId()); + } + } + } + } + @Transactional(rollbackFor = Exception.class) public void save() { if (CollUtil.isNotEmpty(childRowIdsForDel)) { @@ -176,7 +218,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) .one(); if (Objects.nonNull(fp)) { - buildVirtualPackage(true, root.getRowId(), root, child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); + buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); String dnMaking = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE, true); BomNewEbomParentEntity zp = ebomParentService.lambdaQuery() .eq(BomNewEbomParentEntity::getDrawingNo, dnMaking) @@ -288,7 +330,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) .one(); if (Objects.nonNull(fp)) { - buildVirtualPackage(true, root.getRowId(), root, child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); + buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); String dnMaking = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE, false); BomNewEbomParentEntity zp = ebomParentService.lambdaQuery() .eq(BomNewEbomParentEntity::getDrawingNo, dnMaking) @@ -329,25 +371,25 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew private void build1010VirtualPackage(BomNewEbomParentEntity root, BomNewEbomChildEntity child) { //发货包 - BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); + BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); BomNewEbomParentEntity qp1 = buildVirtualPackage(root, qc1); //制作包 - BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child, VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); + BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); BomNewEbomParentEntity qp2 = buildVirtualPackage(qp1, qc2); child.setParentRowId(qp2.getRowId()); child.setModifyTime(LocalDateTime.now()); childrenForUpdate.add(child); //直发包 - BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); + BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); buildVirtualPackage(qp1, qc3); } private void build1020VirtualPackage(BomNewEbomParentEntity root, boolean mount, BomNewEbomChildEntity child) { //发货包 - BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root, child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); + BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); BomNewEbomParentEntity xp1 = buildVirtualPackage(root, xc1); //制作包 - BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child, VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); + BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001"); BomNewEbomParentEntity xp2 = buildVirtualPackage(xp1, xc2); if (mount) { child.setParentRowId(xp2.getRowId()); @@ -355,7 +397,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew childrenForUpdate.add(child); } //直发包 - BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); + BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002"); buildVirtualPackage(xp1, xc3); } @@ -452,8 +494,8 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew } private BomNewEbomChildEntity buildVirtualPackage(boolean is1020Factory, Long parentRowId, BomNewEbomParentEntity root - , BomNewEbomChildEntity material, VirtualPackageTypeEnum type, String orderNo) { - String drawingNo = buildDrawingNo(root.getDrawingNo(), material.getMaterialName(), type, is1020Factory); + , String materialName, VirtualPackageTypeEnum type, String orderNo) { + String drawingNo = buildDrawingNo(root.getDrawingNo(), materialName, type, is1020Factory); BomNewEbomChildEntity child = ebomChildService.lambdaQuery() .eq(BomNewEbomChildEntity::getParentRowId, parentRowId) .eq(BomNewEbomChildEntity::getDrawingNo, drawingNo) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 380c3269..25790f88 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -952,7 +952,7 @@ public class BomNewEbomParentService extends ServiceImpl importToSAP(Long rootBomRowId) { BomNewEbomParentEntity root = this.getById(rootBomRowId); VUtils.isTure(Objects.isNull(root)).throwMessage("数据不存在"); - VUtils.isTure(root.getRootIs() != 1).throwMessage("请选择根节点"); + //VUtils.isTure(root.getRootIs() != 1).throwMessage("请选择根节点"); VUtils.isTure(Objects.equals(root.getSapState(), SapStatusEnum.PUB_RUNNING.getValue())) .throwMessage("正在导入中,请等待操作完成"); @@ -2502,6 +2502,30 @@ public class BomNewEbomParentService extends ServiceImpl paintPackages = ebomChildService.lambdaQuery() + .eq(BomNewEbomChildEntity::getParentRowId, parent.getRowId()) + .eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.PAINT_PACKAGE.getValue()) + .list(); + ChildListForGenerateVirtualPackageVO vo = new ChildListForGenerateVirtualPackageVO(); + vo.setRowId(0L); + vo.setOrderNumber(StrUtil.padPre(String.valueOf(children.size() + 1), 3, '0')); + vo.setMaterialDesc(VirtualPackageTypeEnum.PAINT_PACKAGE.getConMaterialName()); + if (CollUtil.isEmpty(paintPackages)) { + vo.setHasGenerated1010(false); + vo.setHasGenerated1020(false); + } else if (paintPackages.size() >= 2) { + vo.setHasGenerated1010(true); + vo.setHasGenerated1020(true); + } else if (paintPackages.stream().anyMatch(p -> p.getDrawingNo().contains("仙桃"))) { + vo.setHasGenerated1010(false); + vo.setHasGenerated1020(true); + } else { + vo.setHasGenerated1010(true); + vo.setHasGenerated1020(false); + } + cvos.add(vo); + return cvos; } return Collections.emptyList();