From 362f6c7ce0ca1e2fd2233c6ee417e422bd1ad06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 6 May 2024 13:44:02 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E7=94=9F=E6=88=90=E8=99=9A=E6=8B=9F?= =?UTF-8?q?=E5=8C=85=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2=E4=B8=BB=E6=95=B0?= =?UTF-8?q?=E6=8D=AE-=E7=BC=A9=E7=9F=AD=E7=94=9F=E6=88=90=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E5=8C=85=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/EBom/VirtualPackageBase.java | 140 +++++++++++------- 1 file changed, 90 insertions(+), 50 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index 2b9d05dc..d92ce572 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -17,10 +17,12 @@ import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.service.MaterialService; import com.nflg.product.bomnew.util.VersionUtil; import lombok.Getter; +import org.ttzero.excel.reader.Col; import java.io.IOException; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -30,10 +32,10 @@ public abstract class VirtualPackageBase { @Getter - protected List parentResult=new ArrayList<>(); + protected List parentResult = new ArrayList<>(); @Getter - protected List childResult=new ArrayList<>(); + protected List childResult = new ArrayList<>(); protected Long bomRowId; @@ -46,41 +48,57 @@ public abstract class VirtualPackageBase { protected List virtualPackageValue; //虚拟包编码 - protected Map vMNos=new HashMap<>(); - + protected Map vMNos = new HashMap<>(); /** * 申请虚拟包 + * * @param child * @param virtualPackageTypeEnums * @return */ protected void generateVMNoFor31(String parentDrawingNo, List child, VirtualPackageTypeEnum... virtualPackageTypeEnums) { - List params=new ArrayList<>(); + List params = new ArrayList<>(); + Set vDrawingNoSet = new HashSet<>(); for (BomNewEbomChildEntity ch : child) { for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { - String vDrawingNo = String.join("","(",parentDrawingNo,")","(",ch.getMaterialName(),")","(",vpy.getConMaterialName(),")" ); - params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy)); + String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); + vDrawingNoSet.add(vDrawingNo); } } - List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(addM)) { - Map vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); - vMNos.putAll(vMNosResult); + if (CollUtil.isNotEmpty(vDrawingNoSet)) { + + List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().in(MaterialMainEntity::getDrawingNo, vDrawingNoSet).list(); + Map oldMaterialMap = oldMaterialList.stream().collect(Collectors.toMap(MaterialMainEntity::getDrawingNo, Function.identity(), (k1, k2) -> k1)); + + for (BomNewEbomChildEntity ch : child) { + for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { + String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); + params.add(buildAddMaterialParamDo(StrUtil.join("", ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy, oldMaterialMap)); + } + } + List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(addM)) { + Map vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); + vMNos.putAll(vMNosResult); + } } } /** * 申请虚拟包 + * * @param child * @param virtualPackageTypeEnums * @return */ - protected void generateVMNoF21(String parentDrawingNo, List child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){ - List params=new ArrayList<>(); - for ( BomNewEbomParentVO ch: child ) { + protected void generateVMNoF21(String parentDrawingNo, List child, VirtualPackageTypeEnum... virtualPackageTypeEnums) { + List params = new ArrayList<>(); + + Set vDrawingNoSet = new HashSet<>(); + for (BomNewEbomParentVO ch : child) { for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { String vDrawingNo; if (vpy == VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE) { @@ -88,65 +106,84 @@ public abstract class VirtualPackageBase { } else { vDrawingNo = String.join("", "(", parentDrawingNo, ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); } - params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy)); + vDrawingNoSet.add(vDrawingNo); } } - List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); - vMNos= SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); + if (CollUtil.isNotEmpty(vDrawingNoSet)) { + + List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().in(MaterialMainEntity::getDrawingNo, vDrawingNoSet).list(); + Map oldMaterialMap = oldMaterialList.stream().collect(Collectors.toMap(MaterialMainEntity::getDrawingNo, Function.identity(), (k1, k2) -> k1)); + + + for (BomNewEbomParentVO ch : child) { + for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { + String vDrawingNo; + if (vpy == VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE) { + vDrawingNo = String.join("", parentDrawingNo, ".FHQ", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); + } else { + vDrawingNo = String.join("", "(", parentDrawingNo, ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); + } + params.add(buildAddMaterialParamDo(StrUtil.join("", ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy, oldMaterialMap)); + } + } + List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + vMNos = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); + } } - //申请物料编码 - private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType){ - List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo) - .list(); - AddVirtrualMaterialDTO ent=new AddVirtrualMaterialDTO(); - if(CollUtil.isNotEmpty(oldMaterialList)){ + //申请物料编码 + private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType, Map oldMaterialMap) { + +// List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo) +// .list(); + MaterialMainEntity oldMaterial = oldMaterialMap.get(drawingNo); + AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO(); + if (Objects.nonNull(oldMaterial)) { ent.setKey(key); ent.setDrawingNo(drawingNo); - ent.setMaterialNo(oldMaterialList.get(0).getMaterialNo()); - ent.setMaterialName(oldMaterialList.get(0).getMaterialName()); - ent.setMaterialDesc(oldMaterialList.get(0).getMaterialDesc()); - ent.setMaterialCategoryCode(oldMaterialList.get(0).getMaterialCategoryCode()); - vMNos.put(ent.getKey(),ent); - } - else { + ent.setMaterialNo(oldMaterial.getMaterialNo()); + ent.setMaterialName(oldMaterial.getMaterialName()); + ent.setMaterialDesc(oldMaterial.getMaterialDesc()); + ent.setMaterialCategoryCode(oldMaterial.getMaterialCategoryCode()); + vMNos.put(ent.getKey(), ent); + } else { ent.setKey(key); ent.setDrawingNo(drawingNo); ent.setMaterialName(materialName); ent.setMaterialDesc(materialName); ent.setMaterialCategoryCode(virtualPackageType.getMaterialCategoryCode()); } - return ent; + return ent; } protected BomNewEbomParentEntity buildParentVirtualPackage(Long rowId, VirtualPackageTypeEnum virtualPackageTypeEnum, String orderNum, BomNewEbomParentEntity p) { - AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("",rowId,virtualPackageTypeEnum.getConMaterialName())); - BomNewEbomParentEntity oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery() + AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("", rowId, virtualPackageTypeEnum.getConMaterialName())); + BomNewEbomParentEntity oldParent = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery() .eq(BomNewEbomParentEntity::getMaterialNo, addM.getMaterialNo()) - .eq(BomNewEbomParentEntity::getLastVersionIs,1) + .eq(BomNewEbomParentEntity::getLastVersionIs, 1) //.ne(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) .one(); - if(Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus()) ){ + if (Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus())) { return oldParent; } - if(Objects.nonNull(oldParent)){ + if (Objects.nonNull(oldParent)) { oldParent.setLastVersionIs(0); this.parentResult.add(oldParent); } // String materialNo = SpringUtil.getBean(MaterialService.class).addMaterial(drawingNo, vMaterialName,materialDesc, virtualPackageType.getMaterialCategoryCode()); - BomNewEbomParentEntity parent =new BomNewEbomParentEntity(); + BomNewEbomParentEntity parent = new BomNewEbomParentEntity(); parent.setRowId(IdWorker.getId()); - parent.setOrderNumber(StrUtil.isNotBlank(orderNum) ? StrUtil.padPre(orderNum,3,"0"):"001"); - parent.setDrawingNo(addM.getDrawingNo() ); + parent.setOrderNumber(StrUtil.isNotBlank(orderNum) ? StrUtil.padPre(orderNum, 3, "0") : "001"); + parent.setDrawingNo(addM.getDrawingNo()); parent.setMaterialNo(addM.getMaterialNo()); parent.setMaterialName(addM.getMaterialName()); parent.setMaterialDesc(addM.getMaterialDesc()); - parent.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent)?oldParent.getCurrentVersion():"")); + parent.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent) ? oldParent.getCurrentVersion() : "")); parent.setVirtualPackageIs(1); // parent.setProjectType("L"); // parent.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue()); @@ -170,11 +207,12 @@ public abstract class VirtualPackageBase { /** * 构建子级 + * * @return */ - protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo,VirtualPackageTypeEnum virtualPackageTypeEnum,String rootMaterialNo){ - BomNewEbomChildEntity childEntity =new BomNewEbomChildEntity(); - BeanUtil.copyProperties(parent,childEntity); + protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo, VirtualPackageTypeEnum virtualPackageTypeEnum, String rootMaterialNo) { + BomNewEbomChildEntity childEntity = new BomNewEbomChildEntity(); + BeanUtil.copyProperties(parent, childEntity); childEntity.setRowId(IdWorker.getId()); childEntity.setParentRowId(parentRowId); childEntity.setIdentityNo(parent.getRowId().toString()); @@ -188,21 +226,22 @@ public abstract class VirtualPackageBase { childEntity.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue()); childEntity.setVirtualPartRootMaterialNo(rootMaterialNo); this.childResult.add(childEntity); - return childEntity; + return childEntity; } /** * 获取子级 + * * @return */ - protected List getChild(){ + protected List getChild() { return SpringUtil.getBean(BomNewEbomParentService.class).getChildForVirtualPackage(bomRowId); } - protected BomNewEbomParentEntity getParentZhiZuo(String inDrawingNo){ + protected BomNewEbomParentEntity getParentZhiZuo(String inDrawingNo) { - return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getDrawingNo,StrUtil.join("","(", inDrawingNo,VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName(),")")) - .eq(BomNewEbomParentEntity::getLastVersionIs,1).one(); + return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getDrawingNo, StrUtil.join("", "(", inDrawingNo, VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName(), ")")) + .eq(BomNewEbomParentEntity::getLastVersionIs, 1).one(); // List list = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, inBomRowId).list(); // List zhiZuo = list.stream().filter(u -> u.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())).collect(Collectors.toList()); @@ -216,10 +255,11 @@ public abstract class VirtualPackageBase { /** * 获取父节点 + * * @return */ - protected BomNewEbomParentEntity getParentByRowId(Long rowId){ - return SpringUtil.getBean(BomNewEbomParentService.class).getById(rowId); + protected BomNewEbomParentEntity getParentByRowId(Long rowId) { + return SpringUtil.getBean(BomNewEbomParentService.class).getById(rowId); } /**