From b23e22d9a865107c59a5f1990a9ac5e5ef44c680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Wed, 14 Aug 2024 16:13:41 +0800 Subject: [PATCH] =?UTF-8?q?F=E6=8F=90=E5=B1=82=E5=90=8E=E9=80=A0=E6=88=90?= =?UTF-8?q?=E7=9A=84=E7=A9=BA=E5=8C=85=E8=A6=81=E9=80=92=E5=BD=92=E5=BE=80?= =?UTF-8?q?=E4=B8=8A=E6=A3=80=E6=9F=A5=E5=88=A0=E9=99=A4-=E5=85=88?= =?UTF-8?q?=E4=B8=8D=E5=8F=91=E7=94=9F=E4=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/constant/BomConstant.java | 4 ++ .../bomnew/pojo/vo/BomNewEbomParentVO.java | 4 ++ .../service/domain/EBom/EBomToPbomBase.java | 38 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java index 04639454..af9ca74d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java @@ -12,4 +12,8 @@ public class BomConstant { public static final String PROJECT_TYPE_TEMPORARY = "T"; public static final String PROJECT_TYPE_TEMPORARY_MATERIAL_NO = "9000000000"; + + + public static final Integer YES=1; + public static final Integer NO=0; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java index 48176edb..197ae3f6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java @@ -357,6 +357,10 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty("父级物料RowId") private List parentRowIds=new ArrayList<>(); + + @ApiModelProperty("因子级都为F or Z 项而不转") + private Integer notToPBomForFZ=0; + private static final long serialVersionUID = 1L; @Override diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 1515e2ad..edc84e7e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -745,14 +746,47 @@ public abstract class EBomToPbomBase { if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && (ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) { parentBom.setNoConvertToPBomIs(1); + parentBom.setNotToPBomForFZ(BomConstant.YES); childDelMaterialNos.add(parentBom.getMaterialNo()); } } } } + //递归 F,Z项所有父级 + handlerFZEmptyBom(); } + /** + * 处理子级都是F项的空BOM + */ + private void handlerFZEmptyBom() { + List parentBoms = getParentForAllSubNodeIsNotToPBomForFZ(); + while (CollUtil.isNotEmpty(parentBoms)){ + parentBoms.forEach(u->{ + u.setNoConvertToPBomIs(1); + u.setNotToPBomForFZ(BomConstant.YES); + childDelMaterialNos.add(u.getMaterialNo()); + }); + parentBoms = getParentForAllSubNodeIsNotToPBomForFZ(); + } + } + + + private List getParentForAllSubNodeIsNotToPBomForFZ(){ + Map> parentMp = allBomDetail.stream().filter(u->u.getParentRowId()>0).collect(Collectors.groupingBy(BomNewEbomParentVO::getParentRowId)); + List result=new ArrayList<>(); + parentMp.forEach((k,v)->{ + List parent = allBomDetail.stream().filter(u -> u.getBomRowId().equals(k)).collect(Collectors.toList()); + if(Objects.nonNull(parent) && CollUtil.isNotEmpty(parent) && BomConstant.NO.equals(parent.get(0).getNotToPBomForFZ()) ) { + Optional min = v.stream().min(Comparator.comparingInt(BomNewEbomParentVO::getNotToPBomForFZ)); + if (min.isPresent() && BomConstant.YES.equals(min.get().getNotToPBomForFZ())) { + result.add(parent.get(0)); + } + } + }); + return result; + } /** @@ -770,6 +804,7 @@ public abstract class EBomToPbomBase { if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && (ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) { parentBom.setNoConvertToPBomIs(1); + parentBom.setNotToPBomForFZ(BomConstant.YES); childDelMaterialNos.add(parentBom.getMaterialNo()); } } @@ -777,6 +812,9 @@ public abstract class EBomToPbomBase { } + //递归 F,Z项所有父级 + handlerFZEmptyBom(); + } /**