1、转PBOM问题修复222
This commit is contained in:
parent
f7bbd9ac7f
commit
12bedbf9a2
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue