From 29130e5d043ead848a5a9f955ac5b9342aa6803c Mon Sep 17 00:00:00 2001 From: 10002327 Date: Mon, 9 Sep 2024 14:44:44 +0800 Subject: [PATCH] =?UTF-8?q?BOM=E5=AE=8C=E6=95=B4=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=EF=BC=9B=E4=BB=99=E6=A1=83=E5=8F=91=E8=B4=A7=E5=8C=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=91=E8=B4=A7=E5=89=8D=E8=A3=85=E9=85=8D?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/PBomApi.java | 7 ++++ ...enerateVirtualPackageServiceFor31Impl.java | 34 +++++++++++++-- .../service/BomNewPbomParentService.java | 42 +++++++++++++++++++ 3 files changed, 79 insertions(+), 4 deletions(-) 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 cf3e1824..89ed62e8 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 @@ -431,5 +431,12 @@ public class PBomApi extends BaseApi { return ResultVO.success(ImmutableList.of(userFactory)); } + @GetMapping("checkBomExist") + @ApiOperation("BOM完整性检查") + public ResultVO> checkBomExist(@Valid @RequestParam("bomRowId") @NotNull Long bomRowId, + @Valid @RequestParam("type") @NotNull Integer type){ + return ResultVO.success(bomNewPbomParentService.checkBomExist(bomRowId,type)); + } + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java index 0a68788d..aeca6d59 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java @@ -6,8 +6,6 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.bomnew.client.MaterialMainClient; @@ -39,6 +37,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Collectors; @@ -200,8 +199,8 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew })); //对map的值,进行排序 List>> mpList = new ArrayList<>(chMap.entrySet()); - mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("") - .compareTo(Optional.of(c2).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("")))); + mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(m -> String.format("%s%s",m.getOrderNumber(),m.getDrawingNo().contains("仙桃)")?"2":"1")).orElse("") + .compareTo(Optional.of(c2).map(l->l.get(0)).map(m -> String.format("%s%s",m.getOrderNumber(),m.getDrawingNo().contains("仙桃)")?"2":"1")).orElse("")))); //对map值的集合按照 按发货-直发-制作的顺序排序 Function sortFn = (ent) -> { String num = "1"; @@ -222,6 +221,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew }; childrenForAdd.removeAll(childrenForAdd); mpList.forEach(m -> childrenForAdd.addAll(m.getValue().stream().sorted(Comparator.comparing(sortFn::apply)).collect(Collectors.toList()))); + //(发货)、(油漆) 对序号重新排序 by 10002327 240909 + List drawingNoList = childrenForAdd.stream().filter(c -> c.getDrawingNo().contains("(发货)") || c.getDrawingNo().contains("(油漆)")) + .map(BomNewEbomChildEntity::getDrawingNo).collect(Collectors.toList()); + childrenForAdd.forEach(c -> { + if(c.getDrawingNo().contains("(发货)") || c.getDrawingNo().contains("(油漆)")){ + c.setOrderNumber(StrUtil.padPre(String.valueOf(drawingNoList.indexOf(c.getDrawingNo()) + 1),3,"0")); + } + }); } try { @@ -318,6 +325,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, true); BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo); updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo); + + //处理发货前装配 by 10002327 240909 + oldDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, false); + newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, true); + updateParentVirtualPackage(oldDrawingNo, newDrawingNo); + updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo); + + //挂载物料 child.setParentRowId(zp.getRowId()); child.setModifyTime(LocalDateTime.now()); @@ -430,6 +445,12 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, false); BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo); updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo); + //处理发货前装配 by 10002327 240909 + oldDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, true); + newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, false); + updateParentVirtualPackage(oldDrawingNo, newDrawingNo); + updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo); + //挂载物料 child.setParentRowId(zp.getRowId()); child.setModifyTime(LocalDateTime.now()); @@ -479,6 +500,11 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew //直发包 BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001"); buildVirtualPackage(xp1, xc3); + + //仙桃工厂增加 装配包与制作包平级 1020工厂 by 10002327 240909 + BomNewEbomChildEntity xc4 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, "003"); + buildVirtualPackage(xp1, xc4); + } private void selectedAll(BomNewEbomParentEntity root, BomNewEbomChildEntity child, ChildListForGenerateVirtualPackageVO old) { 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 f0092424..b17fa29d 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 @@ -1963,4 +1963,46 @@ public class BomNewPbomParentService extends ServiceImpl checkBomExist(Long bomRowId, Integer type){ + List rList = Lists.newArrayList(); + + BomNewPbomParentEntity parent = this.getById(bomRowId); + VUtils.isTure(parent == null).throwMessage("该BOM不存在:" + bomRowId); + + checkChild(rList,parent,type,1,parent.getMaterialNo()); + return rList; + } + + private void checkChild(List rList,BomNewPbomParentEntity parent, Integer type,int currLevel,String currNos){ + List cList = getChild(parent,type); + List bomRowIdList = cList.stream().filter(c -> c.getBomRowId() > 0).map(BomNewPbomParentVO::getBomRowId).distinct().collect(Collectors.toList()); + List pList = Lists.newArrayList(); + Map pMap = Maps.newHashMap(); + //bomRowId不为空或0 表示还有下一级需要展开递归 + if(!bomRowIdList.isEmpty()){ + pList = this.listByIds(bomRowIdList); + pMap = pList.stream().collect(Collectors.toMap(BomNewPbomParentEntity::getRowId,Function.identity())); + } + Map finalPMap = pMap; + AtomicInteger finalCurrLevel = new AtomicInteger(currLevel); + cList.forEach(c -> { + if(StrUtil.equalsIgnoreCase(OriginalConstant.NO_BOM_VERSION,c.getCurrentVersion())){ + rList.add(currNos + " > " + c.getMaterialNo()); + } + //不为空则进行递归 currLevel < 200 不再递归判断为死循环 + if(finalPMap.get(c.getBomRowId()) != null && currLevel < 200){ + finalCurrLevel.getAndIncrement(); + checkChild(rList,finalPMap.get(c.getBomRowId()), finalCurrLevel.get(),type,currNos + " > " + finalPMap.get(c.getBomRowId()).getMaterialNo()); + } + }); + + } + + }