1、转PBOM问题修复222

This commit is contained in:
大米 2024-06-26 11:47:31 +08:00
parent f7bbd9ac7f
commit 12bedbf9a2
4 changed files with 86 additions and 36 deletions

View File

@ -13,9 +13,7 @@ import com.nflg.product.bomnew.util.ListCommonUtil;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.RecursiveTask;
import java.util.stream.Collectors;
@ -53,8 +51,16 @@ public class EBomDetailTask extends RecursiveTask<List<BomNewEbomParentVO>> {
if (CollUtil.isNotEmpty(materialNos)) {
List<BomNewEbomParentEntity> childBomlist = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos).eq(BomNewEbomParentEntity::getLastVersionIs, 1).list();
Map<String, BomNewEbomParentEntity> stringBomNewOriginalParentEntityMap = ListCommonUtil.listToMap(childBomlist, BomNewEbomParentEntity::getMaterialNo);
List<BomNewEbomParentEntity> childBomlist = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos).list();
// Map<String, BomNewEbomParentEntity> stringBomNewOriginalParentEntityMap = ListCommonUtil.listToMap(childBomlist, BomNewEbomParentEntity::getMaterialNo);
Map<String, BomNewEbomParentEntity> stringBomNewOriginalParentEntityMap =childBomlist.stream()
.collect(Collectors.groupingBy(
BomNewEbomParentEntity::getMaterialNo,
Collectors.collectingAndThen(
Collectors.maxBy(Comparator.comparing(BomNewEbomParentEntity::getCurrentVersion)),
Optional::get
)
));
for (BomNewEbomParentVO detailVO : bomDetail) {
if (stringBomNewOriginalParentEntityMap.containsKey(detailVO.getMaterialNo())) {
BomNewEbomParentEntity ebomParentEntity = stringBomNewOriginalParentEntityMap.get(detailVO.getMaterialNo());

View File

@ -70,7 +70,7 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
List<BomNewEbomParentVO> subVos = new ArrayList<>();
if (data.getMaterialName().contains("仙桃")) { //只获取下降虚拟包
subVos.add(data);
subVos = result.stream().filter(u -> u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList());
subVos.addAll(result.stream().filter(u -> u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList()));
} else {
// subVos = 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());
subVos=getResultAllSubIncludeSelf(data);

View File

@ -58,7 +58,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
//1010 数据
List<BomNewEbomParentVO> data1010=new ArrayList<>();
List<BomNewEbomParentVO> deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && !u.getMaterialName().contains("仙桃")).collect(Collectors.toList());
List<BomNewEbomParentVO> deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(deliveryPackage1010)){
facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010);
data1010.add(parent);
@ -67,7 +67,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
if(data.getMaterialName().contains("仙桃")){
// 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);
subVos=result.stream().filter(u->u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList());
subVos.addAll(result.stream().filter(u->u.getParentRowId().equals(data.getBomRowId())).collect(Collectors.toList()));
}
else {
// subVos = 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());
@ -97,7 +97,6 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
for (String facCode : facCodes) {
List<BomNewEbomParentVO> parentList = ListCommonUtil.toDistinct(facBomDataMp.get(facCode).stream().filter(u -> u.getBomRowId() > 0)
.sorted(Comparator.comparing(BomNewEbomParentVO::getLevelNumber))
.collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId);
for (BomNewEbomParentVO vo : parentList) {
String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId());

View File

@ -204,6 +204,7 @@ public abstract class EBomToPbomBase {
pBomParent.setTechnologyUserName(SessionUtil.getRealName());
pBomParent.setDeptRowId(SessionUtil.getDepartRowId());
pBomParent.setCreatedTime(LocalDateTime.now());
pBomParent.setCreatedBy(SessionUtil.getUserCode());
//版本=EBom版本
pBomParent.setCurrentVersion(bomVersion);
pBomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue());
@ -230,31 +231,62 @@ public abstract class EBomToPbomBase {
* @param
*/
protected void liftingLayer() {
for (BomNewEbomParentVO vo : allBomDetail) {
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
liftingLayerSummary(lastVirtualPackage, vo);
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
List<BomNewEbomParentVO> parentsEntList = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
for (BomNewEbomParentVO vo : parentsEntList) {
List<BomNewEbomParentVO> parentEntChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).collect(Collectors.toList());
for (BomNewEbomParentVO child : parentEntChild) {
if (StrUtil.isNotBlank(child.getProjectType()) && child.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(child, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(newEnt);
}
continue;
}
continue;
}
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
liftingLayerSummary(lastVirtualPackage, vo);
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(newEnt);
}
continue;
}
continue;
result.add(child);
}
result.add(vo);
}
// for (BomNewEbomParentVO vo : allBomDetail) {
// if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
// BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
// if (Objects.nonNull(lastVirtualPackage)) {
// liftingLayerSummary(lastVirtualPackage, vo);
// vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
// vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
// vo.setParentRowId(lastVirtualPackage.getBomRowId());
// result.add(vo);
// }
// continue;
// }
// if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
// BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
// if (Objects.nonNull(lastVirtualPackage)) {
// liftingLayerSummary(lastVirtualPackage, vo);
// vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
// vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
// vo.setParentRowId(lastVirtualPackage.getBomRowId());
// result.add(vo);
// }
// continue;
// }
// result.add(vo);
// }
}
/**
@ -263,20 +295,28 @@ public abstract class EBomToPbomBase {
* @param lastVirtualPackage 虚拟包
* @param vo 提层项
*/
private void liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) {
private BomNewEbomParentVO liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) {
BigDecimal sum = vo.getNum();
// String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
List<BomNewEbomParentVO> parentList = getAllParent(vo);
BomNewEbomParentVO newEnt=new BomNewEbomParentVO();
BeanUtil.copyProperties(vo,newEnt);
//构建虚拟包组成
buildVirtualPackageComposition(lastVirtualPackage, vo);
if (CollUtil.isNotEmpty(parentList)) {
for (BomNewEbomParentVO ent : parentList) {
sum = NumberUtil.mul(sum, parentList.get(0).getNum());
sum = NumberUtil.mul(sum, ent.getNum());
//构建虚拟包组成
buildVirtualPackageComposition(lastVirtualPackage, vo);
buildVirtualPackageComposition(lastVirtualPackage, ent);
}
}
vo.setNum(sum);
newEnt.setBomRowId(0L);
newEnt.setChildBomRowId(0L);
newEnt.setNum(sum);
return newEnt;
}
@ -717,12 +757,17 @@ public abstract class EBomToPbomBase {
*/
private void getAllSubData(List<Long> parentRowIds, List<BomNewEbomParentVO> subResult) {
List<BomNewEbomParentVO> subMaterials = result.stream().filter(u -> parentRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
List<BomNewEbomParentVO> subMaterials = result.stream().filter(u -> parentRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
//直发包发货前装配包不递归
while (CollUtil.isNotEmpty(subMaterials)) {
subResult.addAll(subMaterials);
List<Long> subMarterialBomRowIds = subMaterials.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList());
if (CollUtil.isNotEmpty(subMarterialBomRowIds)) {
subMaterials=result.stream().filter(u -> subMarterialBomRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
subMaterials=result.stream().filter(u -> subMarterialBomRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
} else {
subMaterials=Collections.emptyList();
}