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 af9ca74d..bbff0fad 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 @@ -16,4 +16,7 @@ public class BomConstant { public static final Integer YES=1; public static final Integer NO=0; + + //工艺包物料类别编码 + public static final String ART_PACKAGE_MATERIAL_CATEGORY_CODE="201201"; } 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 7f3d48f9..b7fbc901 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 @@ -84,6 +84,7 @@ public abstract class EBomToPbomBase { //当子级为F项或Z项时-无需转的父级物料 protected Set childDelMaterialNos = new HashSet<>(); + private BomNewPbomParentEntity ; public abstract void convert(); @@ -213,6 +214,77 @@ public abstract class EBomToPbomBase { } + /** + * 处理PBOM-正式包含工艺包时: + * 1、将工艺包迁移过来。 + * 2、建BOM中新增物料-迁移过来 + * 3、将修改过的物料编码,项目类别,数量 复制过来。 + * + */ + private void handlerPBom(BomNewPbomParentEntity oldParent , List newBomChildren){ + + List oldChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(), 1); + //PBOM手动添加的迁移过来 + List pBomCreateChildren = oldChildren.stream().filter(u -> PbomSourceStatusEnum.PBOM.equalsValue(u.getSourceStatus())).collect(Collectors.toList()); + //Pbom新增的工艺包 + List pBomCreateArtPackage = pBomCreateChildren.stream().filter(u -> BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(u.getMaterialCategoryCode())).collect(Collectors.toList()); + for (BomNewPbomParentVO pBomCreateArtPackageItem : pBomCreateArtPackage) { + if() + } + + } + + /** + * 处理PBOM新增物料 + */ + private void handlerArtPackage(List oldChildren , List newBomChildren ,String facCode ,List parentList){ + List resultAdd=new ArrayList<>(); + //pbom 新增物料 + List oldPBomCreateChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); + //Pbom新增的工艺包 + for (BomNewPbomParentVO oldPBomCreateArtPackageItem : oldPBomCreateChildren) { + //新的不包含虚拟包:1、将该虚拟包加在该物料下, + // 2、将虚拟包中的物料从该BOM中移除 + if(!newBomChildrenMap.containsKey(oldPBomCreateArtPackageItem.getMaterialNo())){ + BomNewEbomParentVO artChild=new BomNewEbomParentVO(); + BeanUtil.copyProperties(oldPBomCreateArtPackageItem,artChild); + + BomNewPbomParentEntity artParent = buildPBomParent(artChild, facCode, parentList); + //old 工艺包子级 + List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomCreateArtPackageItem.getBomRowId(), 1); + if() + + resultAdd.add(artChild); + + // + } + } + } + + /** + * T项外-是否一致 + * @param oldChildren + * @param newChildren + * @return + */ + private boolean pBomSameIs(List oldChildren ,List newChildren){ + //旧bom除T项之外 + List oldBomNoTChildren = oldChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); + //新BOM 除T项外 + List newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); + if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){ + return false; + } + + Set oldSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); + Set newSet = newChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); + if(oldSet.equals(newSet)){ + return true; + } + return false; + } + /** * Pbom明细对比 * @param pVo diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java index e63255af..ff306733 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.google.common.collect.ImmutableList; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.PBomStatusEnum; +import com.nflg.product.bomnew.constant.PbomSourceStatusEnum; import com.nflg.product.bomnew.pojo.dto.TechnologyPackageParam; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; @@ -232,6 +233,7 @@ public class TechnologyPackageParamBuilder { child.setCreatedTime(LocalDateTime.now()); child.setModifyTime(LocalDateTime.now()); child.setSourceRowId(0L); + child.setSourceStatus(PbomSourceStatusEnum.PBOM.getValue()); this.packageChildren.add(child); return child; }