From 36d810252f61cbc8924318017da63f31e942a453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Thu, 18 Jan 2024 10:53:22 +0800 Subject: [PATCH] =?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 | 2 +- .../service/BomNewEbomParentService.java | 44 ++++++++++--------- .../service/BomNewPbomParentService.java | 14 +++--- 3 files changed, 32 insertions(+), 28 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 79557406..58d339eb 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 @@ -197,7 +197,7 @@ public class PBomApi extends BaseApi { public ResultVO convertToMBom(@RequestParam("bomRowId") Long bomRowId) throws ExecutionException, InterruptedException { BomNewPbomParentEntity parent = bomNewPbomParentService.getById(bomRowId); VUtils.isTure(!parent.getMaterialNo().startsWith("31")).throwMessage("只有31开头的物料才可以发布"); - VUtils.isTure(parent.getStatus()> PBomStatusEnum.PUBLISH.getValue()).throwMessage("只有已发布的BOM才能生成MBom"); + VUtils.isTure(parent.getStatus()< PBomStatusEnum.PUBLISH.getValue()).throwMessage("只有已发布的BOM才能生成MBom"); // VUtils.isTure(!parent.getFacCode().equals(EBomConstant.MAIN_FACTORY_CODE_1010)).throwMessage("只有1010工厂BOM才能进行分工厂"); return ResultVO.success(bomNewPbomParentService.convertToMBom(bomRowId)); 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 2cb26233..6b172bc5 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 @@ -681,31 +681,33 @@ public class BomNewEbomParentService extends ServiceImpl list = this.lambdaQuery().in(BomNewEbomParentEntity::getRowId, paramDTO.getBomRowIds()).list(); List notConvertToPbom = list.stream().filter(u -> u.getStatus() < EBomStatusEnum.PUBLISHED.getValue()).map(u -> u.getMaterialNo()).collect(Collectors.toList()); VUtils.isTure(CollUtil.isNotEmpty(notConvertToPbom)).throwMessage(StrUtil.join(",", notConvertToPbom) + "未转PBom,不能发起变更"); + List parentResult = new ArrayList<>(); List childResult = new ArrayList<>(); for (Long bomRowId : paramDTO.getBomRowIds()) { BomNewEbomParentEntity parent = this.getById(bomRowId); - List child = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list(); - - BomNewEbomParentEntity newParent = new BomNewEbomParentEntity(); - BeanUtil.copyProperties(parent, newParent); - newParent.setRowId(IdWorker.getId()); - newParent.setLastVersionIs(1); - newParent.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(parent.getCurrentVersion())); - newParent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_11.getValue()); - newParent.setChangeDesc(paramDTO.getChangeDesc()); - newParent.setNoticeNums(paramDTO.getNoticeNums()); - parent.setLastVersionIs(0); - parentResult.add(newParent); - parentResult.add(parent); - - - for (BomNewEbomChildEntity childEnt : child) { - BomNewEbomChildEntity newChild = new BomNewEbomChildEntity(); - BeanUtil.copyProperties(childEnt, newChild); - newChild.setRowId(IdWorker.getId()); - newChild.setParentRowId(newParent.getRowId()); - childResult.add(newChild); + List existEnt = this.lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parent.getMaterialNo()).lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).list(); + //含发布前版本则无需升级 + if(CollUtil.isEmpty(existEnt)) { + List child = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list(); + BomNewEbomParentEntity newParent = new BomNewEbomParentEntity(); + BeanUtil.copyProperties(parent, newParent); + newParent.setRowId(IdWorker.getId()); + newParent.setLastVersionIs(1); + newParent.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(parent.getCurrentVersion())); + newParent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_11.getValue()); + newParent.setChangeDesc(paramDTO.getChangeDesc()); + newParent.setNoticeNums(paramDTO.getNoticeNums()); + parent.setLastVersionIs(0); + parentResult.add(newParent); + parentResult.add(parent); + for (BomNewEbomChildEntity childEnt : child) { + BomNewEbomChildEntity newChild = new BomNewEbomChildEntity(); + BeanUtil.copyProperties(childEnt, newChild); + newChild.setRowId(IdWorker.getId()); + newChild.setParentRowId(newParent.getRowId()); + childResult.add(newChild); + } } } 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 8d782e58..7a4891f4 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 @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -556,16 +557,16 @@ public class BomNewPbomParentService extends ServiceImpl childrenVO = getAllBom(params.getBomRowId(), 0); + List childrenVO = getAllBom(params.getBomRowId(), 0,true); materialMainService.intiMaterialInfo(childrenVO, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); List relList = bomFactorySplitRuleService.lambdaQuery().eq(BomFactorySplitRuleEntity::getRuleGroupCode, params.getRuleGroupCode()).list(); StringBuilder relPattern = new StringBuilder(); List result = new ArrayList<>(); for (BomNewPbomParentVO child : childrenVO) { - if (StrUtil.isNotBlank(child.getProductionFactoryCode()) && ProductionFactoryCodeInputTypeEnum.MANUAL.equalsValue(child.getProductionFactoryCodeInputType())) { - continue; - } +// if (StrUtil.isNotBlank(child.getProductionFactoryCode()) && ProductionFactoryCodeInputTypeEnum.MANUAL.equalsValue(child.getProductionFactoryCodeInputType())) { +// continue; +// } for (BomFactorySplitRuleEntity role : relList) { Boolean match = true; if (StrUtil.isNotBlank(role.getMaterialCategoryCode())) { @@ -655,8 +656,9 @@ public class BomNewPbomParentService extends ServiceImpl child , String facCode){ - String zero ="1"+ StrUtil.padAfter("0", parentVO.getLevelNum().toString().split(".")[1].length(), "0"); - BigDecimal bNodeLevel = NumberUtil.add(parentVO.getLevelNumber(), new BigDecimal(1).divide(NumberUtil.div ( new BigDecimal(1) , new BigDecimal(zero))) ); + String[] numSplit = parentVO.getLevelNumber().toString().split("."); + String zero ="1"+ StrUtil.padAfter("0", (numSplit.length>1? numSplit[1].length():0), "0"); + BigDecimal bNodeLevel = NumberUtil.add(parentVO.getLevelNumber(),(NumberUtil.div ( new BigDecimal(1) , new BigDecimal(zero))) ); List subNodes = child.stream().filter(u -> u.getLevelNumber().compareTo(parentVO.getLevelNumber()) > 0 && u.getLevelNumber().compareTo(bNodeLevel) < 0).collect(Collectors.toList()); for (BomNewPbomParentVO node : subNodes) { node.setProductionFactoryCode(facCode);