From bc27a53800a27fdabba0a2ac28e603e31f9322e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 18 Dec 2023 18:11:26 +0800 Subject: [PATCH] =?UTF-8?q?1.ebom-=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/EbomApi.java | 10 +- .../bomnew/api/user/OriginalBomApi.java | 9 +- .../constant/VirtualPackageTypeEnum.java | 9 +- .../service/domain/EBom/EBomToPBom.java | 136 +++++++++++++++++- 4 files changed, 152 insertions(+), 12 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index b1ee0fe1..d0797059 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -17,6 +17,7 @@ import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; import com.nflg.product.bomnew.service.BomNewEbomParentService; import com.nflg.product.bomnew.service.BomNewOriginalParentService; import com.nflg.product.bomnew.service.MaterialMainService; +import com.nflg.product.bomnew.service.UserRoleService; import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageBase; import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageFor31; import com.nflg.product.bomnew.util.EecExcelUtil; @@ -61,6 +62,9 @@ public class EbomApi extends BaseApi { @Resource private MaterialMainService materialMainService; + @Resource + private UserRoleService userRoleService; + @PostMapping("workDetailsListByPage") @ApiOperation("Ebom-工作明细列表") @@ -102,8 +106,12 @@ public class EbomApi extends BaseApi { bomNewEbomParentService.generateVirtualPackage(paramDto); VUtils.isTure(true).throwMessage("请选择30开头的或200401类型的物料"); return ResultVO.success(true); + } - + @PostMapping("generateRolePost") + @ApiOperation("获取用户角色岗位") + public ResultVO> generateRolePost() { + return ResultVO.success(userRoleService.getUserPost()); } @PostMapping("convertToPBom") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java index 4f0c1029..a6bc1c8b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList; import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.base.core.exception.NflgBusinessException; +import com.nflg.product.bomnew.mapper.master.BomNewEbomChildMapper; import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO; import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; @@ -52,6 +53,9 @@ public class OriginalBomApi extends BaseApi { @Resource MaterialService materialService; + @Resource + BomNewEbomChildMapper bomNewEbomChildMapper; + @PostMapping("bomPage") @ApiOperation("原始BOM-列表") public ResultVO> bomPage(@RequestBody OriginalBomQuery query) { @@ -120,7 +124,10 @@ public class OriginalBomApi extends BaseApi { VUtils.isTure(CollUtil.isEmpty(bomRowIds)).throwMessage("请选择要转换的BOM"); VUtils.isTure(bomRowIds.size()>20).throwMessage("你选择的BOM数据大于20"); - return ResultVO.success(originalParentService.convertToEBom(bomRowIds)); + originalParentService.convertToEBom(bomRowIds); + //更新物料使用 + bomNewEbomChildMapper.updateEBomMaterialUse(); + return ResultVO.success(true); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java index 7cd0ebcb..70e50fec 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java @@ -8,15 +8,16 @@ import lombok.Getter; @Getter public enum VirtualPackageTypeEnum implements ValueEnum{ //1-发货包 2-制作包 4-直发包 8-发货前装配包 - DELIVERY_PACKAGE(1,"发货包","发货" ,"201101"), - MAKING_PACKAGE(2,"制作包","制作","201101"), - DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101"), - PRE_ASSEMBLY_PACKAGE(8,"发货前装配包","发货前装配","201201"); + DELIVERY_PACKAGE(1,"发货包","发货" ,"201101", ""), + MAKING_PACKAGE(2,"制作包","制作","201101",""), + DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101","F"), + PRE_ASSEMBLY_PACKAGE(8,"发货前装配包","发货前装配","201201","Z"); private final Integer value; private final String description; private final String conMaterialName; private final String materialCategoryCode; + private final String productTypeKey; public static Integer getAll(){ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index dcf945ff..94967dec 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -1,12 +1,14 @@ package com.nflg.product.bomnew.service.domain.EBom; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import lombok.Getter; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; /** @@ -19,12 +21,108 @@ public class EBomToPBom { private List allBomDetail; + private List result = new ArrayList<>(); + + + @Getter + private List parentResult = new ArrayList<>(); + + @Getter + private List childResult = new ArrayList<>(); + + private Map generateDrawingNoMap = new HashMap<>(); public EBomToPBom(BomNewEbomParentVO inParent, List inAllBomDetail) { this.parent = inParent; this.allBomDetail = inAllBomDetail; + + generateDrawingNo(allBomDetail, inParent.getRowId(), ""); + } + + + public void buildResult(){ + + parentResult=result.stream().filter(u->u.getBomRowId()>0).collect(Collectors.toList()); + parentResult.add(parent); + childResult=result; + + } + + /** + * 31項体层 + */ + private void handlerProjectFor31() { + + + for (BomNewEbomParentVO vo : allBomDetail) { + + if (vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) { + BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + if (Objects.nonNull(lastVirtualPackage)) { + vo.setParentRowId(lastVirtualPackage.getBomRowId()); + result.add(vo); + + } + continue; + } + if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { + BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + if (Objects.nonNull(lastVirtualPackage)) { + vo.setParentRowId(lastVirtualPackage.getBomRowId()); + result.add(vo); + } + continue; + } + result.add(vo); + } + } + + + /** + * 21项体层 + */ + private void handlerProjectFor21() { + + + for (BomNewEbomParentVO vo : allBomDetail) { + + if (vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) { + BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + if (Objects.nonNull(lastVirtualPackage)) { + vo.setParentRowId(lastVirtualPackage.getBomRowId()); + result.add(vo); + + } + continue; + } + if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { + BomNewEbomParentVO lastVirtualPackage = getVirtualPackageByName(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + if (Objects.nonNull(lastVirtualPackage)) { + vo.setParentRowId(lastVirtualPackage.getBomRowId()); + result.add(vo); + } + continue; + } + result.add(vo); + } + } + + private BomNewEbomParentVO getLastVirtualPackage(BomNewEbomParentVO vo, VirtualPackageTypeEnum virtualPackageTypeEnum) { + List zhiFaList = allBomDetail.stream().filter(u -> vo.getLevelNumber().compareTo(u.getLevelNumber()) > 0 && u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList()); + return Collections.max(zhiFaList, Comparator.comparing(BomNewEbomParentVO::getLevelNumber)); + + } + + + private BomNewEbomParentVO getVirtualPackageByName( VirtualPackageTypeEnum virtualPackageTypeEnum) { + List list = allBomDetail.stream().filter(u -> u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(list)){ + return list.get(0); + } + return null; + } @@ -42,11 +140,11 @@ public class EBomToPBom { for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) { String key = StrUtil.join("-", bomRowID.toString(), firstLevelBom.getMaterialNo()); if (generateDrawingNoMap.containsKey(key)) { - // firstLevelBom.setLevelNumber(generateDrawingNoMap.get(key)); + firstLevelBom.setLevelNumber(levelToNum(generateDrawingNoMap.get(key))); continue; } - - firstLevelBom.setDrawingNo(StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, gNo.toString()) : gNo.toString()); + String levelKey = StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, gNo.toString()) : gNo.toString(); + firstLevelBom.setLevelNumber(levelToNum(levelKey)); gNo++; generateDrawingNo(saveBomDetailParamDTO, firstLevelBom.getChildBomRowId(), firstLevelBom.getDrawingNo()); @@ -57,5 +155,31 @@ public class EBomToPBom { } + /** + * 转换层级号为数字 + * + * @param strLevel + * @return + */ + private BigDecimal levelToNum(String strLevel) { + if (StrUtil.isEmpty(strLevel)) { + return null; + } + if (strLevel.indexOf('-') == -1) { + return new BigDecimal(strLevel); + } + String[] fromArray = strLevel.split("-"); + String reuslt = ""; + for (int i = 0; i < fromArray.length; i++) { + if (i == 0) { + reuslt = fromArray[i] + '.'; + } else { + reuslt += StrUtil.padPre(fromArray[i], 2, '0'); + } + + } + return new BigDecimal(reuslt); + } + }