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.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.RecursiveTask;
|
import java.util.concurrent.RecursiveTask;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -53,8 +51,16 @@ public class EBomDetailTask extends RecursiveTask<List<BomNewEbomParentVO>> {
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(materialNos)) {
|
if (CollUtil.isNotEmpty(materialNos)) {
|
||||||
|
|
||||||
List<BomNewEbomParentEntity> childBomlist = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos).eq(BomNewEbomParentEntity::getLastVersionIs, 1).list();
|
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 = 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) {
|
for (BomNewEbomParentVO detailVO : bomDetail) {
|
||||||
if (stringBomNewOriginalParentEntityMap.containsKey(detailVO.getMaterialNo())) {
|
if (stringBomNewOriginalParentEntityMap.containsKey(detailVO.getMaterialNo())) {
|
||||||
BomNewEbomParentEntity ebomParentEntity = stringBomNewOriginalParentEntityMap.get(detailVO.getMaterialNo());
|
BomNewEbomParentEntity ebomParentEntity = stringBomNewOriginalParentEntityMap.get(detailVO.getMaterialNo());
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
|
||||||
List<BomNewEbomParentVO> subVos = new ArrayList<>();
|
List<BomNewEbomParentVO> subVos = new ArrayList<>();
|
||||||
if (data.getMaterialName().contains("仙桃")) { //只获取下降虚拟包
|
if (data.getMaterialName().contains("仙桃")) { //只获取下降虚拟包
|
||||||
subVos.add(data);
|
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 {
|
} 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 = 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);
|
subVos=getResultAllSubIncludeSelf(data);
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
|
||||||
//1010 数据
|
//1010 数据
|
||||||
|
|
||||||
List<BomNewEbomParentVO> data1010=new ArrayList<>();
|
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)){
|
if(CollUtil.isNotEmpty(deliveryPackage1010)){
|
||||||
facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010);
|
facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||||
data1010.add(parent);
|
data1010.add(parent);
|
||||||
|
|
@ -67,7 +67,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
|
||||||
if(data.getMaterialName().contains("仙桃")){
|
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 = 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.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 {
|
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 = 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) {
|
for (String facCode : facCodes) {
|
||||||
List<BomNewEbomParentVO> parentList = ListCommonUtil.toDistinct(facBomDataMp.get(facCode).stream().filter(u -> u.getBomRowId() > 0)
|
List<BomNewEbomParentVO> parentList = ListCommonUtil.toDistinct(facBomDataMp.get(facCode).stream().filter(u -> u.getBomRowId() > 0)
|
||||||
.sorted(Comparator.comparing(BomNewEbomParentVO::getLevelNumber))
|
|
||||||
.collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId);
|
.collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId);
|
||||||
for (BomNewEbomParentVO vo : parentList) {
|
for (BomNewEbomParentVO vo : parentList) {
|
||||||
String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId());
|
String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId());
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,7 @@ public abstract class EBomToPbomBase {
|
||||||
pBomParent.setTechnologyUserName(SessionUtil.getRealName());
|
pBomParent.setTechnologyUserName(SessionUtil.getRealName());
|
||||||
pBomParent.setDeptRowId(SessionUtil.getDepartRowId());
|
pBomParent.setDeptRowId(SessionUtil.getDepartRowId());
|
||||||
pBomParent.setCreatedTime(LocalDateTime.now());
|
pBomParent.setCreatedTime(LocalDateTime.now());
|
||||||
|
pBomParent.setCreatedBy(SessionUtil.getUserCode());
|
||||||
//版本=EBom版本
|
//版本=EBom版本
|
||||||
pBomParent.setCurrentVersion(bomVersion);
|
pBomParent.setCurrentVersion(bomVersion);
|
||||||
pBomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue());
|
pBomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue());
|
||||||
|
|
@ -230,31 +231,62 @@ public abstract class EBomToPbomBase {
|
||||||
* @param
|
* @param
|
||||||
*/
|
*/
|
||||||
protected void liftingLayer() {
|
protected void liftingLayer() {
|
||||||
for (BomNewEbomParentVO vo : allBomDetail) {
|
List<BomNewEbomParentVO> parentsEntList = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
||||||
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
|
for (BomNewEbomParentVO vo : parentsEntList) {
|
||||||
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
List<BomNewEbomParentVO> parentEntChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).collect(Collectors.toList());
|
||||||
if (Objects.nonNull(lastVirtualPackage)) {
|
for (BomNewEbomParentVO child : parentEntChild) {
|
||||||
liftingLayerSummary(lastVirtualPackage, vo);
|
if (StrUtil.isNotBlank(child.getProjectType()) && child.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
|
||||||
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
|
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(child, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||||
vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
|
if (Objects.nonNull(lastVirtualPackage)) {
|
||||||
vo.setParentRowId(lastVirtualPackage.getBomRowId());
|
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||||
result.add(vo);
|
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 (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
|
if (Objects.nonNull(lastVirtualPackage)) {
|
||||||
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||||
if (Objects.nonNull(lastVirtualPackage)) {
|
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
|
||||||
liftingLayerSummary(lastVirtualPackage, vo);
|
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
|
||||||
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
|
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
|
||||||
vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId()));
|
result.add(newEnt);
|
||||||
vo.setParentRowId(lastVirtualPackage.getBomRowId());
|
}
|
||||||
result.add(vo);
|
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 lastVirtualPackage 虚拟包
|
||||||
* @param vo 提层项
|
* @param vo 提层项
|
||||||
*/
|
*/
|
||||||
private void liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) {
|
private BomNewEbomParentVO liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) {
|
||||||
BigDecimal sum = vo.getNum();
|
BigDecimal sum = vo.getNum();
|
||||||
// String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
|
// String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
|
||||||
List<BomNewEbomParentVO> parentList = getAllParent(vo);
|
List<BomNewEbomParentVO> parentList = getAllParent(vo);
|
||||||
|
BomNewEbomParentVO newEnt=new BomNewEbomParentVO();
|
||||||
|
BeanUtil.copyProperties(vo,newEnt);
|
||||||
|
|
||||||
|
//构建虚拟包组成
|
||||||
|
buildVirtualPackageComposition(lastVirtualPackage, vo);
|
||||||
if (CollUtil.isNotEmpty(parentList)) {
|
if (CollUtil.isNotEmpty(parentList)) {
|
||||||
|
|
||||||
for (BomNewEbomParentVO ent : 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) {
|
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)) {
|
while (CollUtil.isNotEmpty(subMaterials)) {
|
||||||
subResult.addAll(subMaterials);
|
subResult.addAll(subMaterials);
|
||||||
|
|
||||||
List<Long> subMarterialBomRowIds = subMaterials.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList());
|
List<Long> subMarterialBomRowIds = subMaterials.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(subMarterialBomRowIds)) {
|
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 {
|
} else {
|
||||||
subMaterials=Collections.emptyList();
|
subMaterials=Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue