From 89ba5d49ce142f8ae96648f653609cf513876c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Sat, 11 May 2024 14:49:51 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=90=88=E5=B9=B6=E4=B8=80=E8=88=AC?= =?UTF-8?q?=E9=9B=B6=E9=83=A8=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/BomNewEbomChildEntity.java | 4 +- .../pojo/entity/BomNewEbomParentEntity.java | 2 +- .../bomnew/pojo/vo/BomNewEbomParentVO.java | 2 +- .../bomnew/pojo/vo/BomOriginalListVO.java | 3 ++ .../OriginalBomToEBomV2Convert.java | 40 ++++++++++++++++++- .../mapper/master/BomNewEbomChildMapper.xml | 2 +- .../mapper/master/BomNewEbomParentMapper.xml | 2 +- 7 files changed, 47 insertions(+), 8 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java index eed099c3..0cf6e179 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java @@ -197,8 +197,8 @@ public class BomNewEbomChildEntity implements Serializable { * 来源行ID(原始BOM中的行ID) */ @TableField(value = "source_row_id") - @ApiModelProperty(value = "来源行ID(原始BOM中的行ID)") - private Long sourceRowId; + @ApiModelProperty(value = "来源行ID(原始BOM中的行ID),多个以逗号隔开") + private String sourceRowId; /** * 备注 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java index 4c4124ea..7223ff50 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java @@ -223,7 +223,7 @@ public class BomNewEbomParentEntity implements Serializable { */ @TableField(value = "source_row_id") @ApiModelProperty(value = "来源行ID(原始BOM中的行ID)") - private Long sourceRowId; + private String sourceRowId; /** * 设计人员编码 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java index d049223c..9f4d0a78 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java @@ -163,7 +163,7 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable { * 来源行ID(原始BOM中的行ID) */ @ApiModelProperty(value = "来源行ID(原始BOM中的行ID)") - private Long sourceRowId; + private String sourceRowId; /** * 设计人员编码 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java index a57819b2..86cded01 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java @@ -189,6 +189,9 @@ public class BomOriginalListVO extends BaseMaterialVO { @ApiModelProperty(value = "原始单位-来自cad") private String materialOriginalUnit; + @ApiModelProperty("来源行ID,多个以逗号隔开") + private String sourceRowId; + public Integer getVirtualPartType() { if( drawingNo.contains(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getConMaterialName())){ return VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java index 3e1d64bd..d832505a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java @@ -97,6 +97,39 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { } + /** + * 合并一般零部件 + * @param list + * @return + */ + private List mergeCommonPartBOM(List list) { + + List result = new ArrayList(); + //子级中,一般零部件 + List commonPartList = list.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo()) && OriginalConstant.COMMON_MATERIAL_CATEGORY_CODE.equals(u.getMaterialCategoryCode())).collect(Collectors.toList()); + + Map> materialNoGroupMp =commonPartList.stream().collect(Collectors.groupingBy(BomOriginalListVO::getMaterialNo)); + for (Map.Entry> entry : materialNoGroupMp.entrySet()) { + List list1 = entry.getValue(); + BomOriginalListVO one = list1.get(0); + BigDecimal numResult = BigDecimal.ZERO; + BigDecimal totalWeightResult = BigDecimal.ZERO; + List rowIds=new ArrayList<>(); + for (BomOriginalListVO item : list1) { + numResult = NumberUtil.add(numResult, Objects.nonNull(item.getNum()) ? item.getNum() : BigDecimal.ZERO); + totalWeightResult = NumberUtil.add(totalWeightResult, item.getTotalWeight()); + rowIds.add(item.getRowId()); + } + one.setNum(numResult); + one.setTotalWeight(totalWeightResult); + one.setSourceRowId(StrUtil.join(",",rowIds) ); + result.add(one); + } + Set commonPartRowIds = commonPartList.stream().map(u -> u.getRowId()).collect(Collectors.toSet()); + result.addAll(list.stream().filter(u->!commonPartRowIds.contains(u.getRowId())).collect(Collectors.toList())); + return result; + } + /** * BOM-处理 @@ -108,6 +141,9 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { //子节点 List parentChild = bomDetail.stream().filter(u -> Objects.nonNull(u.getParentRowId()) && u.getParentRowId().equals(parentEnt.getBomRowId())).distinct().collect(Collectors.toList()); + //合并一般零部件 + mergeCommonPartBOM(parentChild); + BomNewEbomParentEntity oldEBom = ebomParentService.lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentEnt.getMaterialNo()).last(" order by current_version desc limit 1").one(); List oldParenChild = ebomChildService.getBaseMapper().getChildByMaterialNo(parentEnt.getMaterialNo()); //无Ebom时 @@ -324,7 +360,7 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { eBomParent.setSource(EBomSourceEnum.FROM_BOM.getValue()); eBomParent.setCurrentVersion(VersionUtil.getNextVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion()))); eBomParent.setConvertToEbomTime(LocalDateTime.now()); - eBomParent.setSourceRowId(parentEnt.getRowId()); + eBomParent.setSourceRowId(StrUtil.isNotBlank(parentEnt.getSourceRowId())?parentEnt.getSourceRowId(): parentEnt.getRowId().toString()); eBomParent.setLastVersionIs(1); eBomParent.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); //eBomParent.setModifyTime(LocalDateTime.now()); @@ -376,7 +412,7 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { childEntity.setParentRowId(parentRowId); childEntity.setIdentityNo(StrUtil.join("_", parentRowId.toString(), childEntity.getRowId())); childEntity.setModifyTime(LocalDateTime.now()); - childEntity.setSourceRowId(child.getRowId()); + childEntity.setSourceRowId(StrUtil.isNotBlank(child.getSourceRowId())?child.getSourceRowId(): child.getRowId().toString()); //当为原材料时,数量=总重 单位改为KG 图号=编码 // if((StrUtil.isNotBlank(childEntity.getMaterialCategoryCode())&& childEntity.getMaterialCategoryCode().startsWith("10") ) || (StrUtil.isNotBlank(childEntity.getMaterialNo()) && childEntity.getMaterialNo().startsWith("11"))){ // childEntity.setNum(childEntity.getTotalWeight()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomChildMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomChildMapper.xml index 18caca7e..aeca36de 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomChildMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomChildMapper.xml @@ -29,7 +29,7 @@ - + diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml index 4f79843d..0f37ca5c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml @@ -30,7 +30,7 @@ - +