From 3b83c06d3187b27254284e3be634b0fab04987b5 Mon Sep 17 00:00:00 2001 From: luoliming Date: Thu, 25 Jan 2024 23:08:28 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nflg/product/bomnew/service/MaterialService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java index 807fdcf0..f1e64d12 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java @@ -185,6 +185,7 @@ public class MaterialService { ma.setMaterialClass(0); ma.setProcessState(0); ma.setApplyUserCode(SessionUtil.getRealName()); + ma.setApplyDeptName(SessionUtil.getDepartName()); ma.setMaterialUnit("PC"); ma.setProcessState(10); if(StrUtil.isNotBlank(md.getProjectType())){ From daabfa09acd1545311867560c616f929fc095960 Mon Sep 17 00:00:00 2001 From: luoliming Date: Thu, 25 Jan 2024 23:38:20 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/PBom/TechnologyPackageParamBuilder.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java index e214e9bf..d7e0da44 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java @@ -136,6 +136,8 @@ public class TechnologyPackageParamBuilder { newBom.setDeptName(SessionUtil.getDepartName()); newBom.setCreatedBy(SessionUtil.getUserCode()); newBom.setCreatedTime(LocalDateTime.now()); + newBom.setTechnologyUserCode(SessionUtil.getUserCode()); + newBom.setTechnologyUserName(SessionUtil.getUserName()); newBom.setSourceRowId(0L); if(Objects.nonNull(oldBom)){ oldBom.setLastVersionIs(0); From 87c322a4c7b4ee6c7282273177490d7692823aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 26 Jan 2024 14:35:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/PBomApi.java | 6 + .../pojo/dto/PBomEditExportParamDTO.java | 21 ++ .../service/BomNewPbomParentService.java | 16 +- .../service/domain/PBom/ConvertToMBom.java | 140 ++++++++++---- .../domain/PBom/ConvertToMBom1010.java | 62 ++++++ .../domain/PBom/ConvertToMBom1020.java | 181 ++++++++++++++++++ .../domain/PBom/ConvertToMBomBase.java | 125 ++++++++++++ 7 files changed, 507 insertions(+), 44 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/PBomEditExportParamDTO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1010.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBomBase.java diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java index b3666354..69206f4c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java @@ -133,6 +133,12 @@ public class PBomApi extends BaseApi { bomNewPbomParentService.editExport(bomRowId,response); } + @PostMapping("editExportV2") + @ApiOperation("编辑-导出Excel(可选中导出)") + public void editExportV2(@RequestBody PBomEditExportParamDTO param, HttpServletResponse response) throws IOException { + bomNewPbomParentService.editExportV2(param,response); + } + @PostMapping("insertTechnologyPackage") @ApiOperation("编辑-插入工艺包") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/PBomEditExportParamDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/PBomEditExportParamDTO.java new file mode 100644 index 00000000..3a0ff1ad --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/PBomEditExportParamDTO.java @@ -0,0 +1,21 @@ +package com.nflg.product.bomnew.pojo.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * pbom 可选择导出 + */ +@Data +public class PBomEditExportParamDTO { + + @ApiModelProperty("bom版本行ID") + private Long bomRowId; + + @ApiModelProperty("需导出的行ID列表") + private List rowIds; + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index a01af36e..91a00337 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -377,6 +377,18 @@ public class BomNewPbomParentService extends ServiceImpl child = this.getChild(param.getBomRowId()); + if(CollUtil.isNotEmpty(param.getRowIds())){ + child=child.stream().filter(u->param.getRowIds().contains(u.getRowId())).collect(Collectors.toList()); + } + List result = Convert.toList(BomNewPbomEditExcelVO.class, child); + + new Workbook().addSheet(result).writeTo(response.getOutputStream()); + + } + /** * 创建工艺包 @@ -749,12 +761,12 @@ public class BomNewPbomParentService extends ServiceImpl noProductionFactoryCodeList = allChild.stream().filter(u -> StrUtil.isBlank(u.getProductionFactoryCode())).map(u -> u.getMaterialNo()).collect(Collectors.toList()); VUtils.isTure(CollUtil.isNotEmpty(noProductionFactoryCodeList)).throwMessage(StrUtil.join(",", noProductionFactoryCodeList) + "物料暂未分工厂,请分完工厂再进行发布"); ConvertToMBom convertToMBom = new ConvertToMBom(rootParent, allChild); - convertToMBom.convertToMBom(true, true); + convertToMBom.convertToMBomNew(true, true); if (CollUtil.isNotEmpty(convertToMBom.getMBomParentResult())) { mBomParentService.saveOrUpdateBatch(convertToMBom.getMBomParentResult()); } if (CollUtil.isNotEmpty(convertToMBom.getMBomDetailResult())) { - mBomDetailService.saveOrUpdateBatch(convertToMBom.getMBomDetailResult()); + mBomDetailService.saveBatch(convertToMBom.getMBomDetailResult()); } //将PBOM改为已发布 List bomRowIds = allChild.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java index ed5dc0e0..577e3c59 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java @@ -59,48 +59,113 @@ public class ConvertToMBom { List mBomDetailResult = new ArrayList<>(); - public ConvertToMBom(BomNewPbomParentEntity inRootParent, List inAllChild) { this.parent = inRootParent; this.allChild_1010 = Convert.toList(ConvertToMBomDTO.class, inAllChild); allChild_1020 = (List) ((ArrayList) allChild_1010).clone(); + } + + + + public void convertToMBomNew(Boolean g1010, Boolean g1020){ + if(g1010){ + ConvertToMBom1010 convertToMBom1010 =new ConvertToMBom1010(parent, allChild_1010); + convertToMBom1010.convertMBom(); + this.mBomParentResult.addAll(convertToMBom1010.mBomParentResult); + this.mBomDetailResult.addAll(convertToMBom1010.mBomDetailResult); + } + if(g1020){ + ConvertToMBom1020 convertToMBom1020 = new ConvertToMBom1020(parent, allChild_1020); + convertToMBom1020.convertMBom(); + this.mBomParentResult.addAll(convertToMBom1020.getMBomParentResult()); + this.mBomDetailResult.addAll(convertToMBom1020.getMBomDetailResult()); + } + + + + } + + + /** + * 初始化1020 + */ + private void initFacAllChild_1020() { + List firstLevelNodes = allChild_1020.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); + for (ConvertToMBomDTO firstLevelNode : firstLevelNodes) { + + firstLevelNode.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + + List firstChildNodes = allChild_1020.stream().filter(u -> u.getParentRowId().equals(firstLevelNode.getBomRowId())).collect(Collectors.toList()); + + for (ConvertToMBomDTO itemChild : firstChildNodes) { + + itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + } + } + + allChild_1020.forEach(k -> { + setDel(k, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + }); + } /** * 转换MBom */ - public void convertToMBom(Boolean convert1010 ,Boolean convert1020) { + public void convertToMBom(Boolean convert1010, Boolean convert1020) { //handler1010(); - if(convert1020) { + if (convert1020) { handler1020(); - buildMBom(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + buildMBomFor1020(); } - if(convert1010) { - buildMBom(EBomConstant.MAIN_FACTORY_CODE_1010); + if (convert1010) { + buildMBomFor1010(); } } + /** * 构建MBom明细 * * @param */ - private void buildMBom(String facCode) { + private void buildMBomFor1020() { + BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + //当10120 bom 内容为空时,不创建31 的Mbom + + List bomContent1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0) && u.getVirtualPartType().equals(0)).collect(Collectors.toList()); + if (CollUtil.isEmpty(bomContent1020)) { + return; + } + this.mBomParentResult.add(mBomParent); + List nodes1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()); + buildChildFor1020(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, nodes1020, mBomParent.getRowId()); + } + + private void buildMBomFor1010() { + BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.MAIN_FACTORY_CODE_1010); + this.mBomParentResult.add(mBomParent); + allChild_1010.forEach(u -> { + u.setRelParentRowId(u.getParentRowId()); + }); + buildChildFor1010(EBomConstant.MAIN_FACTORY_CODE_1010, allChild_1010, mBomParent.getRowId()); + } + + private BomNewMbomParentEntity buildMBomParent(String facCode) { BomNewMbomParentEntity mBomParent = new BomNewMbomParentEntity(); BeanUtil.copyProperties(parent, mBomParent); BomNewMbomParentEntity oldParent = SpringUtil.getBean(BomNewMbomParentService.class).lambdaQuery().eq(BomNewMbomParentEntity::getMaterialNo, parent.getMaterialNo()) .eq(BomNewMbomParentEntity::getLastVersionIs, 1).eq(BomNewMbomParentEntity::getFacCode, facCode).one(); if (Objects.nonNull(oldParent)) { - if(MBomConstantEnum.MBomStatusEnum.PUB_SAP.equalsValue(oldParent.getStatus()) ) { + if (MBomConstantEnum.MBomStatusEnum.PUB_SAP.equalsValue(oldParent.getStatus())) { mBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); oldParent.setLastVersionIs(0); this.mBomParentResult.add(oldParent); - } - else { + } else { SpringUtil.getBean(BomNewMbomDetailService.class).getBaseMapper().deleteByMap(ImmutableMap.of("bom_row_id", oldParent.getRowId())); SpringUtil.getBean(BomNewMbomParentService.class).getBaseMapper().deleteById(oldParent.getRowId()); mBomParent.setCurrentVersion(oldParent.getCurrentVersion()); @@ -116,25 +181,7 @@ public class ConvertToMBom { mBomParent.setSourceRowId(parent.getRowId()); mBomParent.setLastVersionIs(1); mBomParent.setStatus(MBomConstantEnum.MBomStatusEnum.UNPUB_SAP.getValue()); - //当10120 bom 内容为空时,不创建31 的Mbom - if(EBomConstant.XIAN_TAO_FACTORY_CODE_1020.equals(facCode) ){ - List bomContent1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0) && u.getVirtualPartType().equals(0)).collect(Collectors.toList()); - if(CollUtil.isEmpty(bomContent1020)){ - return; - } - } - - this.mBomParentResult.add(mBomParent); - - - //1010 不做处理 - // buildChild(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) ? allChildTreeList_1010 : allChildTreeList_1020, mBomParent.getRowId()); - allChild_1010.forEach(u->{ - u.setRelParentRowId(u.getParentRowId()); - }); - buildChild(facCode, EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) ? allChild_1010 : allChildTreeList_1020, mBomParent.getRowId()); - - + return mBomParent; } @@ -143,24 +190,33 @@ public class ConvertToMBom { * * @param allChild */ - private void buildChild(String facCode, List allChild, Long bomRowId) { + private void buildChildFor1020(String facCode, List allChild, Long bomRowId) { List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); - ; for (ConvertToMBomDTO item : childBomTree) { + for (ConvertToMBomDTO item : childBomTree) { //构建子级 if (item.getDelIs().equals(0)) { - buildMBomChildDo(facCode, item, 0L,bomRowId); + buildMBomChildDo(facCode, item, 0L, bomRowId); } } } - private void buildMBomChildDo(String facCode , ConvertToMBomDTO item , Long parentRowId ,Long bomRowId){ + private void buildChildFor1010(String facCode, List allChild, Long bomRowId) { + List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); + + for (ConvertToMBomDTO item : childBomTree) { + buildMBomChildDo(facCode, item, 0L, bomRowId); + } + + } + + private void buildMBomChildDo(String facCode, ConvertToMBomDTO item, Long parentRowId, Long bomRowId) { if (item.getDelIs().equals(0)) { - parentRowId = buildChildDo(facCode,item, bomRowId, parentRowId); + parentRowId = buildChildDo(facCode, item, bomRowId, parentRowId); } for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - buildMBomChildDo(facCode, itemChild, parentRowId,bomRowId); + buildMBomChildDo(facCode, itemChild, parentRowId, bomRowId); } } @@ -177,8 +233,10 @@ public class ConvertToMBom { for (ConvertToMBomDTO item : childBomTree) { if (VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(item.getVirtualPartType())) { List makeChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); + List zhifaChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); - if (CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()))) { + if ((CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()))) && + (CollUtil.isEmpty(zhifaChild) || CollUtil.isEmpty(zhifaChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList())))) { item.setRelParentRowId(0L); } } @@ -250,7 +308,7 @@ public class ConvertToMBom { item.setRelParentRowId(item.getParentRowId()); setDel(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); //非31下的直发包 - if(!item.getParentRowId().equals(parent.getRowId())) { + if (!item.getParentRowId().equals(parent.getRowId())) { ConvertToMBomDTO parentNode = getParent(item.getParentRowId(), EBomConstant.XIAN_TAO_FACTORY_CODE_1020); if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentNode.getVirtualPartType()) && parentNode.getRowId() != directDeliveryPackage.getRowId()) { handlerDirectDeliveryPackage(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020, directDeliveryPackage); @@ -265,8 +323,6 @@ public class ConvertToMBom { } - - /** * 处理直发包下的物料 * 所有直发包,归到31下的直发包 @@ -322,12 +378,12 @@ public class ConvertToMBom { for (ConvertToMBomDTO item : childBomTree) { item.setMaterialName(item.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); item.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - item.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + item.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - itemChild.setMaterialName(item.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); - itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + itemChild.setMaterialName(itemChild.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + itemChild.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1010.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1010.java new file mode 100644 index 00000000..5d008d2b --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1010.java @@ -0,0 +1,62 @@ +package com.nflg.product.bomnew.service.domain.PBom; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.google.common.collect.ImmutableMap; +import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.constant.EBomConstant; +import com.nflg.product.bomnew.constant.MBomConstantEnum; +import com.nflg.product.bomnew.pojo.entity.BomNewMbomDetailEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewMbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; +import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; +import com.nflg.product.bomnew.service.BomNewMbomDetailService; +import com.nflg.product.bomnew.service.BomNewMbomParentService; +import com.nflg.product.bomnew.util.VersionUtil; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class ConvertToMBom1010 extends ConvertToMBomBase { + + public ConvertToMBom1010(BomNewPbomParentEntity inRootParent, List inAllChild){ + this.parent = inRootParent; + this.allChild = inAllChild; + } + + public void convertMBom() { + BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.MAIN_FACTORY_CODE_1010); + this.mBomParentResult.add(mBomParent); + allChild.forEach(u -> { + u.setRelParentRowId(u.getParentRowId()); + u.setDelIs(0); + }); + buildChild(EBomConstant.MAIN_FACTORY_CODE_1010, allChild, mBomParent.getRowId()); + } + + + private void buildChild(String facCode, List allChild, Long bomRowId) { + List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); + for (ConvertToMBomDTO item : childBomTree) { + buildMBomChildDo(facCode, item, 0L, bomRowId); + } + + } + + + + + + + + + + + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java new file mode 100644 index 00000000..e309d52c --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java @@ -0,0 +1,181 @@ +package com.nflg.product.bomnew.service.domain.PBom; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.NumberUtil; +import com.nflg.product.bomnew.constant.EBomConstant; +import com.nflg.product.bomnew.constant.ProductionFactoryCodeInputTypeEnum; +import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; +import com.nflg.product.bomnew.pojo.entity.BomNewMbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; +import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; +import com.nflg.product.bomnew.util.VUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class ConvertToMBom1020 extends ConvertToMBomBase{ + + + private List allChildTreeList_1020 = new ArrayList<>(); + + public ConvertToMBom1020(BomNewPbomParentEntity inRootParent, List inAllChild){ + + this.parent = inRootParent; + this.allChild = inAllChild; + initFacAllChild(); + } + + private void initFacAllChild() { + List firstLevelNodes = allChild.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); + for (ConvertToMBomDTO firstLevelNode : firstLevelNodes) { + + firstLevelNode.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + + List firstChildNodes = allChild.stream().filter(u -> u.getParentRowId().equals(firstLevelNode.getBomRowId())).collect(Collectors.toList()); + + for (ConvertToMBomDTO itemChild : firstChildNodes) { + + itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + } + } + + allChild.forEach(k -> { + setDel(k, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + }); + + + } + public void convertMBom(){ + handlerBom(); + buildMBom(); + } + + private void buildMBom() { + BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + //当10120 bom 内容为空时,不创建31 的Mbom + + List bomContent1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0) && u.getVirtualPartType().equals(0)).collect(Collectors.toList()); + if (CollUtil.isEmpty(bomContent1020)) { + return; + } + this.mBomParentResult.add(mBomParent); + List nodes1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()); + buildChildFor(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, nodes1020, mBomParent.getRowId()); + } + + private void handlerBom() { + List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getParentRowId, ConvertToMBomDTO::getBomRowId); + //虚拟包名称加仙桃 + initFac1020Info(childBomTree); + + for (ConvertToMBomDTO item : childBomTree) { + + ConvertToMBomDTO directDeliveryPackage = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()).get(0); + VUtils.isTure(Objects.isNull(directDeliveryPackage)).throwMessage("发货包下,没有直发包"); + + recursionHandlerChild1020(item, directDeliveryPackage); + } + //处理制作包无下级的情况 + handEmptyMakePackage(childBomTree); + + } + + private void recursionHandlerChild1020(ConvertToMBomDTO item, ConvertToMBomDTO directDeliveryPackage) { + + + item.setRelParentRowId(item.getParentRowId()); + setDel(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + //非31下的直发包 + if (!item.getParentRowId().equals(parent.getRowId())) { + ConvertToMBomDTO parentNode = getParent(item.getParentRowId(), EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentNode.getVirtualPartType()) && parentNode.getRowId() != directDeliveryPackage.getRowId()) { + handlerDirectDeliveryPackage(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020, directDeliveryPackage); + } else { + handlerMaterial(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + } + } + this.allChildTreeList_1020.add(item); + for (ConvertToMBomDTO itemChild : item.getChildNodes()) { + recursionHandlerChild1020(itemChild, directDeliveryPackage); + } + } + + /** + * 处理直发包下的物料 + * 所有直发包,归到31下的直发包 + */ + private void handlerDirectDeliveryPackage(ConvertToMBomDTO childItem, String facCode, ConvertToMBomDTO directDeliveryPackage) { + if (!childItem.getParentRowId().equals(parent.getRowId())) { + ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode); + while (Objects.nonNull(relParent) && !VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(relParent.getVirtualPartType())) { + childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum())); + relParent = getParent(relParent.getParentRowId(), facCode); + } + childItem.setRelParentRowId(directDeliveryPackage.getBomRowId()); + } + } + + private void initFac1020Info(List childBomTree) { + + for (ConvertToMBomDTO item : childBomTree) { + item.setMaterialName(item.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); + item.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + + item.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); + for (ConvertToMBomDTO itemChild : item.getChildNodes()) { + itemChild.setMaterialName(itemChild.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); + itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + + itemChild.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); + } + } + } + + /** + * 处理一般材料(提层) + * + * @param childItem + * @param facCode + */ + private void handlerMaterial(ConvertToMBomDTO childItem, String facCode) { + if (!childItem.getParentRowId().equals(parent.getRowId())) { + ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode); + while (Objects.nonNull(relParent) && relParent.getDelIs().equals(1)) { + childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum())); + relParent = getParent(relParent.getParentRowId(), facCode); + } + childItem.setRelParentRowId(relParent.getBomRowId()); + } + + } + + /** + * 处理制作下为空的虚拟包 + * 当制作下子级为空时--删除该发货,制作,和直发 + * + * @param + */ + private void handEmptyMakePackage(List childBomTree) { + +// List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChildTreeList_1020, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); + for (ConvertToMBomDTO item : childBomTree) { + if (VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(item.getVirtualPartType())) { + List makeChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); + List zhifaChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); + + if ((CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()))) && + (CollUtil.isEmpty(zhifaChild) || CollUtil.isEmpty(zhifaChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList())))) { + item.setRelParentRowId(-1L); + } + } + + } + } + + + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBomBase.java new file mode 100644 index 00000000..3644e8c4 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBomBase.java @@ -0,0 +1,125 @@ +package com.nflg.product.bomnew.service.domain.PBom; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.google.common.collect.ImmutableMap; +import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.constant.EBomConstant; +import com.nflg.product.bomnew.constant.MBomConstantEnum; +import com.nflg.product.bomnew.pojo.entity.BomNewMbomDetailEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewMbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; +import com.nflg.product.bomnew.service.BomNewMbomDetailService; +import com.nflg.product.bomnew.service.BomNewMbomParentService; +import com.nflg.product.bomnew.util.VersionUtil; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class ConvertToMBomBase { + + + protected BomNewPbomParentEntity parent; + + protected List allChild; + + + @Getter + protected List mBomParentResult = new ArrayList<>(); + + @Getter + protected List mBomDetailResult = new ArrayList<>(); + + protected void buildChildFor(String facCode, List allChild, Long bomRowId) { + List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); + + for (ConvertToMBomDTO item : childBomTree) { + buildMBomChildDo(facCode, item, 0L, bomRowId); + } + + } + + protected void buildMBomChildDo(String facCode, ConvertToMBomDTO item, Long parentRowId, Long bomRowId) { + if (item.getDelIs().equals(0)) { + parentRowId = buildChildDo(facCode, item, bomRowId, parentRowId); + } + for (ConvertToMBomDTO itemChild : item.getChildNodes()) { + buildMBomChildDo(facCode, itemChild, parentRowId, bomRowId); + } + + } + + + + protected Long buildChildDo(String facCode, ConvertToMBomDTO dto, Long bomRowId, Long parentRowId) { + BomNewMbomDetailEntity child = new BomNewMbomDetailEntity(); + BeanUtil.copyProperties(dto, child); + child.setRowId(IdWorker.getId()); + child.setBomRowId(bomRowId); +// child.setFacCode(dto.getProductionFactoryCode()); + child.setFacCode(facCode); + child.setParentRowId(parentRowId); + child.setCreatedBy(SessionUtil.getUserCode()); + child.setCreatedTime(LocalDateTime.now()); + child.setModifyTime(LocalDateTime.now()); + child.setSourceRowId(dto.getRowId()); + this.mBomDetailResult.add(child); + return child.getRowId(); + + } + + protected BomNewMbomParentEntity buildMBomParent(String facCode) { + BomNewMbomParentEntity mBomParent = new BomNewMbomParentEntity(); + BeanUtil.copyProperties(parent, mBomParent); + BomNewMbomParentEntity oldParent = SpringUtil.getBean(BomNewMbomParentService.class).lambdaQuery().eq(BomNewMbomParentEntity::getMaterialNo, parent.getMaterialNo()) + .eq(BomNewMbomParentEntity::getLastVersionIs, 1).eq(BomNewMbomParentEntity::getFacCode, facCode).one(); + if (Objects.nonNull(oldParent)) { + if (MBomConstantEnum.MBomStatusEnum.PUB_SAP.equalsValue(oldParent.getStatus())) { + + mBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); + oldParent.setLastVersionIs(0); + this.mBomParentResult.add(oldParent); + } else { + SpringUtil.getBean(BomNewMbomDetailService.class).getBaseMapper().deleteByMap(ImmutableMap.of("bom_row_id", oldParent.getRowId())); + SpringUtil.getBean(BomNewMbomParentService.class).getBaseMapper().deleteById(oldParent.getRowId()); + mBomParent.setCurrentVersion(oldParent.getCurrentVersion()); + } + } else { + mBomParent.setCurrentVersion(VersionUtil.getNextVersion("")); + } + mBomParent.setRowId(IdWorker.getId()); + mBomParent.setFacCode(facCode); + mBomParent.setCreatedBy(SessionUtil.getUserCode()); + mBomParent.setCreatedTime(LocalDateTime.now()); + mBomParent.setModifyTime(LocalDateTime.now()); + mBomParent.setSourceRowId(parent.getRowId()); + mBomParent.setLastVersionIs(1); + mBomParent.setStatus(MBomConstantEnum.MBomStatusEnum.UNPUB_SAP.getValue()); + return mBomParent; + } + + protected void setDel(ConvertToMBomDTO item, String facCode) { + if (!item.getProductionFactoryCode().equals(facCode)) { + item.setDelIs(1); + } + } + + /** + * 获取父级 + * + * @param parentRowId + * @param facCode + * @return + */ + protected ConvertToMBomDTO getParent(Long parentRowId, String facCode) { + if (parentRowId <= 0) return null; + + return allChild.stream().filter(u -> parentRowId.equals(u.getBomRowId())).collect(Collectors.toList()).get(0); + } +} From 8ad11de234132eeb55d45a2985e9056f36024203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 26 Jan 2024 14:38:25 +0800 Subject: [PATCH 4/4] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewPbomParentService.java | 2 +- .../service/domain/PBom/ConvertToMBom.java | 304 +----------------- 2 files changed, 2 insertions(+), 304 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index 91a00337..7db5db01 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -807,7 +807,7 @@ public class BomNewPbomParentService extends ServiceImpl noProductionFactoryCodeList = allChild.stream().filter(u -> StrUtil.isBlank(u.getProductionFactoryCode())).map(u -> u.getMaterialNo()).collect(Collectors.toList()); VUtils.isTure(CollUtil.isNotEmpty(noProductionFactoryCodeList)).throwMessage(StrUtil.join(",", noProductionFactoryCodeList) + "物料暂未分工厂,请分完工厂再进行发布"); ConvertToMBom convertToMBom = new ConvertToMBom(rootParent, allChild); - convertToMBom.convertToMBom(false, true); + convertToMBom.convertToMBomNew(false, true); if (CollUtil.isNotEmpty(convertToMBom.getMBomParentResult())) { mBomParentService.saveOrUpdateBatch(convertToMBom.getMBomParentResult()); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java index 577e3c59..fa8f2a2e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom.java @@ -48,9 +48,7 @@ public class ConvertToMBom { private List allChild_1010; - private List allChildTreeList_1020 = new ArrayList<>(); - - private List allChildTreeList_1010 = new ArrayList(); + @Getter List mBomParentResult = new ArrayList<>(); @@ -87,305 +85,5 @@ public class ConvertToMBom { } - /** - * 初始化1020 - */ - private void initFacAllChild_1020() { - List firstLevelNodes = allChild_1020.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); - for (ConvertToMBomDTO firstLevelNode : firstLevelNodes) { - firstLevelNode.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - - List firstChildNodes = allChild_1020.stream().filter(u -> u.getParentRowId().equals(firstLevelNode.getBomRowId())).collect(Collectors.toList()); - - for (ConvertToMBomDTO itemChild : firstChildNodes) { - - itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - } - } - - allChild_1020.forEach(k -> { - setDel(k, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - }); - - - } - - /** - * 转换MBom - */ - public void convertToMBom(Boolean convert1010, Boolean convert1020) { - //handler1010(); - if (convert1020) { - handler1020(); - buildMBomFor1020(); - } - if (convert1010) { - buildMBomFor1010(); - } - - } - - - /** - * 构建MBom明细 - * - * @param - */ - private void buildMBomFor1020() { - BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - //当10120 bom 内容为空时,不创建31 的Mbom - - List bomContent1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0) && u.getVirtualPartType().equals(0)).collect(Collectors.toList()); - if (CollUtil.isEmpty(bomContent1020)) { - return; - } - this.mBomParentResult.add(mBomParent); - List nodes1020 = allChildTreeList_1020.stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()); - buildChildFor1020(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, nodes1020, mBomParent.getRowId()); - } - - private void buildMBomFor1010() { - BomNewMbomParentEntity mBomParent = buildMBomParent(EBomConstant.MAIN_FACTORY_CODE_1010); - this.mBomParentResult.add(mBomParent); - allChild_1010.forEach(u -> { - u.setRelParentRowId(u.getParentRowId()); - }); - buildChildFor1010(EBomConstant.MAIN_FACTORY_CODE_1010, allChild_1010, mBomParent.getRowId()); - } - - private BomNewMbomParentEntity buildMBomParent(String facCode) { - BomNewMbomParentEntity mBomParent = new BomNewMbomParentEntity(); - BeanUtil.copyProperties(parent, mBomParent); - BomNewMbomParentEntity oldParent = SpringUtil.getBean(BomNewMbomParentService.class).lambdaQuery().eq(BomNewMbomParentEntity::getMaterialNo, parent.getMaterialNo()) - .eq(BomNewMbomParentEntity::getLastVersionIs, 1).eq(BomNewMbomParentEntity::getFacCode, facCode).one(); - if (Objects.nonNull(oldParent)) { - if (MBomConstantEnum.MBomStatusEnum.PUB_SAP.equalsValue(oldParent.getStatus())) { - - mBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); - oldParent.setLastVersionIs(0); - this.mBomParentResult.add(oldParent); - } else { - SpringUtil.getBean(BomNewMbomDetailService.class).getBaseMapper().deleteByMap(ImmutableMap.of("bom_row_id", oldParent.getRowId())); - SpringUtil.getBean(BomNewMbomParentService.class).getBaseMapper().deleteById(oldParent.getRowId()); - mBomParent.setCurrentVersion(oldParent.getCurrentVersion()); - } - } else { - mBomParent.setCurrentVersion(VersionUtil.getNextVersion("")); - } - mBomParent.setRowId(IdWorker.getId()); - mBomParent.setFacCode(facCode); - mBomParent.setCreatedBy(SessionUtil.getUserCode()); - mBomParent.setCreatedTime(LocalDateTime.now()); - mBomParent.setModifyTime(LocalDateTime.now()); - mBomParent.setSourceRowId(parent.getRowId()); - mBomParent.setLastVersionIs(1); - mBomParent.setStatus(MBomConstantEnum.MBomStatusEnum.UNPUB_SAP.getValue()); - return mBomParent; - } - - - /** - * 构建子级 - * - * @param allChild - */ - private void buildChildFor1020(String facCode, List allChild, Long bomRowId) { - List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); - for (ConvertToMBomDTO item : childBomTree) { - //构建子级 - if (item.getDelIs().equals(0)) { - buildMBomChildDo(facCode, item, 0L, bomRowId); - } - - } - - } - - private void buildChildFor1010(String facCode, List allChild, Long bomRowId) { - List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); - - for (ConvertToMBomDTO item : childBomTree) { - buildMBomChildDo(facCode, item, 0L, bomRowId); - } - - } - - private void buildMBomChildDo(String facCode, ConvertToMBomDTO item, Long parentRowId, Long bomRowId) { - if (item.getDelIs().equals(0)) { - parentRowId = buildChildDo(facCode, item, bomRowId, parentRowId); - } - for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - buildMBomChildDo(facCode, itemChild, parentRowId, bomRowId); - } - - } - - /** - * 处理制作下为空的虚拟包 - * 当制作下子级为空时--删除该发货,制作,和直发 - * - * @param - */ - private void handEmptyMakePackage(List childBomTree) { - -// List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChildTreeList_1020, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId); - for (ConvertToMBomDTO item : childBomTree) { - if (VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(item.getVirtualPartType())) { - List makeChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); - List zhifaChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); - - if ((CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()))) && - (CollUtil.isEmpty(zhifaChild) || CollUtil.isEmpty(zhifaChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList())))) { - item.setRelParentRowId(0L); - } - } - - } - } - - private Long buildChildDo(String facCode, ConvertToMBomDTO dto, Long bomRowId, Long parentRowId) { - BomNewMbomDetailEntity child = new BomNewMbomDetailEntity(); - BeanUtil.copyProperties(dto, child); - child.setRowId(IdWorker.getId()); - child.setBomRowId(bomRowId); -// child.setFacCode(dto.getProductionFactoryCode()); - child.setFacCode(facCode); - child.setParentRowId(parentRowId); - child.setCreatedBy(SessionUtil.getUserCode()); - child.setCreatedTime(LocalDateTime.now()); - child.setModifyTime(LocalDateTime.now()); - child.setSourceRowId(dto.getRowId()); - this.mBomDetailResult.add(child); - return child.getRowId(); - - } - - - private void handler1010() { - - List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1010, ConvertToMBomDTO::getParentRowId, ConvertToMBomDTO::getBomRowId); - for (ConvertToMBomDTO item : childBomTree) { - //默认 - recursionHandlerChild1010(item); - } - } - - private void recursionHandlerChild1010(ConvertToMBomDTO item) { - - item.setRelParentRowId(item.getParentRowId()); - setDel(item, EBomConstant.MAIN_FACTORY_CODE_1010); - handlerMaterial(item, EBomConstant.MAIN_FACTORY_CODE_1010); - - this.allChildTreeList_1010.add(item); - for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - recursionHandlerChild1010(itemChild); - } - - } - - - private void handler1020() { - List childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1020, ConvertToMBomDTO::getParentRowId, ConvertToMBomDTO::getBomRowId); - //虚拟包名称加仙桃 - initFac1020Info(childBomTree); - - for (ConvertToMBomDTO item : childBomTree) { - - ConvertToMBomDTO directDeliveryPackage = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()).get(0); - VUtils.isTure(Objects.isNull(directDeliveryPackage)).throwMessage("发货包下,没有直发包"); - - recursionHandlerChild1020(item, directDeliveryPackage); - } - //处理制作包无下级的情况 - handEmptyMakePackage(childBomTree); - - } - - private void recursionHandlerChild1020(ConvertToMBomDTO item, ConvertToMBomDTO directDeliveryPackage) { - - - item.setRelParentRowId(item.getParentRowId()); - setDel(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - //非31下的直发包 - if (!item.getParentRowId().equals(parent.getRowId())) { - ConvertToMBomDTO parentNode = getParent(item.getParentRowId(), EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentNode.getVirtualPartType()) && parentNode.getRowId() != directDeliveryPackage.getRowId()) { - handlerDirectDeliveryPackage(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020, directDeliveryPackage); - } else { - handlerMaterial(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - } - } - this.allChildTreeList_1020.add(item); - for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - recursionHandlerChild1020(itemChild, directDeliveryPackage); - } - } - - - /** - * 处理直发包下的物料 - * 所有直发包,归到31下的直发包 - */ - private void handlerDirectDeliveryPackage(ConvertToMBomDTO childItem, String facCode, ConvertToMBomDTO directDeliveryPackage) { - if (!childItem.getParentRowId().equals(parent.getRowId())) { - ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode); - while (Objects.nonNull(relParent) && !VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(relParent.getVirtualPartType())) { - childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum())); - relParent = getParent(relParent.getParentRowId(), facCode); - } - childItem.setRelParentRowId(directDeliveryPackage.getBomRowId()); - } - } - - /** - * 处理一般材料(提层) - * - * @param childItem - * @param facCode - */ - private void handlerMaterial(ConvertToMBomDTO childItem, String facCode) { - if (!childItem.getParentRowId().equals(parent.getRowId())) { - ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode); - while (Objects.nonNull(relParent) && relParent.getDelIs().equals(1)) { - childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum())); - relParent = getParent(relParent.getParentRowId(), facCode); - } - childItem.setRelParentRowId(relParent.getBomRowId()); - } - - } - - private void setDel(ConvertToMBomDTO item, String facCode) { - if (!item.getProductionFactoryCode().equals(facCode)) { - item.setDelIs(1); - } - } - - //获取父节点 - private ConvertToMBomDTO getParent(Long parentRowId, String facCode) { - if (parentRowId <= 0) return null; - List data = EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) ? allChild_1010 : allChild_1020; - return data.stream().filter(u -> parentRowId.equals(u.getBomRowId())).collect(Collectors.toList()).get(0); - } - - - /** - * 1020-名称加仙桃 - */ - private void initFac1020Info(List childBomTree) { - - for (ConvertToMBomDTO item : childBomTree) { - item.setMaterialName(item.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); - item.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - - item.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); - for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - itemChild.setMaterialName(itemChild.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); - itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); - - itemChild.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); - } - } - } }