1、 转PBOM 问题

This commit is contained in:
大米 2024-06-24 08:47:18 +08:00
parent b5dca83082
commit 96adcae0a0
3 changed files with 78 additions and 57 deletions

View File

@ -33,6 +33,7 @@ public class EBomToPBomForFormal extends EBomToPbomBase {
this.facCodes = inFacCodes;
this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, "");
initEBomVersionFormal();
}

View File

@ -35,7 +35,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
this.facCodes = inFacCodes;
this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, "");
initEBomVersionFormal();
}

View File

@ -60,7 +60,6 @@ public abstract class EBomToPbomBase {
protected List<BomNewEbomVirtualPackageCompositionEntity> virtualPackageCompositionResult = new ArrayList<>();
@Getter
protected List<BomNewEbomUpgradeChangeEntity> upgradeChangeResult = new ArrayList<>();
@ -284,6 +283,7 @@ public abstract class EBomToPbomBase {
/**
* 构建虚拟包组成
*
* @param lastVirtualPackage
* @param vo
*/
@ -361,8 +361,7 @@ public abstract class EBomToPbomBase {
//虚拟包原F项
Set<String> fSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
Set<String> newFSet = childList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
if(!fSet.equals(newFSet))
{
if (!fSet.equals(newFSet)) {
buildChangeImpactEntity(vMaterialList.get(0), vo);
result = true;
continue;
@ -371,8 +370,7 @@ public abstract class EBomToPbomBase {
//虚拟包原F项
Set<String> zSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
Set<String> newZSet = childList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
if(!zSet.equals(newZSet))
{
if (!zSet.equals(newZSet)) {
buildChangeImpactEntity(vMaterialList.get(0), vo);
result = true;
continue;
@ -558,6 +556,7 @@ public abstract class EBomToPbomBase {
public void initEBomVersion() {
List<BomNewEbomParentVO> parentBoms = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
for (BomNewEbomParentVO parentBom : parentBoms) {
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
if (!EBomStatusEnum.PUBLISHED.equalsValue(parentBom.getStatus())) {
//获取正式版
BomNewEbomParentEntity oldEBom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentBom.getMaterialNo())
@ -566,7 +565,7 @@ public abstract class EBomToPbomBase {
if (Objects.nonNull(oldEBom)) {
List<BomNewEbomChildEntity> oldParentChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list();
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
//一样则无需转换
if (isSameEBomV2(oldParentChild, newParentChild)) {
parentBom.setNoConvertToPBomIs(1);
@ -579,7 +578,30 @@ public abstract class EBomToPbomBase {
parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
parentBom.setHasChangeState(2);
}
}
}
//如子级都为F 项父级也不转
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(projectSet)) {
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);
}
}
}
}
/**
* 正式eBOM转换前生产 pBOM
* 子项都为F 项则父项不转
*/
public void initEBomVersionFormal() {
List<BomNewEbomParentVO> parentBoms = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
for (BomNewEbomParentVO parentBom : parentBoms) {
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
//如子级都为F 项父级也不转
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(projectSet)) {
@ -589,9 +611,7 @@ public abstract class EBomToPbomBase {
}
}
}
}
}
}