转pbom处理

This commit is contained in:
大米 2024-09-02 18:59:15 +08:00
parent a0337e5a41
commit 57aa6603ce
3 changed files with 77 additions and 0 deletions

View File

@ -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";
}

View File

@ -84,6 +84,7 @@ public abstract class EBomToPbomBase {
//当子级为F项或Z项时-无需转的父级物料
protected Set<String> 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<BomNewEbomParentVO> newBomChildren){
List<BomNewPbomParentVO> oldChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(), 1);
//PBOM手动添加的迁移过来
List<BomNewPbomParentVO> pBomCreateChildren = oldChildren.stream().filter(u -> PbomSourceStatusEnum.PBOM.equalsValue(u.getSourceStatus())).collect(Collectors.toList());
//Pbom新增的工艺包
List<BomNewPbomParentVO> 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<BomNewPbomParentVO> oldChildren , List<BomNewEbomParentVO> newBomChildren ,String facCode ,List<BomNewEbomParentVO> parentList){
List<BomNewEbomParentVO> resultAdd=new ArrayList<>();
//pbom 新增物料
List<BomNewPbomParentVO> oldPBomCreateChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList());
Map<String, BomNewEbomParentVO> 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<BomNewPbomParentVO> oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomCreateArtPackageItem.getBomRowId(), 1);
if()
resultAdd.add(artChild);
//
}
}
}
/**
* T项外-是否一致
* @param oldChildren
* @param newChildren
* @return
*/
private boolean pBomSameIs(List<BomNewPbomParentVO> oldChildren ,List<BomNewPbomParentVO> newChildren){
//旧bom除T项之外
List<BomNewPbomParentVO> oldBomNoTChildren = oldChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList());
//新BOM 除T项外
List<BomNewPbomParentVO> newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList());
if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){
return false;
}
Set<String> oldSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet());
Set<String> newSet = newChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet());
if(oldSet.equals(newSet)){
return true;
}
return false;
}
/**
* Pbom明细对比
* @param pVo

View File

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