From 2a982f0c45ba22f1810532fc04504a916bfb7764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 19 May 2024 10:13:25 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix(ebom):=20=E4=BC=98=E5=8C=96=E4=BB=8Eexc?= =?UTF-8?q?el=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/EBomImportService.java | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java index 89fb0c33..2e777592 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java @@ -1,7 +1,6 @@ package com.nflg.product.bomnew.service; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; @@ -305,33 +304,26 @@ public class EBomImportService { parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getParentMaterialNo())) .findFirst() .orElse(null); - if (Objects.isNull(parent) && datas.stream().noneMatch(d -> d.getMaterialNo().equals(data.getParentMaterialNo()))) { - parents.add(buildRoot(materialBaseInfos, data.getParentMaterialNo(), data.getParentMaterialDesc())); - } - } - for (EbomExcelDTO data : datas) { - parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getMaterialNo())) - .findFirst() - .orElse(null); if (Objects.isNull(parent)) { - parents.add(buildParent(materialBaseInfos, data)); + if (datas.stream().noneMatch(d -> d.getMaterialNo().equals(data.getParentMaterialNo()))) { + parents.add(buildRoot(materialBaseInfos, data.getParentMaterialNo(), data.getParentMaterialDesc())); + } else { + parents.add(buildParent(materialBaseInfos, data)); + } } } for (EbomExcelDTO data : datas) { - parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getMaterialNo())) - .findFirst() - .get(); - buildChild(children, materialBaseInfos, parent, data + buildChild(children, materialBaseInfos, data , parents.stream().filter(p -> p.getMaterialNo().equals(data.getParentMaterialNo())).findFirst().get()); } return Pair.of(parents, children); } - private void buildChild(List children, List materialBaseInfos, BomNewEbomParentEntity parent, EbomExcelDTO data, BomNewEbomParentEntity p) { - BomNewEbomChildEntity child = Convert.convert(BomNewEbomChildEntity.class, parent); + private void buildChild(List children, List materialBaseInfos, EbomExcelDTO data, BomNewEbomParentEntity p) { + BomNewEbomChildEntity child = new BomNewEbomChildEntity(); child.setRowId(IdWorker.getId()); child.setParentRowId(p.getRowId()); - parent.setOrderNumber(""); + child.setMaterialNo(data.getMaterialNo()); List pcs = children.stream() .filter(c -> Objects.equals(c.getParentRowId(), p.getRowId())) .collect(Collectors.toList()); @@ -341,11 +333,19 @@ public class EBomImportService { String maxOrderNum = pcs.get(pcs.size() - 1).getOrderNumber(); child.setOrderNumber(OrderNoUtil.next(maxOrderNum)); } - child.setDrawingNo(parent.getDrawingNo()); - child.setMaterialDesc(parent.getMaterialDesc()); - child.setUnitWeight(parent.getUnitWeight()); - child.setMaterialUnit(data.getUnit()); - child.setMaterialOriginalUnit(parent.getMaterialOriginalUnit()); + BaseMaterialVO vo = materialBaseInfos.stream() + .filter(m -> m.getMaterialNo().equals(child.getMaterialNo())) + .findFirst() + .orElse(null); + if (!Objects.isNull(vo)) { + child.setMaterialCategoryCode(vo.getMaterialCategoryCode()); + child.setDrawingNo(vo.getDrawingNo()); + child.setUnitWeight(vo.getMaterialWeight()); + child.setMaterialUnit(vo.getMaterialUnit()); + child.setMaterialTexture(vo.getMaterialTexture()); + } + child.setMaterialDesc(data.getMaterialDesc()); + child.setMaterialOriginalUnit(data.getUnit()); child.setNum(data.getNum()); child.setRemark(data.getRemark()); child.setTotalWeight(BomUtil.calculateTotalWeight(child.getNum(), child.getUnitWeight())); @@ -355,13 +355,11 @@ public class EBomImportService { if (p.getMaterialNo().startsWith("31")) { child.setVirtualPartRootMaterialNo(p.getMaterialNo()); } - BaseMaterialVO vo = materialBaseInfos.stream() - .filter(m -> m.getMaterialNo().equals(child.getMaterialNo())) - .findFirst() - .orElse(null); - if (!Objects.isNull(vo)) { - child.setMaterialCategoryCode(vo.getMaterialCategoryCode()); - } + child.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); + child.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue()); + child.setCreatedBy(SessionUtil.getUserCode()); + child.setRemark(data.getRemark()); + child.setSource(EBomSourceEnum.FROM_EXCE.getValue()); setVirtualPackageType(child); children.add(child); } @@ -371,10 +369,10 @@ public class EBomImportService { parent.setRowId(IdWorker.getId()); parent.setCurrentVersion(OriginalConstant.DEFAULT_BOM_VERSION); - parent.setMaterialNo(data.getMaterialNo()); - parent.setMaterialDesc(data.getMaterialDesc()); + parent.setMaterialNo(data.getParentMaterialNo()); + parent.setMaterialDesc(data.getParentMaterialDesc()); BaseMaterialVO vo = materialBaseInfos.stream() - .filter(m -> m.getMaterialNo().equals(data.getMaterialNo())) + .filter(m -> m.getMaterialNo().equals(data.getParentMaterialNo())) .findFirst() .orElse(null); if (!Objects.isNull(vo)) { @@ -382,12 +380,12 @@ public class EBomImportService { parent.setUnitWeight(vo.getMaterialWeight()); parent.setMaterialName(vo.getMaterialName()); parent.setMaterialTexture(vo.getMaterialTexture()); - parent.setMaterialUnit(vo.getMaterialUnit()); - if (StrUtil.isBlank(data.getMaterialDesc())) { + if (StrUtil.isBlank(data.getParentMaterialDesc())) { parent.setMaterialDesc(vo.getMaterialDesc()); } + parent.setMaterialUnit(vo.getMaterialUnit()); + parent.setMaterialOriginalUnit(vo.getMaterialUnit()); } - parent.setMaterialOriginalUnit(data.getUnit()); parent.setNum(BigDecimal.ONE); parent.setTotalWeight(null); parent.setUserRootIs(0); @@ -411,7 +409,7 @@ public class EBomImportService { parent.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue()); parent.setCreatedBy(SessionUtil.getUserCode()); parent.setRemark(""); - parent.setOrderNumber(data.getOrderNum()); + //parent.setOrderNumber(data.getOrderNum()); parent.setDeptName(SessionUtil.getDepartName()); parent.setSource(EBomSourceEnum.FROM_EXCE.getValue()); parent.setSourceRowId(""); From bb56ba1b0c194360cac56c304fffe2497625a9b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 20 May 2024 09:58:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix(ebom):=20=E4=BC=98=E5=8C=96=E4=BB=8Eexc?= =?UTF-8?q?el=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nflg/product/bomnew/api/user/EbomV2Api.java | 3 +-- .../com/nflg/product/bomnew/service/EBomImportService.java | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java index 906ef9cd..ff509b2c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java @@ -76,8 +76,7 @@ public class EbomV2Api extends BaseApi { @ApiOperation("从excel导入数据") @PostMapping("importBom") @Transactional(rollbackFor = Exception.class) - @LogRecord(success = "原始BOM-导入:文件名:{{#fileNme}},操作结果:{{#_ret}}", - bizNo = "", type = "原始BOM导入") + @LogRecord(success = "EBOM-导入:文件名:{{#fileNme}},操作结果:{{#_ret}}", bizNo = "", type = "EBOM导入") public ResultVO> importBom(@RequestParam(value = "file") MultipartFile file) throws Exception { if (file != null && !file.getOriginalFilename().endsWith("xls") && !file.getOriginalFilename().endsWith("xlsx")) { return ResultVO.error("请上传Excel文件"); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java index 2e777592..66301957 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/EBomImportService.java @@ -333,18 +333,22 @@ public class EBomImportService { String maxOrderNum = pcs.get(pcs.size() - 1).getOrderNumber(); child.setOrderNumber(OrderNoUtil.next(maxOrderNum)); } + child.setMaterialDesc(data.getMaterialDesc()); BaseMaterialVO vo = materialBaseInfos.stream() .filter(m -> m.getMaterialNo().equals(child.getMaterialNo())) .findFirst() .orElse(null); if (!Objects.isNull(vo)) { child.setMaterialCategoryCode(vo.getMaterialCategoryCode()); + child.setMaterialName(vo.getMaterialName()); child.setDrawingNo(vo.getDrawingNo()); child.setUnitWeight(vo.getMaterialWeight()); child.setMaterialUnit(vo.getMaterialUnit()); child.setMaterialTexture(vo.getMaterialTexture()); + if (StrUtil.isBlank(child.getMaterialDesc())) { + child.setMaterialDesc(vo.getMaterialDesc()); + } } - child.setMaterialDesc(data.getMaterialDesc()); child.setMaterialOriginalUnit(data.getUnit()); child.setNum(data.getNum()); child.setRemark(data.getRemark()); From 1055d24aba1890c7c7e5eadb89567451289b6727 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 20 May 2024 10:04:08 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix(ebom):=20=E4=BC=98=E5=8C=96=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/BomNewEbomParentService.java | 2 +- .../bomnew/service/domain/EBom/EBomEdit.java | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) 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 28d1c565..1a17381c 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 @@ -335,7 +335,7 @@ public class BomNewEbomParentService extends ServiceImpl parentChild = this.getBaseMapper().getParentChild(rowId); //排除项目类别的赋值 - materialMainService.intiMaterialInfoInPattern(parentChild, "^21 | ^31", EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); + materialMainService.intiMaterialInfoInPattern(parentChild, "^21 | ^31", EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT2); if (CollUtil.isNotEmpty(parentChild)) { List materialNos = parentChild.stream().map(BaseMaterialVO::getMaterialNo).filter(StrUtil::isNotBlank).collect(Collectors.toList()); if (CollUtil.isNotEmpty(materialNos)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java index ffe325ea..66bca524 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java @@ -3,10 +3,7 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.*; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -198,7 +195,7 @@ public class EBomEdit { EBomEdit.checkVirtualPackage(child); //新增数据 - if (child.getRowId() == null || child.getRowId().longValue() == 0) { + if (child.getRowId() == null || child.getRowId() == 0) { child.setRowId(IdWorker.getId()); child.setIdentityNo(StrUtil.join("_", parentEntity.getRowId(), child.getRowId())); child.setSource(source); @@ -207,7 +204,7 @@ public class EBomEdit { child.setSourceRowId(""); child.setParentRowId(parentEntity.getRowId()); if(StrUtil.isEmpty(child.getOrderNumber())){ - child.setOrderNumber("00"); + child.setOrderNumber("001"); } if (dto.getOpType() == 2) { child.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); @@ -218,6 +215,9 @@ public class EBomEdit { child.setProjectType(child.getProjectType().toUpperCase()); } if (StrUtil.equals(BomConstant.PROJECT_TYPE_TEMPORARY, child.getProjectType(), true)) { + String id = RandomUtil.randomNumbers(9); + child.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); + child.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); if (StrUtil.isBlank(child.getMaterialUnit())) { child.setMaterialUnit("PC"); } @@ -228,6 +228,9 @@ public class EBomEdit { child.setNum(BigDecimal.ONE); } } + if (parentEntity.getMaterialNo().startsWith("31")) { + child.setVirtualPartRootMaterialNo(parentEntity.getMaterialNo()); + } } From 53760502e81ca87429f2d32867aa860fd55612b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 20 May 2024 10:42:56 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix(ebom):=201=E3=80=8131=E7=A0=81=E4=B8=8B?= =?UTF-8?q?=E7=9A=84=E6=89=80=E6=9C=89=E7=89=A9=E6=96=99=E9=83=BD=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=99=9A=E6=8B=9F=E5=8C=85=E5=90=8E=E6=89=8D=E8=83=BD?= =?UTF-8?q?=E8=BD=ACpbom=202=E3=80=8131=E7=A0=81=E5=8F=AA=E8=83=BD?= =?UTF-8?q?=E7=94=9F=E6=88=901010=E7=9A=84pbom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewEbomParentService.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) 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 1a17381c..6bf3db91 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 @@ -838,11 +838,22 @@ public class BomNewEbomParentService extends ServiceImpl parents = this.getBaseMapper().selectBatchIds(paramDto.getBomRowIds()); - VUtils.isTure(paramDto.getFacCodes().contains("1020") && parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31"))) - .throwMessage("31码不能生成仙桃(1020)的pbom"); + // VUtils.isTure(paramDto.getFacCodes().contains("1020") && parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31"))) + // .throwMessage("31码不能生成仙桃(1020)的pbom"); - VUtils.isTure(parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31") && u.getVirtrualPackageEnum() <= 0)) - .throwMessage("31码须有虚拟包"); + // VUtils.isTure(parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31") && u.getVirtrualPackageEnum() <= 0)) + // .throwMessage("31码须有虚拟包"); + parents.forEach(p -> { + if (p.getMaterialNo().startsWith("31")) { + List errors = new ArrayList<>(); + if (ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, p.getRowId()) + .eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue()) + .exists()) { + errors.add(p.getMaterialNo() + "下还有未生成发货包的物料"); + } + VUtils.isTure(CollUtil.isNotEmpty(errors)).throwMessage(StrUtil.join("
", errors)); + } + }); //检查该版本是否已转换过该工厂的Pbom for (BomNewEbomParentEntity parent : parents){ List list = pBomParentService.lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()).eq(BomNewPbomParentEntity::getCurrentVersion, parent.getCurrentVersion()) @@ -864,7 +875,9 @@ public class BomNewEbomParentService extends ServiceImpl Date: Mon, 20 May 2024 17:05:43 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(pbom):=20=E4=BF=AE=E5=A4=8Dpbom?= =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E8=A1=A8=E5=AD=90=E7=BA=A7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=B1=95=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/service/BomNewPbomParentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6d216d38..71f265f4 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 @@ -264,7 +264,7 @@ public class BomNewPbomParentService extends ServiceImpl parent.getStatus(), BomNewPbomParentEntity::getLastVersionIs, 1) - .gt(PBomStatusEnum.PUBLISH.getValue() <= parent.getStatus(), BomNewPbomParentEntity::getStatus, PBomStatusEnum.PUBLISH.getValue()) + .ge(PBomStatusEnum.PUBLISH.getValue() <= parent.getStatus(), BomNewPbomParentEntity::getStatus, PBomStatusEnum.PUBLISH.getValue()) .list(); Map bomListMap= list.parallelStream()