Merge branch 'refs/heads/feature/DM/nflg-bom' into feature/DM/nflg-bom-transition
This commit is contained in:
commit
1943b3107f
|
|
@ -10,6 +10,7 @@ import java.io.Serializable;
|
|||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -353,8 +354,8 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable {
|
|||
|
||||
private List<BomNewEbomParentVO> childNodes = Collections.emptyList();
|
||||
|
||||
@ApiModelProperty("父级物料编码")
|
||||
private List<String> parentMaterialNos;
|
||||
@ApiModelProperty("父级物料RowId")
|
||||
private List<Long> parentRowIds=new ArrayList<>();
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
|
|
|||
|
|
@ -534,7 +534,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
EBomToPBom eBomToPBom = new EBomToPBom();
|
||||
eBomToPBom.generateDrawingNo(bomDetail, rowId, "");
|
||||
|
||||
return result;
|
||||
return result.stream().distinct().collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -553,7 +553,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
ForkJoinTask<List<BomNewEbomParentVO>> submit = bomDetailPool.submit(detailTask);
|
||||
|
||||
List<BomNewEbomParentVO> result = submit.join();
|
||||
return result;
|
||||
return result.stream().distinct().collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -233,117 +233,65 @@ public abstract class EBomToPbomBase {
|
|||
*/
|
||||
protected void liftingLayer() {
|
||||
result.add(parent);
|
||||
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,vo.getParentRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
if (Objects.nonNull(lastVirtualPackage)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
|
||||
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
|
||||
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, vo.getParentRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
if (Objects.nonNull(lastVirtualPackage)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
|
||||
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
result.add(child);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 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);
|
||||
// }
|
||||
liftingLayerDo(parent, null, null, ImmutableList.of());
|
||||
}
|
||||
|
||||
protected void liftingLayerNew() {
|
||||
|
||||
result.add(parent);
|
||||
List<BomNewEbomParentVO> firstSubList = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parent.getBomRowId())).collect(Collectors.toList());
|
||||
BomNewEbomParentVO zfVo=null;
|
||||
BomNewEbomParentVO fhqVO=null;
|
||||
|
||||
while (CollUtil.isNotEmpty(firstSubList)) {
|
||||
for (BomNewEbomParentVO vo : firstSubList) {
|
||||
List<BomNewEbomParentVO> zfList = firstSubList.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(zfList)) {
|
||||
zfVo=zfList.get(0);
|
||||
}
|
||||
if(Objects.isNull(zfVo) && VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(vo.getVirtualPartType()) ) {
|
||||
|
||||
}
|
||||
private List<Long> hasCupmVo=new ArrayList<>();
|
||||
/**
|
||||
* @param parentVO 父项
|
||||
* @param directDeliveryVo 直发包
|
||||
* @param preAssemblyVo 发货前装配包
|
||||
*/
|
||||
public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List<Long> parentRowIds) {
|
||||
List<BomNewEbomParentVO> firstLevelBoms = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentVO.getBomRowId())).collect(Collectors.toList());
|
||||
|
||||
for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) {
|
||||
if(hasCupmVo.contains(firstLevelBom.getRowId())){
|
||||
firstLevelBom.getParentRowIds().clear();
|
||||
}
|
||||
}
|
||||
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,vo.getParentRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
if (Objects.nonNull(lastVirtualPackage)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
|
||||
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
continue;
|
||||
//直发包
|
||||
firstLevelBom.getParentRowIds().add(firstLevelBom.getParentRowId());
|
||||
firstLevelBom.getParentRowIds().addAll(parentRowIds);
|
||||
List<BomNewEbomParentVO> directDeliveryVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(directDeliveryVoList)) {
|
||||
directDeliveryVo = directDeliveryVoList.get(0);
|
||||
}
|
||||
List<BomNewEbomParentVO> preAssemblyVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(preAssemblyVoList)) {
|
||||
preAssemblyVo = preAssemblyVoList.get(0);
|
||||
}
|
||||
//虚拟包
|
||||
if (firstLevelBom.getVirtualPartType() > 0) {
|
||||
result.add(firstLevelBom);
|
||||
} else if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(firstLevelBom.getProjectType())) {
|
||||
if (Objects.nonNull(directDeliveryVo)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(directDeliveryVo, firstLevelBom);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
|
||||
newEnt.setParentRowId(directDeliveryVo.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
|
||||
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackageNew(vo, vo.getParentRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
if (Objects.nonNull(lastVirtualPackage)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(lastVirtualPackage, child);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(child.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(vo.getMaterialNo());
|
||||
newEnt.setParentRowId(lastVirtualPackage.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
continue;
|
||||
} else if (firstLevelBom.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
|
||||
if (Objects.nonNull(preAssemblyVo)) {
|
||||
BomNewEbomParentVO newEnt = liftingLayerSummary(preAssemblyVo, firstLevelBom);
|
||||
newEnt.setRowId(IdWorker.getId());
|
||||
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
|
||||
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
|
||||
newEnt.setParentRowId(preAssemblyVo.getBomRowId());
|
||||
result.add(newEnt);
|
||||
}
|
||||
result.add(child);
|
||||
} else {
|
||||
result.add(firstLevelBom);
|
||||
}
|
||||
hasCupmVo.add(firstLevelBom.getRowId());
|
||||
if (firstLevelBom.getBomRowId() > 0) {
|
||||
liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提层汇总数量
|
||||
*
|
||||
|
|
@ -354,8 +302,8 @@ public abstract class EBomToPbomBase {
|
|||
BigDecimal sum = vo.getNum();
|
||||
// String parentLevelNo = BomLevelUtil.getParentLevelNo(vo.getLevelNo());
|
||||
List<BomNewEbomParentVO> parentList = getAllParent(vo);
|
||||
BomNewEbomParentVO newEnt=new BomNewEbomParentVO();
|
||||
BeanUtil.copyProperties(vo,newEnt);
|
||||
BomNewEbomParentVO newEnt = new BomNewEbomParentVO();
|
||||
BeanUtil.copyProperties(vo, newEnt);
|
||||
|
||||
//构建虚拟包组成
|
||||
buildVirtualPackageComposition(lastVirtualPackage, vo);
|
||||
|
|
@ -371,13 +319,11 @@ public abstract class EBomToPbomBase {
|
|||
newEnt.setBomRowId(0L);
|
||||
newEnt.setChildBomRowId(0L);
|
||||
newEnt.setNum(sum);
|
||||
return newEnt;
|
||||
return newEnt;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected List<BomNewEbomParentVO> getAllParent(BomNewEbomParentVO vo) {
|
||||
List<BomNewEbomParentVO> result = new ArrayList<>();
|
||||
BomNewEbomParentVO parentEnt = getParent(vo);
|
||||
|
|
@ -444,7 +390,7 @@ public abstract class EBomToPbomBase {
|
|||
}
|
||||
|
||||
private void changeImpactDo(BomNewEbomParentVO parentVO) {
|
||||
List<BomNewEbomParentVO> subVos = getAllSubInListIncludeSelf(parentVO,allBomDetail);
|
||||
List<BomNewEbomParentVO> subVos = getAllSubInListIncludeSelf(parentVO, allBomDetail);
|
||||
|
||||
List<BomNewEbomParentVO> subVosParent = subVos.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
||||
for (BomNewEbomParentVO vo : subVosParent) {
|
||||
|
|
@ -515,8 +461,8 @@ public abstract class EBomToPbomBase {
|
|||
|
||||
private void buildChangeImpactEntity(BomNewEbomVirtualPackageCompositionEntity v, BomNewEbomParentVO vo) {
|
||||
|
||||
List<BomNewEbomUpgradeChangeEntity> checkExists = upgradeChangeResult.stream().filter(u ->u.getMaterialNo().equals(v.getVirtualPackageMaterialNo()) && u.getRelMaterialNo().equals(vo.getMaterialNo())).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(checkExists)){
|
||||
List<BomNewEbomUpgradeChangeEntity> checkExists = upgradeChangeResult.stream().filter(u -> u.getMaterialNo().equals(v.getVirtualPackageMaterialNo()) && u.getRelMaterialNo().equals(vo.getMaterialNo())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(checkExists)) {
|
||||
return;
|
||||
}
|
||||
BomNewEbomUpgradeChangeEntity changeEntity = new BomNewEbomUpgradeChangeEntity();
|
||||
|
|
@ -560,7 +506,7 @@ public abstract class EBomToPbomBase {
|
|||
}
|
||||
|
||||
private BomNewEbomParentVO getLastVirtualPackageNew(BomNewEbomParentVO vo, Long parentRowId, VirtualPackageTypeEnum virtualPackageTypeEnum) {
|
||||
BomNewEbomParentVO parentEnt = getParent(vo,parentRowId);
|
||||
BomNewEbomParentVO parentEnt = getParent(vo, parentRowId);
|
||||
Boolean flag = true;
|
||||
while (Objects.nonNull(parentEnt) && parentEnt.getParentRowId() > 0 && flag) {
|
||||
//制作
|
||||
|
|
@ -575,7 +521,7 @@ public abstract class EBomToPbomBase {
|
|||
return null;
|
||||
}
|
||||
|
||||
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo,Long parentRowId) {
|
||||
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo, Long parentRowId) {
|
||||
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentRowId) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(parents)) {
|
||||
return parents.get(0);
|
||||
|
|
@ -584,7 +530,7 @@ public abstract class EBomToPbomBase {
|
|||
}
|
||||
|
||||
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) {
|
||||
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
|
||||
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(parents)) {
|
||||
return parents.get(0);
|
||||
}
|
||||
|
|
@ -788,7 +734,7 @@ public abstract class EBomToPbomBase {
|
|||
getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub);
|
||||
|
||||
|
||||
return reusltSub;
|
||||
return reusltSub.stream().distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
protected List<BomNewEbomParentVO> getAllSubInListIncludeSelf(BomNewEbomParentVO parentVO, List<BomNewEbomParentVO> list) {
|
||||
|
|
@ -797,7 +743,7 @@ public abstract class EBomToPbomBase {
|
|||
getAllSubData(ImmutableList.of(parentVO.getBomRowId()), reusltSub, list);
|
||||
|
||||
|
||||
return reusltSub;
|
||||
return reusltSub.stream().distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -810,7 +756,7 @@ public abstract class EBomToPbomBase {
|
|||
if (CollUtil.isNotEmpty(subMarterialBomRowIds)) {
|
||||
subMaterials = list.stream().filter(u -> subMarterialBomRowIds.contains(u.getParentRowId())).collect(Collectors.toList());
|
||||
} else {
|
||||
subMaterials=Collections.emptyList();
|
||||
subMaterials = Collections.emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -824,8 +770,7 @@ 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);
|
||||
|
|
@ -833,9 +778,9 @@ public abstract class EBomToPbomBase {
|
|||
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();
|
||||
subMaterials = Collections.emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue