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