1-eBOM草稿-转Pbom

This commit is contained in:
luoliming 2024-08-28 23:47:18 +08:00
parent 6e79ebe3ff
commit 72941481fa
4 changed files with 46 additions and 47 deletions

View File

@ -60,7 +60,7 @@ public class EBomToPBom extends EBomToPbomBase {
//buildPBomParent(parent, facCode);
for (BomNewEbomParentVO vo : parentList) {
String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId());
if (hasConvert.contains(hasConvertKey) || (PBomStatusEnum.PUBLISH.equalsValue(vo.getStatus()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType()))) {
if (hasConvert.contains(hasConvertKey)) {
continue;
}
hasConvert.add(hasConvertKey);
@ -77,9 +77,9 @@ public class EBomToPBom extends EBomToPbomBase {
List<BomNewEbomParentVO> child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList());
List<BomNewEbomParentVO> mergeChild = mergeChild(child);
//判断pbom 是否一致
if( compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){
continue;
}
// if( compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){
// continue;
// }
BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode,parentList);
if(Objects.isNull(parentEnt)){
continue;

View File

@ -65,8 +65,9 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
for (BomNewEbomParentVO data : deliveryPackage1010) {
List<BomNewEbomParentVO> subVos = new ArrayList<>();
if (data.getMaterialName().contains("仙桃") ) { //只获取下降虚拟包(排除仙桃油漆包)
if(!data.getMaterialName().contains(VirtualPackageTypeEnum.PAINT_PACKAGE.getDescription())) {
subVos.add(data);
if(!VirtualPackageTypeEnum.PAINT_PACKAGE.getValue().equals(data.getVirtualPartType())) {
subVos.addAll(result.stream().filter(u -> u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList()));
}
} else {
@ -102,7 +103,7 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
.collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId);
for (BomNewEbomParentVO vo : parentList) {
String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId());
if (hasConvert.contains(hasConvertKey) || (PBomStatusEnum.PUBLISH.equalsValue(vo.getStatus()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType()) )) {
if (hasConvert.contains(hasConvertKey) ) {
continue;
}
hasConvert.add(hasConvertKey);
@ -117,9 +118,9 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
//子级
List<BomNewEbomParentVO> child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList());
List<BomNewEbomParentVO> mergeChild = mergeChild(child);
if(compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){
continue;
}
// if(compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){
// continue;
// }
BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode, parentList);
if (Objects.isNull(parentEnt)) {
continue;

View File

@ -203,12 +203,9 @@ public abstract class EBomToPbomBase {
} else { //pbom-处于正式表
//Ebom为已发布时则直接跳过 直发包发货前装配包是则需对比Bom明细一致则跳过否则升级
if (!EBomStatusEnum.PUBLISHED.equalsValue(parentVo.getStatus()) || (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(parentVo.getVirtualPartType()))) {
String version = StrUtil.isBlank(parentVo.getCurrentVersion()) ? VersionUtil.getNextVersion("") : parentVo.getCurrentVersion();
String bomVersion = VersionUtil.compare(version, oldParent.getCurrentVersion()) > 0 ? version : VersionUtil.getNextVersion(oldParent.getCurrentVersion());
return buildParentEntity(parentVo, facCode, oldParent, bomVersion);
}
return null;
return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion()));
}
@ -740,37 +737,37 @@ public abstract class EBomToPbomBase {
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())
.eq(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue())
.last(" order by current_version desc limit 1").one();
if (Objects.nonNull(oldEBom)) {
List<BomNewEbomChildEntity> oldParentChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list();
//一样则无需转换
if (isSameEBomV2(oldParentChild, newParentChild)) {
parentBom.setNoConvertToPBomIs(1);
parentBom.setHasChangeState(1);
//只变化项目类别-则使用小版本
} else if (isSameEBomV2FormMaterialNoAndNum(oldParentChild, newParentChild)) {
parentBom.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(oldEBom.getCurrentVersion()));
parentBom.setHasChangeState(2);
delOldEBom.add(oldEBom.getRowId());
addEBomNew.add(parentBom.getBomRowId());
} else {
parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
parentBom.setHasChangeState(2);
delOldEBom.add(oldEBom.getRowId());
addEBomNew.add(parentBom.getBomRowId());
}
}
else {
addEBomNew.add(parentBom.getBomRowId());
}
}
// if (!EBomStatusEnum.PUBLISHED.equalsValue(parentBom.getStatus())) {
// //获取正式版
// BomNewEbomParentEntity oldEBom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentBom.getMaterialNo())
// .eq(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue())
// .last(" order by current_version desc limit 1").one();
// if (Objects.nonNull(oldEBom)) {
// List<BomNewEbomChildEntity> oldParentChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list();
//
//
// //一样则无需转换
// if (isSameEBomV2(oldParentChild, newParentChild)) {
// parentBom.setNoConvertToPBomIs(1);
// parentBom.setHasChangeState(1);
// //只变化项目类别-则使用小版本
// } else if (isSameEBomV2FormMaterialNoAndNum(oldParentChild, newParentChild)) {
// parentBom.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(oldEBom.getCurrentVersion()));
// parentBom.setHasChangeState(2);
// delOldEBom.add(oldEBom.getRowId());
// addEBomNew.add(parentBom.getBomRowId());
// } else {
// parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
// parentBom.setHasChangeState(2);
// delOldEBom.add(oldEBom.getRowId());
// addEBomNew.add(parentBom.getBomRowId());
// }
//
// }
// else {
// addEBomNew.add(parentBom.getBomRowId());
// }
// }
//如子级都为F 项父级也不转
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(projectSet)) {

View File

@ -68,9 +68,10 @@ public class EBomToPBomForFormal31New extends FormalEBomToPbomBase {
for (BomNewEbomParentVO data: deliveryPackage1010){
List<BomNewEbomParentVO> subVos = new ArrayList<>();// result.stream().filter(u -> u.getLevelNumber().compareTo(data.getLevelNumber()) >= 0 && u.getLevelNumber().compareTo(NumberUtil.add(data.getLevelNumber(), BigDecimal.valueOf(0.01))) < 0).collect(Collectors.toList());
if(data.getMaterialName().contains("仙桃")){
if(!data.getMaterialName().contains(VirtualPackageTypeEnum.PAINT_PACKAGE.getDescription())) {
// subVos = result.stream().filter(u -> u.getMaterialName().contains("仙桃") && u.getLevelNumber().compareTo(data.getLevelNumber()) >= 0 && u.getLevelNumber().compareTo(NumberUtil.add(data.getLevelNumber(), BigDecimal.valueOf(0.01))) < 0).collect(Collectors.toList());
subVos.add(data);
if(!VirtualPackageTypeEnum.PAINT_PACKAGE.getValue().equals(data.getVirtualPartType())) {
subVos.addAll(result.stream().filter(u -> u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList()));
}
}