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.facCodes = inFacCodes;
this.convertMode=convertModelEnum; this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, ""); generateDrawingNo(allBomDetail, parentRowId, "");
initEBomVersionFormal();
} }

View File

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

View File

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