diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java
index eee99980..4031f50f 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java
@@ -881,16 +881,6 @@ public class BomNewEbomParentService extends ServiceImpl", errors));
}
});
- //检查该版本是否已转换过该工厂的Pbom
-// for (BomNewEbomParentEntity parent : parents){
-// List list = pBomParentService.lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()).eq(BomNewPbomParentEntity::getCurrentVersion, parent.getCurrentVersion())
-// .select(BomNewPbomParentEntity::getFacCode).list();
-// if(CollUtil.isNotEmpty(list)){
-// Set dbExistsFac = list.stream().map(u -> u.getFacCode()).collect(Collectors.toSet());
-// Set 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> facBomDataMp=new HashMap<>();
+ private Map> facBomDataMp = new HashMap<>();
public EBomToPBomFor31(BomNewEbomParentVO inParent, List inAllBomDetail, List 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 data1020=new ArrayList<>();
- List deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃") ).collect(Collectors.toList());
- if(CollUtil.isNotEmpty(deliveryPackage1020)){
+ List data1020 = new ArrayList<>();
+ List 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 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 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 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 data1010=new ArrayList<>();
- List deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && !u.getMaterialName().contains("仙桃")).collect(Collectors.toList());
- if(CollUtil.isNotEmpty(deliveryPackage1010)){
+ List data1010 = new ArrayList<>();
+ List 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 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 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 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 child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).collect(Collectors.toList());
+ List child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList());
List 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);
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java
index a12dfdaf..799027b9 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java
@@ -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();
}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java
index dda3f717..0b3790d8 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java
@@ -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 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 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 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 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 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 hasConvert = new ArrayList<>();
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java
index f967e4c4..17538ceb 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java
@@ -69,7 +69,7 @@ public abstract class EBomToPbomBase {
protected Set hasBuildVNo = Sets.newHashSet();
//当子级为F项或Z项时-无需转的父级物料
- protected Set childDelMaterialNos=new HashSet<>();
+ protected Set childDelMaterialNos = new HashSet<>();
public abstract void convert();
@@ -217,7 +217,7 @@ public abstract class EBomToPbomBase {
}
public void markNoConvert(BomNewEbomParentVO parentVo, List parentList) {
- List 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 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 parentList = getAllParent(vo);
- while (parentLevelNo.length() >= lastVirtualPackage.getLevelNo().length()) {
- String pNo = parentLevelNo;
- List 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 getAllParent(BomNewEbomParentVO vo) {
+ List 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 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 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 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 firstLevelBoms = saveBomDetailParamDTO.stream().filter(u -> u.getParentRowId().equals(bomRowID)).collect(Collectors.toList());
String parentDrawingNoRe = StrUtil.isNotBlank(parentDrawingNo) ? parentDrawingNo : "";
Integer gNo = 1;
-
+// List 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 getResultAllSubIncludeSelf(BomNewEbomParentVO parentVO) {
+ List reusltSub = new ArrayList<>();
+ reusltSub.add(parentVO);
+ getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub);
+
+
+ return reusltSub;
+ }
+
+ protected List getAllSubInListIncludeSelf(BomNewEbomParentVO parentVO, List list) {
+ List reusltSub = new ArrayList<>();
+ reusltSub.add(parentVO);
+ getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub, list);
+
+
+ return reusltSub;
+ }
+
+
+ private void getAllSubData(List parentRowIds, List subResult, List list) {
+
+ List subMaterials = list.stream().filter(u -> parentRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
+ while (CollUtil.isNotEmpty(subMaterials)) {
+ subResult.addAll(subMaterials);
+ List 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 parentRowIds, List subResult) {
+
+ List subMaterials = result.stream().filter(u -> parentRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
+ while (CollUtil.isNotEmpty(subMaterials)) {
+ subResult.addAll(subMaterials);
+ List subMarterialBomRowIds = subMaterials.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(subMarterialBomRowIds)) {
+ getAllSubData(subMarterialBomRowIds, subResult);
+ } else {
+ break;
+ }
+ }
+ }
}