Merge branch 'refs/heads/feature/DM/nflg-bom' into feature/DM/nflg-bom-transition
This commit is contained in:
commit
a22d26e739
|
|
@ -1,8 +1,10 @@
|
||||||
package com.nflg.product.bomnew.service;
|
package com.nflg.product.bomnew.service;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.lang.TypeReference;
|
import cn.hutool.core.lang.TypeReference;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.nflg.product.bomnew.constant.EBomConstant;
|
import com.nflg.product.bomnew.constant.EBomConstant;
|
||||||
|
|
@ -146,6 +148,8 @@ public class ForwardReportService {
|
||||||
}
|
}
|
||||||
public void exportExcel( List<ForwardReportVO> list,OutputStream outputStream) throws IOException {
|
public void exportExcel( List<ForwardReportVO> list,OutputStream outputStream) throws IOException {
|
||||||
|
|
||||||
|
VUtils.isTure(Objects.isNull(list)||CollUtil.isEmpty(list)).throwMessage("无数据可导出");
|
||||||
|
|
||||||
List<ForwardReportExcelVO> exportList= Convert.convert( new TypeReference<List<ForwardReportExcelVO>>() {
|
List<ForwardReportExcelVO> exportList= Convert.convert( new TypeReference<List<ForwardReportExcelVO>>() {
|
||||||
}, list);
|
}, list);
|
||||||
ListSheet<ForwardReportExcelVO> listSheet=new ListSheet<>(exportList);
|
ListSheet<ForwardReportExcelVO> listSheet=new ListSheet<>(exportList);
|
||||||
|
|
@ -161,6 +165,10 @@ public class ForwardReportService {
|
||||||
BomNewEbomParentFormalEntity parentEntity=SpringUtil.getBean(BomNewEbomParentFormalService .class).getById(query.getBomRowId());
|
BomNewEbomParentFormalEntity parentEntity=SpringUtil.getBean(BomNewEbomParentFormalService .class).getById(query.getBomRowId());
|
||||||
List<BomNewEbomParentFormalVO> parentChildList = SpringUtil.getBean(BomNewEbomParentFormalService.class). getParentChild(query.getBomRowId());
|
List<BomNewEbomParentFormalVO> parentChildList = SpringUtil.getBean(BomNewEbomParentFormalService.class). getParentChild(query.getBomRowId());
|
||||||
|
|
||||||
|
if(CollUtil.isEmpty(parentChildList)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(parentChildList, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT);
|
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(parentChildList, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT);
|
||||||
|
|
||||||
List<Long> bomRowIds=parentChildList.stream().filter(u -> Objects.nonNull(u.getBomRowId()) && u.getBomRowId()>0 ).map(BomNewEbomParentFormalVO::getBomRowId).collect(Collectors.toList());
|
List<Long> bomRowIds=parentChildList.stream().filter(u -> Objects.nonNull(u.getBomRowId()) && u.getBomRowId()>0 ).map(BomNewEbomParentFormalVO::getBomRowId).collect(Collectors.toList());
|
||||||
|
|
@ -204,6 +212,11 @@ public class ForwardReportService {
|
||||||
BomNewPbomParentFormalEntity parentEntity= SpringUtil.getBean(BomNewPbomParentFormalService .class).getById(query.getBomRowId());
|
BomNewPbomParentFormalEntity parentEntity= SpringUtil.getBean(BomNewPbomParentFormalService .class).getById(query.getBomRowId());
|
||||||
|
|
||||||
List<BomNewPbomParentFormalVO> parentChildList = SpringUtil.getBean(BomNewPbomParentFormalService .class).getParentChild(query.getBomRowId());
|
List<BomNewPbomParentFormalVO> parentChildList = SpringUtil.getBean(BomNewPbomParentFormalService .class).getParentChild(query.getBomRowId());
|
||||||
|
|
||||||
|
if(CollUtil.isEmpty(parentChildList)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(parentChildList, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT);
|
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(parentChildList, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT);
|
||||||
List<Long> bomRowIds=parentChildList.stream().filter(u -> Objects.nonNull(u.getBomRowId()) && u.getBomRowId()>0 ).map(BomNewPbomParentFormalVO::getBomRowId).collect(Collectors.toList());
|
List<Long> bomRowIds=parentChildList.stream().filter(u -> Objects.nonNull(u.getBomRowId()) && u.getBomRowId()>0 ).map(BomNewPbomParentFormalVO::getBomRowId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,13 +220,16 @@ public class EBomForwardReport extends BaseForwardReport {
|
||||||
*/
|
*/
|
||||||
synchronized List<BomNewEbomParentFormalVO> bomDetailList(Long bomRowId) {
|
synchronized List<BomNewEbomParentFormalVO> bomDetailList(Long bomRowId) {
|
||||||
List<BomNewEbomParentFormalVO> childList = SpringUtil.getBean(BomNewEbomParentFormalService.class).getParentChild(bomRowId);
|
List<BomNewEbomParentFormalVO> childList = SpringUtil.getBean(BomNewEbomParentFormalService.class).getParentChild(bomRowId);
|
||||||
EBomFormalTreeTask task = new EBomFormalTreeTask(childList);
|
if(CollUtil.isNotEmpty(childList)) {
|
||||||
ForkJoinPool pool = new ForkJoinPool();
|
EBomFormalTreeTask task = new EBomFormalTreeTask(childList);
|
||||||
ForkJoinTask<List<BomNewEbomParentFormalVO>> submit = pool.submit(task);
|
ForkJoinPool pool = new ForkJoinPool();
|
||||||
|
ForkJoinTask<List<BomNewEbomParentFormalVO>> submit = pool.submit(task);
|
||||||
|
|
||||||
List<BomNewEbomParentFormalVO> bomList = submit.join();
|
List<BomNewEbomParentFormalVO> bomList = submit.join();
|
||||||
initMaterialInfo(bomList);
|
initMaterialInfo(bomList);
|
||||||
return bomList;
|
return bomList;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initMaterialInfo(List<BomNewEbomParentFormalVO> list) {
|
void initMaterialInfo(List<BomNewEbomParentFormalVO> list) {
|
||||||
|
|
@ -251,6 +254,9 @@ public class EBomForwardReport extends BaseForwardReport {
|
||||||
|
|
||||||
|
|
||||||
List<BomNewEbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
List<BomNewEbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||||
|
if(CollUtil.isEmpty(bomList)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||||
}, bomList);
|
}, bomList);
|
||||||
|
|
||||||
|
|
@ -289,6 +295,9 @@ public class EBomForwardReport extends BaseForwardReport {
|
||||||
for (BomNewEbomParentFormalEntity parentFormal : listParent) {
|
for (BomNewEbomParentFormalEntity parentFormal : listParent) {
|
||||||
|
|
||||||
List<BomNewEbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
List<BomNewEbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||||
|
if(CollUtil.isEmpty(bomList)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||||
}, bomList);
|
}, bomList);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public class EBomToPBomForFormal extends EBomToPbomBase {
|
||||||
this.facCodes = inFacCodes;
|
this.facCodes = inFacCodes;
|
||||||
this.convertMode=convertModelEnum;
|
this.convertMode=convertModelEnum;
|
||||||
generateDrawingNo(allBomDetail, parentRowId, "");
|
generateDrawingNo(allBomDetail, parentRowId, "");
|
||||||
|
initEBomVersionFormal();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase {
|
||||||
this.facCodes = inFacCodes;
|
this.facCodes = inFacCodes;
|
||||||
this.convertMode=convertModelEnum;
|
this.convertMode=convertModelEnum;
|
||||||
generateDrawingNo(allBomDetail, parentRowId, "");
|
generateDrawingNo(allBomDetail, parentRowId, "");
|
||||||
|
initEBomVersionFormal();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public abstract class EBomToPbomBase {
|
||||||
|
|
||||||
protected List<BomNewEbomParentVO> result = new ArrayList<>();
|
protected List<BomNewEbomParentVO> result = new ArrayList<>();
|
||||||
|
|
||||||
protected BomNewEbomVirtualPackageCompositionService virtualPackageCompositionService=SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class);
|
protected BomNewEbomVirtualPackageCompositionService virtualPackageCompositionService = SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class);
|
||||||
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -60,7 +60,6 @@ public abstract class EBomToPbomBase {
|
||||||
protected List<BomNewEbomVirtualPackageCompositionEntity> virtualPackageCompositionResult = new ArrayList<>();
|
protected List<BomNewEbomVirtualPackageCompositionEntity> virtualPackageCompositionResult = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
protected List<BomNewEbomUpgradeChangeEntity> upgradeChangeResult = new ArrayList<>();
|
protected List<BomNewEbomUpgradeChangeEntity> upgradeChangeResult = new ArrayList<>();
|
||||||
|
|
||||||
|
|
@ -161,13 +160,13 @@ public abstract class EBomToPbomBase {
|
||||||
.eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one();
|
.eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one();
|
||||||
|
|
||||||
|
|
||||||
if(Objects.isNull(oldParent)){
|
if (Objects.isNull(oldParent)) {
|
||||||
return buildParentEntity(parentVo,facCode,oldParent,parentVo.getCurrentVersion());
|
return buildParentEntity(parentVo, facCode, oldParent, parentVo.getCurrentVersion());
|
||||||
|
|
||||||
}
|
}
|
||||||
//pbom 处于工作表
|
//pbom 处于工作表
|
||||||
else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) {
|
else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) {
|
||||||
if (oldParent.getCreatedBy().equals( parentVo.getCreatedBy())) {
|
if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) {
|
||||||
if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) {
|
if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) {
|
||||||
SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId()));
|
SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId()));
|
||||||
oldParent.setSourceRowId(parentVo.getRowId());
|
oldParent.setSourceRowId(parentVo.getRowId());
|
||||||
|
|
@ -183,14 +182,14 @@ public abstract class EBomToPbomBase {
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
} else { //pbom-处于正式表
|
} else { //pbom-处于正式表
|
||||||
String bomVersion= VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0?parentVo.getCurrentVersion():VersionUtil.getNextVersion(oldParent.getCurrentVersion());
|
String bomVersion = VersionUtil.compare(parentVo.getCurrentVersion(), oldParent.getCurrentVersion()) > 0 ? parentVo.getCurrentVersion() : VersionUtil.getNextVersion(oldParent.getCurrentVersion());
|
||||||
return buildParentEntity(parentVo, facCode, oldParent,bomVersion);
|
return buildParentEntity(parentVo, facCode, oldParent, bomVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private BomNewPbomParentEntity buildParentEntity(BomNewEbomParentVO parentVo, String facCode,BomNewPbomParentEntity oldParent,String bomVersion){
|
private BomNewPbomParentEntity buildParentEntity(BomNewEbomParentVO parentVo, String facCode, BomNewPbomParentEntity oldParent, String bomVersion) {
|
||||||
BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity();
|
BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity();
|
||||||
BeanUtil.copyProperties(parentVo, pBomParent, "sourceRowId");
|
BeanUtil.copyProperties(parentVo, pBomParent, "sourceRowId");
|
||||||
pBomParent.setSourceRowId(parentVo.getBomRowId());
|
pBomParent.setSourceRowId(parentVo.getBomRowId());
|
||||||
|
|
@ -286,7 +285,8 @@ public abstract class EBomToPbomBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建虚拟包组成
|
* 构建虚拟包组成
|
||||||
|
*
|
||||||
* @param lastVirtualPackage
|
* @param lastVirtualPackage
|
||||||
* @param vo
|
* @param vo
|
||||||
*/
|
*/
|
||||||
|
|
@ -306,12 +306,12 @@ public abstract class EBomToPbomBase {
|
||||||
packageCompositionEntity.setDeviseName(lastVirtualPackage.getDeviseName());
|
packageCompositionEntity.setDeviseName(lastVirtualPackage.getDeviseName());
|
||||||
packageCompositionEntity.setDeptName(lastVirtualPackage.getDeptName());
|
packageCompositionEntity.setDeptName(lastVirtualPackage.getDeptName());
|
||||||
packageCompositionEntity.setFromLiftingLayerState(0);
|
packageCompositionEntity.setFromLiftingLayerState(0);
|
||||||
if(!lastVirtualPackage.getBomRowId().equals(vo.getParentRowId())) {
|
if (!lastVirtualPackage.getBomRowId().equals(vo.getParentRowId())) {
|
||||||
packageCompositionEntity.setFromLiftingLayerState(1);
|
packageCompositionEntity.setFromLiftingLayerState(1);
|
||||||
}
|
}
|
||||||
packageCompositionEntity.setCurrentVersion(lastVirtualPackage.getCurrentVersion());
|
packageCompositionEntity.setCurrentVersion(lastVirtualPackage.getCurrentVersion());
|
||||||
List<BomNewEbomParentVO> vParentM = allBomDetail.stream().filter(u -> lastVirtualPackage.getBomRowId().equals(u.getParentRowId())).collect(Collectors.toList());
|
List<BomNewEbomParentVO> vParentM = allBomDetail.stream().filter(u -> lastVirtualPackage.getBomRowId().equals(u.getParentRowId())).collect(Collectors.toList());
|
||||||
if(CollUtil.isNotEmpty(vParentM)) {
|
if (CollUtil.isNotEmpty(vParentM)) {
|
||||||
packageCompositionEntity.setVirtualMaterialParentMaterialNo(vParentM.get(0).getMaterialNo());
|
packageCompositionEntity.setVirtualMaterialParentMaterialNo(vParentM.get(0).getMaterialNo());
|
||||||
}
|
}
|
||||||
this.virtualPackageCompositionResult.add(packageCompositionEntity);
|
this.virtualPackageCompositionResult.add(packageCompositionEntity);
|
||||||
|
|
@ -320,7 +320,7 @@ public abstract class EBomToPbomBase {
|
||||||
/**
|
/**
|
||||||
* 变更影响
|
* 变更影响
|
||||||
*/
|
*/
|
||||||
protected void changeImpact(){
|
protected void changeImpact() {
|
||||||
// Set<String> vmaterialNo = allBomDetail.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(u.getVirtualPartType())).map(u -> u.getMaterialNo()).collect(Collectors.toSet());
|
// Set<String> vmaterialNo = allBomDetail.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(u.getVirtualPartType())).map(u -> u.getMaterialNo()).collect(Collectors.toSet());
|
||||||
List<BomNewEbomParentVO> firstParent = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList());
|
List<BomNewEbomParentVO> firstParent = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList());
|
||||||
for (BomNewEbomParentVO vo : firstParent) {
|
for (BomNewEbomParentVO vo : firstParent) {
|
||||||
|
|
@ -330,81 +330,79 @@ public abstract class EBomToPbomBase {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeImpactDo(BomNewEbomParentVO parentVO){
|
private void changeImpactDo(BomNewEbomParentVO parentVO) {
|
||||||
List<BomNewEbomParentVO> subVos = allBomDetail.stream().filter(u -> u.getLevelNumber().compareTo(parentVO.getLevelNumber()) >= 0 && u.getLevelNumber().compareTo(NumberUtil.add(parentVO.getLevelNumber(), BigDecimal.valueOf(0.01))) < 0)
|
List<BomNewEbomParentVO> subVos = allBomDetail.stream().filter(u -> u.getLevelNumber().compareTo(parentVO.getLevelNumber()) >= 0 && u.getLevelNumber().compareTo(NumberUtil.add(parentVO.getLevelNumber(), BigDecimal.valueOf(0.01))) < 0)
|
||||||
.sorted(Comparator.comparing(BomNewEbomParentVO::getLevelNumber)).collect(Collectors.toList());
|
.sorted(Comparator.comparing(BomNewEbomParentVO::getLevelNumber)).collect(Collectors.toList());
|
||||||
List<BomNewEbomParentVO> subVosParent = subVos.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
List<BomNewEbomParentVO> subVosParent = subVos.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
||||||
for (BomNewEbomParentVO vo : subVosParent) {
|
for (BomNewEbomParentVO vo : subVosParent) {
|
||||||
if( compareVirtualPackage(vo)) {
|
if (compareVirtualPackage(vo)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Boolean compareVirtualPackage(BomNewEbomParentVO vo) {
|
private Boolean compareVirtualPackage(BomNewEbomParentVO vo) {
|
||||||
Boolean result=false;
|
Boolean result = false;
|
||||||
if(EBomStatusEnum.PUBLISHED.equalsValue(vo.getStatus())){
|
if (EBomStatusEnum.PUBLISHED.equalsValue(vo.getStatus())) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
List<BomNewEbomVirtualPackageCompositionEntity> impactVm = virtualPackageCompositionService.lambdaQuery()
|
List<BomNewEbomVirtualPackageCompositionEntity> impactVm = virtualPackageCompositionService.lambdaQuery()
|
||||||
.eq(BomNewEbomVirtualPackageCompositionEntity::getParentMaterialNo, vo.getMaterialNo())
|
.eq(BomNewEbomVirtualPackageCompositionEntity::getParentMaterialNo, vo.getMaterialNo())
|
||||||
.eq(BomNewEbomVirtualPackageCompositionEntity::getFromLiftingLayerState,1).list();
|
.eq(BomNewEbomVirtualPackageCompositionEntity::getFromLiftingLayerState, 1).list();
|
||||||
if(CollUtil.isNotEmpty(impactVm)){
|
if (CollUtil.isNotEmpty(impactVm)) {
|
||||||
List<BomNewEbomParentVO> childList = allBomDetail.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).collect(Collectors.toList());
|
List<BomNewEbomParentVO> childList = allBomDetail.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).collect(Collectors.toList());
|
||||||
|
|
||||||
Map<String, List<BomNewEbomVirtualPackageCompositionEntity> > impactVmMp=impactVm.stream().collect(Collectors.groupingBy(BomNewEbomVirtualPackageCompositionEntity::getVirtualPackageMaterialNo));
|
Map<String, List<BomNewEbomVirtualPackageCompositionEntity>> impactVmMp = impactVm.stream().collect(Collectors.groupingBy(BomNewEbomVirtualPackageCompositionEntity::getVirtualPackageMaterialNo));
|
||||||
//对比F项
|
//对比F项
|
||||||
for (String vMaterialNo: impactVmMp.keySet()){
|
for (String vMaterialNo : impactVmMp.keySet()) {
|
||||||
List<BomNewEbomVirtualPackageCompositionEntity> vMaterialList = impactVmMp.get(vMaterialNo);
|
List<BomNewEbomVirtualPackageCompositionEntity> vMaterialList = impactVmMp.get(vMaterialNo);
|
||||||
//当改BOM 存在该虚拟包则直接跳过
|
//当改BOM 存在该虚拟包则直接跳过
|
||||||
List<BomNewEbomParentVO> existsV = allBomDetail.stream().filter(u -> u.getMaterialNo().equals(vMaterialNo)).collect(Collectors.toList());
|
List<BomNewEbomParentVO> existsV = allBomDetail.stream().filter(u -> u.getMaterialNo().equals(vMaterialNo)).collect(Collectors.toList());
|
||||||
if(CollUtil.isNotEmpty(existsV)){
|
if (CollUtil.isNotEmpty(existsV)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//虚拟包原F项
|
//虚拟包原F项
|
||||||
Set<String> fSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
Set<String> fSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
||||||
Set<String> newFSet = childList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
Set<String> newFSet = childList.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
||||||
if(!fSet.equals(newFSet))
|
if (!fSet.equals(newFSet)) {
|
||||||
{
|
buildChangeImpactEntity(vMaterialList.get(0), vo);
|
||||||
buildChangeImpactEntity(vMaterialList.get(0),vo);
|
result = true;
|
||||||
result=true;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 虚拟包Z项
|
// 虚拟包Z项
|
||||||
//虚拟包原F项
|
//虚拟包原F项
|
||||||
Set<String> zSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
Set<String> zSet = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
||||||
Set<String> newZSet = childList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
Set<String> newZSet = childList.stream().filter(u -> VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(u.getProjectType())).map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet());
|
||||||
if(!zSet.equals(newZSet))
|
if (!zSet.equals(newZSet)) {
|
||||||
{
|
buildChangeImpactEntity(vMaterialList.get(0), vo);
|
||||||
buildChangeImpactEntity(vMaterialList.get(0),vo);
|
result = true;
|
||||||
result=true;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//数量发生变化(非F,Z项 数量发生变化)
|
//数量发生变化(非F,Z项 数量发生变化)
|
||||||
List<BomNewEbomVirtualPackageCompositionEntity> noZOrFList = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getProductTypeKey().equals(u.getProjectType())).collect(Collectors.toList());
|
List<BomNewEbomVirtualPackageCompositionEntity> noZOrFList = vMaterialList.stream().filter(u -> VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getProductTypeKey().equals(u.getProjectType())).collect(Collectors.toList());
|
||||||
for (BomNewEbomVirtualPackageCompositionEntity vZOrF: noZOrFList){
|
for (BomNewEbomVirtualPackageCompositionEntity vZOrF : noZOrFList) {
|
||||||
List<BomNewEbomParentVO> collect = childList.stream().filter(u -> u.getMaterialNo().equals(vZOrF.getChildMaterialNo())).collect(Collectors.toList());
|
List<BomNewEbomParentVO> collect = childList.stream().filter(u -> u.getMaterialNo().equals(vZOrF.getChildMaterialNo())).collect(Collectors.toList());
|
||||||
if(CollUtil.isEmpty(collect)){
|
if (CollUtil.isEmpty(collect)) {
|
||||||
buildChangeImpactEntity(vMaterialList.get(0),vo);
|
buildChangeImpactEntity(vMaterialList.get(0), vo);
|
||||||
result=true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//数量发生了变化
|
//数量发生了变化
|
||||||
else if(CollUtil.isNotEmpty(collect) && collect.get(0).getNum().equals(vZOrF.getNum())){
|
else if (CollUtil.isNotEmpty(collect) && collect.get(0).getNum().equals(vZOrF.getNum())) {
|
||||||
buildChangeImpactEntity(vMaterialList.get(0),vo);
|
buildChangeImpactEntity(vMaterialList.get(0), vo);
|
||||||
result=true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildChangeImpactEntity(BomNewEbomVirtualPackageCompositionEntity v , BomNewEbomParentVO vo){
|
private void buildChangeImpactEntity(BomNewEbomVirtualPackageCompositionEntity v, BomNewEbomParentVO vo) {
|
||||||
|
|
||||||
BomNewEbomUpgradeChangeEntity changeEntity =new BomNewEbomUpgradeChangeEntity();
|
BomNewEbomUpgradeChangeEntity changeEntity = new BomNewEbomUpgradeChangeEntity();
|
||||||
changeEntity.setRowId(IdWorker.getId());
|
changeEntity.setRowId(IdWorker.getId());
|
||||||
changeEntity.setMaterialNo(v.getVirtualPackageMaterialNo());
|
changeEntity.setMaterialNo(v.getVirtualPackageMaterialNo());
|
||||||
changeEntity.setVersionOld(vo.getCurrentVersion());
|
changeEntity.setVersionOld(vo.getCurrentVersion());
|
||||||
|
|
@ -473,7 +471,7 @@ public abstract class EBomToPbomBase {
|
||||||
firstLevelBom.setLevelNumber(levelToNum(preAssemblyPackageLevelNo));
|
firstLevelBom.setLevelNumber(levelToNum(preAssemblyPackageLevelNo));
|
||||||
firstLevelBom.setLevelNo(preAssemblyPackageLevelNo);
|
firstLevelBom.setLevelNo(preAssemblyPackageLevelNo);
|
||||||
|
|
||||||
}else {
|
} else {
|
||||||
|
|
||||||
String levelKey = StrUtil.isNotBlank(parentDrawingNoRe) ? StrUtil.join("-", parentDrawingNoRe, gNo.toString()) : gNo.toString();
|
String levelKey = StrUtil.isNotBlank(parentDrawingNoRe) ? StrUtil.join("-", parentDrawingNoRe, gNo.toString()) : gNo.toString();
|
||||||
firstLevelBom.setLevelNumber(levelToNum(levelKey));
|
firstLevelBom.setLevelNumber(levelToNum(levelKey));
|
||||||
|
|
@ -561,6 +559,7 @@ public abstract class EBomToPbomBase {
|
||||||
public void initEBomVersion() {
|
public void initEBomVersion() {
|
||||||
List<BomNewEbomParentVO> parentBoms = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
List<BomNewEbomParentVO> parentBoms = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
||||||
for (BomNewEbomParentVO parentBom : parentBoms) {
|
for (BomNewEbomParentVO parentBom : parentBoms) {
|
||||||
|
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
|
||||||
if (!EBomStatusEnum.PUBLISHED.equalsValue(parentBom.getStatus())) {
|
if (!EBomStatusEnum.PUBLISHED.equalsValue(parentBom.getStatus())) {
|
||||||
//获取正式版
|
//获取正式版
|
||||||
BomNewEbomParentEntity oldEBom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentBom.getMaterialNo())
|
BomNewEbomParentEntity oldEBom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentBom.getMaterialNo())
|
||||||
|
|
@ -569,7 +568,7 @@ public abstract class EBomToPbomBase {
|
||||||
if (Objects.nonNull(oldEBom)) {
|
if (Objects.nonNull(oldEBom)) {
|
||||||
List<BomNewEbomChildEntity> oldParentChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list();
|
List<BomNewEbomChildEntity> oldParentChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list();
|
||||||
|
|
||||||
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
|
|
||||||
//一样则无需转换
|
//一样则无需转换
|
||||||
if (isSameEBomV2(oldParentChild, newParentChild)) {
|
if (isSameEBomV2(oldParentChild, newParentChild)) {
|
||||||
parentBom.setNoConvertToPBomIs(1);
|
parentBom.setNoConvertToPBomIs(1);
|
||||||
|
|
@ -582,20 +581,41 @@ public abstract class EBomToPbomBase {
|
||||||
parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
|
parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
|
||||||
parentBom.setHasChangeState(2);
|
parentBom.setHasChangeState(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//如子级都为F 项父级也不转
|
|
||||||
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
|
|
||||||
if(CollUtil.isNotEmpty(projectSet)){
|
|
||||||
if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) &&
|
|
||||||
(ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F","Z").equals(projectSet)|| ImmutableSet.of("Z").equals(projectSet))){
|
|
||||||
parentBom.setNoConvertToPBomIs(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
//如子级都为F 项父级也不转
|
||||||
|
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
|
||||||
|
if (CollUtil.isNotEmpty(projectSet)) {
|
||||||
|
if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) &&
|
||||||
|
(ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) {
|
||||||
|
parentBom.setNoConvertToPBomIs(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 正式eBOM转换前生产 pBOM
|
||||||
|
* 子项都为F 项则父项不转
|
||||||
|
*/
|
||||||
|
public void initEBomVersionFormal() {
|
||||||
|
List<BomNewEbomParentVO> parentBoms = allBomDetail.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
|
||||||
|
for (BomNewEbomParentVO parentBom : parentBoms) {
|
||||||
|
|
||||||
|
List<BomNewEbomParentVO> newParentChild = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentBom.getBomRowId())).collect(Collectors.toList());
|
||||||
|
//如子级都为F 项父级也不转
|
||||||
|
Set<String> projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet());
|
||||||
|
if (CollUtil.isNotEmpty(projectSet)) {
|
||||||
|
if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) &&
|
||||||
|
(ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) {
|
||||||
|
parentBom.setNoConvertToPBomIs(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -224,13 +224,16 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
*/
|
*/
|
||||||
List<BomNewPbomParentFormalVO> bomDetailList(Long bomRowId) {
|
List<BomNewPbomParentFormalVO> bomDetailList(Long bomRowId) {
|
||||||
List<BomNewPbomParentFormalVO> childList = SpringUtil.getBean(BomNewPbomParentFormalService.class).getParentChild(bomRowId);
|
List<BomNewPbomParentFormalVO> childList = SpringUtil.getBean(BomNewPbomParentFormalService.class).getParentChild(bomRowId);
|
||||||
PBomFormalTreeTask task = new PBomFormalTreeTask(childList);
|
if(CollUtil.isNotEmpty(childList)) {
|
||||||
ForkJoinPool pool = new ForkJoinPool();
|
PBomFormalTreeTask task = new PBomFormalTreeTask(childList);
|
||||||
ForkJoinTask<List<BomNewPbomParentFormalVO>> submit = pool.submit(task);
|
ForkJoinPool pool = new ForkJoinPool();
|
||||||
|
ForkJoinTask<List<BomNewPbomParentFormalVO>> submit = pool.submit(task);
|
||||||
|
|
||||||
List<BomNewPbomParentFormalVO> bomList = submit.join();
|
List<BomNewPbomParentFormalVO> bomList = submit.join();
|
||||||
initMaterialInfo(bomList);
|
initMaterialInfo(bomList);
|
||||||
return bomList;
|
return bomList;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -254,6 +257,9 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
|
|
||||||
List<BomNewPbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
List<BomNewPbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||||
|
|
||||||
|
if(CollUtil.isEmpty(bomList)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||||
}, bomList);
|
}, bomList);
|
||||||
|
|
||||||
|
|
@ -297,6 +303,10 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
|
|
||||||
|
|
||||||
List<BomNewPbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
List<BomNewPbomParentFormalVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||||
|
|
||||||
|
if(CollUtil.isEmpty(bomList)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||||
}, bomList);
|
}, bomList);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue