1、转PBOM问题修复

This commit is contained in:
大米 2024-06-25 20:47:14 +08:00
parent 50ef317ab4
commit bf8a28cd55
6 changed files with 174 additions and 56 deletions

View File

@ -881,16 +881,6 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
VUtils.isTure(CollUtil.isNotEmpty(errors)).throwMessage(StrUtil.join("<br/>", errors));
}
});
//检查该版本是否已转换过该工厂的Pbom
// for (BomNewEbomParentEntity parent : parents){
// List<BomNewPbomParentEntity> list = pBomParentService.lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()).eq(BomNewPbomParentEntity::getCurrentVersion, parent.getCurrentVersion())
// .select(BomNewPbomParentEntity::getFacCode).list();
// if(CollUtil.isNotEmpty(list)){
// Set<String> dbExistsFac = list.stream().map(u -> u.getFacCode()).collect(Collectors.toSet());
// Set<String> checkResultFac = Sets.intersection(dbExistsFac, new HashSet<>(paramDto.getFacCodes()));
// VUtils.isTure(CollUtil.isNotEmpty(checkResultFac)).throwMessage("物料:"+parent.getMaterialNo()+"已经转换过"+ StrUtil.join(",", checkResultFac)+"工厂");
// }
// }
for (Long bomRowId : paramDto.getBomRowIds()) {
BomNewEbomParentVO parent = Convert.convert(BomNewEbomParentVO.class, this.getById(bomRowId));
@ -1158,6 +1148,8 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
newParent.setChangeDesc(paramDTO.getChangeDesc());
newParent.setNoticeNums(paramDTO.getNoticeNums());
newParent.setStatus(EBomStatusEnum.WAIT_CHECK.getValue());
newParent.setDeptRowId(SessionUtil.getDepartRowId());
newParent.setDeptName(SessionUtil.getDepartName());
newParent.setRootIs(1);
newParent.setUserRootIs(1);
parent.setLastVersionIs(0);

View File

@ -33,7 +33,7 @@ public class EBomToPBom extends EBomToPbomBase {
this.allBomDetail = inAllBomDetail;
this.facCodes = inFacCodes;
this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, "");
// generateDrawingNo(allBomDetail, parentRowId, "");
initEBomVersion();
}

View File

@ -6,6 +6,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.enums.BooleanEnum;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.google.common.collect.ImmutableList;
import com.nflg.product.bomnew.constant.ConvertToPBomModelEnum;
import com.nflg.product.bomnew.constant.EBomConstant;
import com.nflg.product.bomnew.constant.PBomStatusEnum;
@ -18,6 +19,7 @@ import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import com.nflg.product.bomnew.util.ListCommonUtil;
/**
@ -27,52 +29,61 @@ import com.nflg.product.bomnew.util.ListCommonUtil;
public class EBomToPBomFor31 extends EBomToPbomBase {
private Map<String,List<BomNewEbomParentVO>> facBomDataMp=new HashMap<>();
private Map<String, List<BomNewEbomParentVO>> facBomDataMp = new HashMap<>();
public EBomToPBomFor31(BomNewEbomParentVO inParent, List<BomNewEbomParentVO> inAllBomDetail, List<String> inFacCodes, Long parentRowId, ConvertToPBomModelEnum convertModelEnum) {
this.parent = inParent;
this.allBomDetail = inAllBomDetail;
this.facCodes = inFacCodes;
this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, "");
this.convertMode = convertModelEnum;
// generateDrawingNo(allBomDetail, parentRowId, "");
//初始化Ebom版本
initEBomVersion();
}
private void splitData(){
this.facCodes=new ArrayList<>();
private void splitData() {
this.facCodes = new ArrayList<>();
//1020数据
List<BomNewEbomParentVO> data1020=new ArrayList<>();
List<BomNewEbomParentVO> deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃") ).collect(Collectors.toList());
if(CollUtil.isNotEmpty(deliveryPackage1020)){
List<BomNewEbomParentVO> data1020 = new ArrayList<>();
List<BomNewEbomParentVO> deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃")).collect(Collectors.toList());
if (CollUtil.isNotEmpty(deliveryPackage1020)) {
facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
data1020.add(parent);
for (BomNewEbomParentVO data: deliveryPackage1020){
List<BomNewEbomParentVO> 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());
for (BomNewEbomParentVO data : deliveryPackage1020) {
// List<BomNewEbomParentVO> 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());
List<BomNewEbomParentVO> subVos = getResultAllSubIncludeSelf(data);
data1020.addAll(subVos);
}
facBomDataMp.put(EBomConstant.XIAN_TAO_FACTORY_CODE_1020,data1020);
facBomDataMp.put(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, data1020);
}
//1010 数据
List<BomNewEbomParentVO> data1010=new ArrayList<>();
List<BomNewEbomParentVO> deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && !u.getMaterialName().contains("仙桃")).collect(Collectors.toList());
if(CollUtil.isNotEmpty(deliveryPackage1010)){
List<BomNewEbomParentVO> data1010 = new ArrayList<>();
List<BomNewEbomParentVO> deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); //&& !u.getMaterialName().contains("仙桃")
if (CollUtil.isNotEmpty(deliveryPackage1010)) {
facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010);
data1010.add(parent);
for (BomNewEbomParentVO data: deliveryPackage1010){
List<BomNewEbomParentVO> 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());
for (BomNewEbomParentVO data : deliveryPackage1010) {
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());
} 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);
}
data1010.addAll(subVos);
}
facBomDataMp.put(EBomConstant.MAIN_FACTORY_CODE_1010,data1010);
facBomDataMp.put(EBomConstant.MAIN_FACTORY_CODE_1010, data1010);
}
}
/**
* 31項体层
*/
@ -85,8 +96,6 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
changeImpact();
//bom 提层
liftingLayer();
result.forEach(u->u.setLevelNo(""));
generateDrawingNo(result, parent.getRowId(), "1");
splitData();
List<String> hasConvert = new ArrayList<>();
@ -101,7 +110,7 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
}
hasConvert.add(hasConvertKey);
//无需转换bom
if(BooleanEnum.TRUE.equals(vo.getNoConvertToPBomIs()) ){
if (BooleanEnum.TRUE.equals(vo.getNoConvertToPBomIs())) {
continue;
}
//构建变更明细
@ -109,13 +118,13 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
// buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
//子级
List<BomNewEbomParentVO> child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).collect(Collectors.toList());
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)){
if (compareContentIsSame(vo, mergeChild, facCode)) {
continue;
}
BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode,parentList);
if(Objects.isNull(parentEnt)){
BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode, parentList);
if (Objects.isNull(parentEnt)) {
continue;
}
//子级
@ -123,7 +132,7 @@ public class EBomToPBomFor31 extends EBomToPbomBase {
//合并子级
for (BomNewEbomParentVO eb : mergeChild) {
BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity();
BeanUtil.copyProperties(eb, childEnt,"sourceRowId");
BeanUtil.copyProperties(eb, childEnt, "sourceRowId");
childEnt.setRowId(IdWorker.getId());
childEnt.setParentRowId(parentEnt.getRowId());
childEnt.setFacCode(facCode);

View File

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

View File

@ -34,7 +34,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
this.allBomDetail = inAllBomDetail;
this.facCodes = inFacCodes;
this.convertMode=convertModelEnum;
generateDrawingNo(allBomDetail, parentRowId, "");
// generateDrawingNo(allBomDetail, parentRowId, "");
initEBomVersionFormal();
}
@ -48,7 +48,8 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
data1020.add(parent);
for (BomNewEbomParentVO data: deliveryPackage1020){
List<BomNewEbomParentVO> 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());
// List<BomNewEbomParentVO> 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());
List<BomNewEbomParentVO> subVos=getResultAllSubIncludeSelf(data);
data1020.addAll(subVos);
}
facBomDataMp.put(EBomConstant.XIAN_TAO_FACTORY_CODE_1020,data1020);
@ -62,7 +63,16 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010);
data1010.add(parent);
for (BomNewEbomParentVO data: deliveryPackage1010){
List<BomNewEbomParentVO> 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());
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("仙桃")){
// 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());
}
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);
}
data1010.addAll(subVos);
}
facBomDataMp.put(EBomConstant.MAIN_FACTORY_CODE_1010,data1010);
@ -80,8 +90,8 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
check();
//bom 提层
liftingLayer();
result.forEach(u->u.setLevelNo(""));
generateDrawingNo(result, parent.getRowId(), "1");
// result.forEach(u->u.setLevelNo(""));
// generateDrawingNo(result, parent.getRowId(), "1");
splitData();
List<String> hasConvert = new ArrayList<>();

View File

@ -69,7 +69,7 @@ public abstract class EBomToPbomBase {
protected Set<String> hasBuildVNo = Sets.newHashSet();
//当子级为F项或Z项时-无需转的父级物料
protected Set<String> childDelMaterialNos=new HashSet<>();
protected Set<String> childDelMaterialNos = new HashSet<>();
public abstract void convert();
@ -217,7 +217,7 @@ public abstract class EBomToPbomBase {
}
public void markNoConvert(BomNewEbomParentVO parentVo, List<BomNewEbomParentVO> parentList) {
List<BomNewEbomParentVO> subVos = parentList.stream().filter(u -> u.getLevelNumber().compareTo(parentVo.getLevelNumber()) >= 0 && u.getLevelNumber().compareTo(NumberUtil.add(parentVo.getLevelNumber(), BigDecimal.valueOf(0.01))) < 0).collect(Collectors.toList());
List<BomNewEbomParentVO> subVos = getAllSubInListIncludeSelf(parentVo, parentList);
for (BomNewEbomParentVO vo : subVos) {
vo.setNoConvertToPBomIs(1);
}
@ -232,7 +232,7 @@ public abstract class EBomToPbomBase {
protected void liftingLayer() {
for (BomNewEbomParentVO vo : allBomDetail) {
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
liftingLayerSummary(lastVirtualPackage, vo);
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
@ -243,7 +243,7 @@ public abstract class EBomToPbomBase {
continue;
}
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
liftingLayerSummary(lastVirtualPackage, vo);
vo.setSourceRowId(String.valueOf(vo.getParentRowId()));
@ -265,23 +265,41 @@ public abstract class EBomToPbomBase {
*/
private void liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) {
BigDecimal sum = vo.getNum();
String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
// String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
List<BomNewEbomParentVO> parentList = getAllParent(vo);
while (parentLevelNo.length() >= lastVirtualPackage.getLevelNo().length()) {
String pNo = parentLevelNo;
List<BomNewEbomParentVO> parentList = allBomDetail.stream().filter(u -> u.getLevelNo().equals(pNo)).collect(Collectors.toList());
if (CollUtil.isNotEmpty(parentList)) {
if (CollUtil.isNotEmpty(parentList)) {
for (BomNewEbomParentVO ent : parentList) {
sum = NumberUtil.mul(sum, parentList.get(0).getNum());
//构建虚拟包组成
buildVirtualPackageComposition(lastVirtualPackage, vo);
}
parentLevelNo = BomLevelUtil.getParentLevelNo(parentLevelNo);
}
vo.setNum(sum);
}
protected List<BomNewEbomParentVO> getAllParent(BomNewEbomParentVO vo) {
List<BomNewEbomParentVO> result = new ArrayList<>();
BomNewEbomParentVO parentEnt = getParent(vo);
Boolean flag = true;
while (Objects.nonNull(parentEnt) && parentEnt.getParentRowId() > 0 && flag) {
//制作
if (VirtualPackageTypeEnum.MAKING_PACKAGE.getVirtualPartType().equals(parentEnt.getVirtualPartType())) {
flag = false;
} else {
result.add(parentEnt);
}
parentEnt = getParent(parentEnt);
}
return result;
}
/**
@ -432,6 +450,7 @@ public abstract class EBomToPbomBase {
}
@Deprecated
private BomNewEbomParentVO getLastVirtualPackage(BomNewEbomParentVO vo, VirtualPackageTypeEnum virtualPackageTypeEnum) {
List<BomNewEbomParentVO> zhiFaList = allBomDetail.stream().filter(u -> vo.getLevelNumber().compareTo(u.getLevelNumber()) > 0 && virtualPackageTypeEnum.getVirtualPartType().equals(u.getVirtualPartType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(zhiFaList)) {
@ -441,6 +460,30 @@ public abstract class EBomToPbomBase {
}
private BomNewEbomParentVO getLastVirtualPackageNew(BomNewEbomParentVO vo, VirtualPackageTypeEnum virtualPackageTypeEnum) {
BomNewEbomParentVO parentEnt = getParent(vo);
Boolean flag = true;
while (Objects.nonNull(parentEnt) && parentEnt.getParentRowId() > 0 && flag) {
//制作
if (VirtualPackageTypeEnum.MAKING_PACKAGE.getVirtualPartType().equals(parentEnt.getVirtualPartType())) {
Long parentEntParentRowId = parentEnt.getParentRowId();
flag = false;
return allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentEntParentRowId) && virtualPackageTypeEnum.getVirtualPartType().equals(u.getVirtualPartType())).collect(Collectors.toList()).get(0);
}
parentEnt = getParent(parentEnt);
}
return parentEnt;
}
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) {
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(parents)) {
return parents.get(0);
}
return null;
}
private BomNewEbomParentVO getVirtualPackageByName(VirtualPackageTypeEnum virtualPackageTypeEnum) {
List<BomNewEbomParentVO> list = allBomDetail.stream().filter(u -> u.getLevelNumber().compareTo(u.getLevelNumber()) > 0 && virtualPackageTypeEnum.getVirtualPartType().equals(u.getVirtualPartType())).collect(Collectors.toList());
@ -463,10 +506,15 @@ public abstract class EBomToPbomBase {
List<BomNewEbomParentVO> firstLevelBoms = saveBomDetailParamDTO.stream().filter(u -> u.getParentRowId().equals(bomRowID)).collect(Collectors.toList());
String parentDrawingNoRe = StrUtil.isNotBlank(parentDrawingNo) ? parentDrawingNo : "";
Integer gNo = 1;
// List<Long> hasMarkRowId=new ArrayList<>();
String preAssemblyPackageLevelNo = StrUtil.isNotBlank(parentDrawingNoRe) ? StrUtil.join("-", parentDrawingNoRe, "1") : "1";
for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) {
// if( hasMarkRowId.contains(firstLevelBom.getRowId())){
// BomNewEbomParentVO ent=new BomNewEbomParentVO();
// BeanUtil.copyProperties(firstLevelBom,ent);
// allBomDetail.add(ent);
// firstLevelBom=ent;
// }
if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getVirtualPartType().equals(firstLevelBom.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getVirtualPartType().equals(firstLevelBom.getVirtualPartType())) {
firstLevelBom.setLevelNumber(levelToNum(preAssemblyPackageLevelNo));
firstLevelBom.setLevelNo(preAssemblyPackageLevelNo);
@ -620,4 +668,63 @@ public abstract class EBomToPbomBase {
}
}
/**
* 获取节点下的子节点包含节点本身
*
* @param parentVO
* @return
*/
protected List<BomNewEbomParentVO> getResultAllSubIncludeSelf(BomNewEbomParentVO parentVO) {
List<BomNewEbomParentVO> reusltSub = new ArrayList<>();
reusltSub.add(parentVO);
getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub);
return reusltSub;
}
protected List<BomNewEbomParentVO> getAllSubInListIncludeSelf(BomNewEbomParentVO parentVO, List<BomNewEbomParentVO> list) {
List<BomNewEbomParentVO> reusltSub = new ArrayList<>();
reusltSub.add(parentVO);
getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub, list);
return reusltSub;
}
private void getAllSubData(List<Long> parentRowIds, List<BomNewEbomParentVO> subResult, List<BomNewEbomParentVO> list) {
List<BomNewEbomParentVO> subMaterials = list.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)) {
getAllSubData(subMarterialBomRowIds, subResult, list);
} else {
break;
}
}
}
/**
* 发货包下子级
*
* @param
*/
private void getAllSubData(List<Long> parentRowIds, List<BomNewEbomParentVO> subResult) {
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)) {
getAllSubData(subMarterialBomRowIds, subResult);
} else {
break;
}
}
}
}