From 8591089de29d9c1114f1869a947969133e06711f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 26 Dec 2023 11:53:58 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/pojo/vo/BomOriginalListVO.java | 3 + .../service/BomNewEbomParentService.java | 3 +- .../service/BomNewOriginalParentService.java | 16 +++-- .../bomnew/service/MaterialMainService.java | 22 +++++-- .../OriginalBom/OriginalBomToEBomConvert.java | 61 +++++++++++-------- .../OriginalBom/PlmBomToOriginalConvert.java | 9 +++ 6 files changed, 79 insertions(+), 35 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java index dde4e3b4..f8527417 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java @@ -176,6 +176,9 @@ public class BomOriginalListVO extends BaseMaterialVO { @ApiModelProperty("是否删除 0-否 1-是") private Integer delIs=0; + @ApiModelProperty("转换后Ebom行ID") + private Long eBomRowId=0L; + 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 3a6c1e9d..f674bb95 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 @@ -224,7 +224,8 @@ public class BomNewEbomParentService extends ServiceImpl getChild(Long rowId) { BomNewEbomParentEntity parent = this.getBaseMapper().selectById(rowId); List parentChild = this.getBaseMapper().getParentChild(rowId); - materialMainService.intiMaterialInfo(parentChild); + //排除项目类别的赋值 + materialMainService.intiMaterialInfo(parentChild , "material","materialTexture","procureType"); if (CollUtil.isNotEmpty(parentChild)) { List materialNos = parentChild.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); if (CollUtil.isNotEmpty(materialNos)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java index 490a0ee0..c510c801 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.config.SpringContextUtils; @@ -365,10 +366,11 @@ public class BomNewOriginalParentService extends ServiceImpl bomAllChildList = this.getBomTree(parent.getRowId()); - - OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parent, bomAllChildList); + BomOriginalListVO parentVO = Convert.convert(BomOriginalListVO.class, parent); + parentVO.setEBomRowId(eBomRowId); + OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parentVO, bomAllChildList); convert.convert(); @@ -431,6 +434,9 @@ public class BomNewOriginalParentService extends ServiceImpl noMaterialNoList = excelContext.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + materialMainService.initMaterialForDrawdingNo(noMaterialNoList,BomNewOriginalExcelDTO::getChartNo,BomNewOriginalExcelDTO::setMaterialNo,BomNewOriginalExcelDTO::setMaterialName); + //转换 for (BomNewOriginalExcelDTO data : excelContext) { PlmBomToOriginalConvert convert = new PlmBomToOriginalConvert(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java index 995418ba..8b3fb0da 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java @@ -79,6 +79,19 @@ public class MaterialMainService extends ServiceImpl void intiMaterialInfo(List data , String ... ignorePropertyList) { + List materialNos = data.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(u -> u.getMaterialNo()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(materialNos)) { + List materialBaseInfos = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); + Map materialMp = ListCommonUtil.listToMap(materialBaseInfos, BaseMaterialVO::getMaterialNo); + for (T t : data) { + if (StrUtil.isNotBlank(t.getMaterialNo()) && materialMp.containsKey(t.getMaterialNo())) { + BeanUtil.copyProperties(materialMp.get(t.getMaterialNo()), t, ignorePropertyList); + } + } + } + } + public void initShouldBomExist(List list, Function getMaterialCategoryCodeFun, BiConsumer setShouldBomExistFun, Function getMaterialGetTypeFun) { @@ -119,7 +132,7 @@ public class MaterialMainService extends ServiceImpl */ public void initMaterialForDrawdingNo - (List list, Function getDrawingNoFun, BiConsumer... setFun) { + (List list, Function getDrawingNoFun, BiConsumer setMaterialNoFun, BiConsumer setMaterialNameFun) { List drawingNos = list.stream().map(getDrawingNoFun).collect(Collectors.toList()); if (CollUtil.isNotEmpty(drawingNos)) { List materialList = SpringUtil.getBean(MaterialMainMapper.class).getMaterialByDrawingNo(drawingNos); @@ -129,9 +142,10 @@ public class MaterialMainService extends ServiceImpl setFun1 : setFun) { - setFun1.accept(t, materialVO.getMaterialNo()); - } + + setMaterialNoFun.accept(t, materialVO.getMaterialNo()); + setMaterialNameFun.accept(t,materialVO.getMaterialName()); + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java index b19deace..dfca79fb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java @@ -57,20 +57,25 @@ public class OriginalBomToEBomConvert extends BaseConvert { List eBomChildResult = new ArrayList<>(); - public OriginalBomToEBomConvert(BomNewOriginalParentEntity inParent, List inBomDetail) { parent = Convert.convert(BomOriginalListVO.class, inParent); parent.setBomRowId(parent.getRowId()); bomDetail = inBomDetail; } + public OriginalBomToEBomConvert(BomOriginalListVO inParent, List inBomDetail) { + parent = inParent; + parent.setBomRowId(parent.getRowId()); + bomDetail = inBomDetail; + } + public void convert() { - //checkData(); + checkData(); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail); - SpringUtil.getBean(MaterialMainService.class).initShouldBomExist(bomDetail,BomOriginalListVO::getMaterialCategoryCode, BomOriginalListVO::setShouldBomExist,BomOriginalListVO::getMaterialGetType); + SpringUtil.getBean(MaterialMainService.class).initShouldBomExist(bomDetail, BomOriginalListVO::getMaterialCategoryCode, BomOriginalListVO::setShouldBomExist, BomOriginalListVO::getMaterialGetType); //处理父级 hanlerDo(parent); @@ -98,13 +103,13 @@ public class OriginalBomToEBomConvert extends BaseConvert { if (CollUtil.isNotEmpty(parentChild)) { //父级初化物料编码 - if(StrUtil.isNotBlank(parentEnt.getDrawingNo())) { + if (StrUtil.isNotBlank(parentEnt.getDrawingNo())) { SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(ImmutableList.of(parentEnt), BomOriginalListVO::getDrawingNo, BomOriginalListVO::setMaterialNo, BomOriginalListVO::setMaterialName); //子级初始化物料编码 SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(parentChildNoMaterilaNoList, BomOriginalListVO::getDrawingNo, BomOriginalListVO::setMaterialNo, BomOriginalListVO::setMaterialName); } //合并相同编码的物料 - // List mergeResult = mergeBOM(parentChild); + // List mergeResult = mergeBOM(parentChild); Long parentRowId = buildEBomParent(parentEnt); buildEBomChild(parentChild, parentRowId); } else { //无子级 @@ -140,18 +145,23 @@ public class OriginalBomToEBomConvert extends BaseConvert { if (CollUtil.isNotEmpty(materialBaseInfo)) { List oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEnt.getMaterialNo()); + BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt); //存在旧版本 - if(CollUtil.isNotEmpty(oldParenChild)) { - BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt); + if (CollUtil.isNotEmpty(oldParenChild)) { //结构是否相同 if (!isSameEBom(oldParenChild, ImmutableList.of(newChild))) { Long parentRowId = buildEBomParent(parentEnt); - newChild.setParentRowId(parentRowId); - this.eBomChildResult.add(newChild); + newChild.setParentRowId(parentRowId); + this.eBomChildResult.add(newChild); } - }} - } else { - buildEBomParent(parentEnt); + } else { + Long parentRowId = buildEBomParent(parentEnt); + newChild.setParentRowId(parentRowId); + this.eBomChildResult.add(newChild); + } + } + } else { + buildEBomParent(parentEnt); } } else { buildEBomParent(parentEnt); @@ -165,10 +175,11 @@ public class OriginalBomToEBomConvert extends BaseConvert { /** * 处理子级 + * * @param parentEntity * @param originalSourceEnum */ - private void handlerChild(BomOriginalListVO parentEntity , List parentChild, OriginalSourceEnum originalSourceEnum) { + private void handlerChild(BomOriginalListVO parentEntity, List parentChild, OriginalSourceEnum originalSourceEnum) { for (BomOriginalListVO childVo : parentChild) { //一般零部件 @@ -212,7 +223,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { childEntity.setUnitWeight(parent.getUnitWeight()); childEntity.setNum(parent.getUnitWeight()); childEntity.setCreatedBy(SessionUtil.getUserCode()); - // this.eBomChildResult.add(childEntity); + // this.eBomChildResult.add(childEntity); return childEntity; } @@ -224,8 +235,8 @@ public class OriginalBomToEBomConvert extends BaseConvert { BomNewEbomParentEntity ebom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentEnt.getMaterialNo()) .eq(BomNewEbomParentEntity::getLastVersionIs, 1).one(); BomNewEbomParentEntity eBomParent = new BomNewEbomParentEntity(); - BeanUtil.copyProperties(parentEnt, eBomParent,"materialGetType"); - eBomParent.setRowId(IdWorker.getId()); + BeanUtil.copyProperties(parentEnt, eBomParent, "materialGetType"); + eBomParent.setRowId(parentEnt.getEBomRowId()>0?parentEnt.getEBomRowId(): IdWorker.getId()); eBomParent.setSource(EBomSourceEnum.FROM_BOM.getValue()); eBomParent.setCurrentVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion())); eBomParent.setConvertToEbomTime(LocalDateTime.now()); @@ -233,10 +244,10 @@ public class OriginalBomToEBomConvert extends BaseConvert { eBomParent.setLastVersionIs(1); eBomParent.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); eBomParent.setModifyTime(LocalDateTime.now()); - eBomParent.setBomExist(parentEnt.getBomRowId()>0?1:0); + eBomParent.setBomExist(parentEnt.getBomRowId() > 0 ? 1 : 0); //工艺岗直接到已复核 - eBomParent.setStatus(SpringUtil.getBean(UserRoleService.class).technician()? EBomStatusEnum.CHECKED.getValue():EBomStatusEnum.WAIT_CHECK.getValue()); - eBomParent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician()?UserJobEnum.ENGINEER.getValue():UserJobEnum.DESIGNER.getValue()); + eBomParent.setStatus(SpringUtil.getBean(UserRoleService.class).technician() ? EBomStatusEnum.CHECKED.getValue() : EBomStatusEnum.WAIT_CHECK.getValue()); + eBomParent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue()); if (Objects.nonNull(ebom)) { ebom.setLastVersionIs(0); this.eBomParentResult.add(ebom); @@ -255,7 +266,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { for (BomOriginalListVO item : child) { BomNewEbomChildEntity childEntity = new BomNewEbomChildEntity(); - BeanUtil.copyProperties( item,childEntity,"materialGetType"); + BeanUtil.copyProperties(item, childEntity, "materialGetType"); childEntity.setRowId(IdWorker.getId()); childEntity.setParentRowId(parentRowId); childEntity.setIdentityNo(StrUtil.join("_", parentRowId.toString(), childEntity.getRowId())); @@ -276,11 +287,11 @@ public class OriginalBomToEBomConvert extends BaseConvert { for (Map.Entry> entry : mateiralNoMp.entrySet()) { List list1 = entry.getValue(); BomOriginalListVO one = list1.get(0); - Integer numResult=0; - BigDecimal totalWeightResult=BigDecimal.ZERO; + Integer numResult = 0; + BigDecimal totalWeightResult = BigDecimal.ZERO; for (BomOriginalListVO item : list1) { - numResult =Objects.nonNull(item.getNum()) ? item.getNum() : 0; - totalWeightResult=NumberUtil.add(totalWeightResult, item.getTotalWeight()); + numResult = Objects.nonNull(item.getNum()) ? item.getNum() : 0; + totalWeightResult = NumberUtil.add(totalWeightResult, item.getTotalWeight()); } one.setNum(numResult); one.setTotalWeight(totalWeightResult); @@ -297,7 +308,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { List materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); List materialNoInMain = materialBaseInfo.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); Set difference = Sets.difference(new HashSet<>(materialNos), new HashSet<>(materialNoInMain)); - VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "物料编码在主数据平台不存在"); + VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "物料编码在主数据平台不存在,请检查更正"); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java index 26da108e..ae9ae9fc 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java @@ -42,6 +42,15 @@ public class PlmBomToOriginalConvert extends BaseConvert { public void convertOriginalBom(BomOriginalCadParentEntity inParent) { childs = Convert.toList(BomOriginalPlmBomVO.class, SpringUtil.getBean(BomOriginalCadChildService.class).lambdaQuery().eq(BomOriginalCadChildEntity::getParentRowId, inParent.getRowId()).list()); parent = Convert.convert(BomOriginalPlmBomVO.class, inParent); + //图号-初始化缺编码的物料 + if(StrUtil.isBlank(parent.getMaterialNo())){ + SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(ImmutableList.of(parent) ,BomOriginalPlmBomVO::getDrawingNo,BomOriginalPlmBomVO::setMaterialNo,BomOriginalPlmBomVO::setMaterialName); + } + List noMaterialNoList = childs.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(noMaterialNoList)){ + SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(noMaterialNoList ,BomOriginalPlmBomVO::getDrawingNo,BomOriginalPlmBomVO::setMaterialNo,BomOriginalPlmBomVO::setMaterialName); + } + //初始化物料信息 SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(childs);