From 850c44a18b7a7558af8b30bcedc32321ec9415a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 26 Apr 2024 13:39:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=B5=E6=B0=94bom=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/constant/BomConstant.java | 4 ++- .../product/bomnew/pojo/vo/BomNewDQbomVO.java | 5 +-- .../product/bomnew/pojo/vo/DQbomExcelVO.java | 6 ++-- .../BomNewDQbomExceptionCheckService.java | 11 +++--- .../bomnew/service/DQBomImportService.java | 12 +++---- .../product/bomnew/service/DQBomService.java | 36 ++++++++++++++++--- 6 files changed, 53 insertions(+), 21 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java index 2c53a29f..04639454 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java @@ -9,5 +9,7 @@ public class BomConstant { public static final String SAP_YDBOM="1"; - public static final String NO_TEMPORARY_PREFIX = "T"; + public static final String PROJECT_TYPE_TEMPORARY = "T"; + + public static final String PROJECT_TYPE_TEMPORARY_MATERIAL_NO = "9000000000"; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java index d590cc73..99cfdf69 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java @@ -1,6 +1,7 @@ package com.nflg.product.bomnew.pojo.vo; import cn.hutool.core.util.StrUtil; +import com.nflg.product.bomnew.constant.BomConstant; import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -120,7 +121,7 @@ public class BomNewDQbomVO extends BomNewDQbomChildEntity implements Serializabl private String drawingNoDesc; public String getDrawingNoDesc() { - if (StrUtil.equals(getProjectType(), "T")) { + if (StrUtil.equals(getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) { return ""; } return getDrawingNo(); @@ -133,7 +134,7 @@ public class BomNewDQbomVO extends BomNewDQbomChildEntity implements Serializabl private String materialNoDesc; public String getMaterialNoDesc() { - if (StrUtil.equals(getProjectType(), "T")) { + if (StrUtil.equals(getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) { return ""; } return getMaterialNo(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java index c9ff2b2c..e3103c0e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java @@ -42,15 +42,15 @@ public class DQbomExcelVO extends BaseImportExcelDTO { @ExcelColumn("单位") private String materialUnit; + @ExcelColumn("重量") + private BigDecimal unitWeight; + @ExcelColumn("项目类别") private String projectType; @ExcelColumn("版本") private String currentVersion; - @ExcelColumn("单重") - private BigDecimal unitWeight; - @ExcelColumn("备注") private String remark; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewDQbomExceptionCheckService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewDQbomExceptionCheckService.java index f88c3514..16d7d209 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewDQbomExceptionCheckService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewDQbomExceptionCheckService.java @@ -3,6 +3,7 @@ package com.nflg.product.bomnew.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.nflg.product.bomnew.constant.BomConstant; import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum; import com.nflg.product.bomnew.constant.MaterialGetEnum; import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity; @@ -123,7 +124,9 @@ public class BomNewDQbomExceptionCheckService { private void checkParent(BomNewDQbomParentEntity parent) { EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK; if (parent.getRootIs() == 1 || parent.getUserRootIs() == 1) { - if ("T".equals(parent.getProjectType()) || "Q".equals(parent.getProjectType())) { + if (StrUtil.isBlank(parent.getProjectType())) { + status = EBomExceptionStatusEnum.EXCEPT_NO_8; + } else if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(parent.getProjectType()) || "Q".equals(parent.getProjectType())) { if (StrUtil.isBlank(parent.getMaterialName())) { status = EBomExceptionStatusEnum.EXCEPT_NO_4; } @@ -162,12 +165,12 @@ public class BomNewDQbomExceptionCheckService { private void checkChild(BomNewDQbomChildEntity child) { EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK; - if ("T".equals(child.getProjectType()) || "Q".equals(child.getProjectType())) { + if (StrUtil.isBlank(child.getProjectType())) { + status = EBomExceptionStatusEnum.EXCEPT_NO_8; + } else if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(child.getProjectType()) || "Q".equals(child.getProjectType())) { if (StrUtil.isBlank(child.getMaterialName())) { status = EBomExceptionStatusEnum.EXCEPT_NO_4; } - // } else if (child.getMaterialNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) { - // status = EBomExceptionStatusEnum.EXCEPT_NO_4; } else { BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(child.getMaterialNo())) .findFirst() diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java index bfefc610..a1cb81e1 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java @@ -169,7 +169,7 @@ public class DQBomImportService { .list(); isSame = cc.size() == oc.size() - && cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count() + && cc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() == oc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() && Sets.difference(cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet()), oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty(); //VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入"); @@ -218,7 +218,7 @@ public class DQBomImportService { Set ccm = cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet()); isSame = cc.size() == oc.size() - && cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count() + && cc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() == oc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() && Sets.difference(ccm, oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty(); //VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入"); @@ -379,10 +379,10 @@ public class DQBomImportService { log.debug("电气bom导入excel,第{}行,处理前:{}", rowNum.get(), JSON.toJSONString(dQbomExcelVO)); dQbomExcelVO.setRowNum(rowNum.get()); - if (dQbomExcelVO.getProjectType().equals("T")) { + if (dQbomExcelVO.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)) { String id = RandomUtil.randomNumbers(9); - dQbomExcelVO.setMaterialNo(BomConstant.NO_TEMPORARY_PREFIX + id); - dQbomExcelVO.setDrawingNo(BomConstant.NO_TEMPORARY_PREFIX + id); + dQbomExcelVO.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); + dQbomExcelVO.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); if (StrUtil.isBlank(dQbomExcelVO.getMaterialUnit())) { dQbomExcelVO.setMaterialUnit("PC"); } @@ -391,7 +391,7 @@ public class DQBomImportService { } } if (StrUtil.equals(dQbomExcelVO.getMaterialNo(), "9000000000")) { - dQbomExcelVO.setProjectType("T"); + dQbomExcelVO.setProjectType(BomConstant.PROJECT_TYPE_TEMPORARY); } dQbomExcelVO.setCurrentVersion(""); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java index 4859629c..8e571bab 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java @@ -257,16 +257,17 @@ public class DQBomService { } //处理child List children = Convert.toList(BomNewDQbomChildEntity.class, query.getChildren()); + List cps = new ArrayList<>(); for (int index = 0, count = children.size(); index < count; index++) { BomNewDQbomChildEntity c = children.get(index); if (Objects.isNull(c.getRowId()) || c.getRowId() == 0) { c.setRowId(IdWorker.getId()); c.setCreatedBy(SessionUtil.getUserCode()); c.setCreatedName(SessionUtil.getRealName()); - if (StrUtil.equals(c.getProjectType(), "T")) { + if (StrUtil.equals(c.getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) { String id = RandomUtil.randomNumbers(9); - c.setMaterialNo(BomConstant.NO_TEMPORARY_PREFIX + id); - c.setDrawingNo(BomConstant.NO_TEMPORARY_PREFIX + id); + c.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); + c.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY + id); if (Objects.isNull(c.getNum()) || NumberUtil.equals(c.getNum(), BigDecimal.ZERO)) { c.setNum(BigDecimal.ONE); } @@ -282,8 +283,21 @@ public class DQBomService { c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId()); c.setOrderNumber(StrUtil.padPre(String.valueOf(index + 1), 3, '0')); c.setTotalWeight(BomUtil.calculateTotalWeight(c.getNum(), query.getChildren().get(index).getUnitWeight())); + //处理parent + BomNewDQbomParentEntity cp = dQBomParentService.lambdaQuery() + .eq(BomNewDQbomParentEntity::getMaterialNo, c.getMaterialNo()) + .eq(BomNewDQbomParentEntity::getStatus, DQBomStatusEnum.WAIT_CONVERT.getValue()) + .one(); + if (!Objects.isNull(cp)) { + cp.setMaterialName(c.getMaterialName()); + cp.setUnitWeight(c.getUnitWeight()); + cp.setTotalWeight(BomUtil.calculateTotalWeight(cp.getNum(), cp.getUnitWeight())); + cp.setModifyTime(LocalDateTime.now()); + cps.add(cp); + } } dQBomChildService.saveBatch(children); + dQBomParentService.updateBatchById(cps); query.setChildren(Convert.toList(BomNewDQbomVO.class, children)); return query; } @@ -333,7 +347,14 @@ public class DQBomService { } public List exportBom(Long rootBomRowId) { - return Convert.toList(DQbomExcelVO.class, getAll(rootBomRowId)); + List datas = getAll(rootBomRowId); + datas.forEach(d -> { + if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(d.getProjectType())) { + d.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY_MATERIAL_NO); + d.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY_MATERIAL_NO); + } + }); + return Convert.toList(DQbomExcelVO.class, datas); } private List getAll(Long rootBomRowId) { @@ -376,10 +397,15 @@ public class DQBomService { T1DTO t1 = new T1DTO(); t1.setID(RandomUtil.randomNumbers(5)); t1.setMATNR(d.getParentMaterialNo()); - t1.setIDNRK(d.getMaterialNo()); t1.setMEINS(d.getMaterialUnit()); t1.setMENGE(d.getNum().toString()); t1.setPOSTP(d.getProjectType()); + if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(d.getProjectType())) { + t1.setIDNRK(""); + t1.setPOTX1(d.getMaterialName()); + } else { + t1.setIDNRK(d.getMaterialNo()); + } t1.setDATUM(dateYMD); t1s.add(t1); });