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 1/3] =?UTF-8?q?1=E3=80=81=E5=90=88=E5=B9=B6=E4=B8=80?= =?UTF-8?q?=E8=88=AC=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 @@ - + From a411e7f8b5b663135d0f570f2286ec7b0415531e Mon Sep 17 00:00:00 2001 From: jing's Date: Sat, 11 May 2024 15:12:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?source=5Frow=5Fid=20=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 1e2d470c..10be5913 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 @@ -73,7 +73,7 @@ public class EBomEdit { parent.setCurrentVersion("A00"); parent.setDeviseName(SessionUtil.getRealName()); parent.setDeptName(SessionUtil.getDepartName()); - parent.setSourceRowId(0L); + parent.setSourceRowId("0"); parent.setSource(source); parent.setStatus(EBomStatusEnum.WAIT_CHECK.getValue()); parent.setNum(new BigDecimal(1)); @@ -201,7 +201,7 @@ public class EBomEdit { child.setSource(source); child.setCreatedTime(LocalDateTime.now()); child.setCreatedBy(SessionUtil.getUserCode()); - child.setSourceRowId(0L); + child.setSourceRowId("0"); child.setParentRowId(parentEntity.getRowId()); if(StrUtil.isEmpty(child.getOrderNumber())){ child.setOrderNumber("00"); From 92b57a06f0f0e92ff58268b64c48741ef030e924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sat, 11 May 2024 15:34:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(ebom):=20=E4=BF=AE=E6=94=B9source=5Frow?= =?UTF-8?q?=5Fid=E7=94=B1long=E5=8F=98=E4=B8=BAstring=E7=9A=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/EbomApi.java | 2 +- .../service/BomNewEbomParentService.java | 24 ++++++++++++------- .../bomnew/service/domain/EBom/EBomEdit.java | 4 ++-- .../service/domain/EBom/EBomToPBom.java | 4 ++-- .../domain/EBom/VirtualPackageBase.java | 2 +- .../OriginalBom/OriginalBomToEBomConvert.java | 2 +- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index 323a7164..5fbb0feb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -484,7 +484,7 @@ public class EbomApi extends BaseApi { */ @GetMapping("getSource") @ApiOperation("获取对应的原始bom") - public ResultVO getSource(@Valid @RequestParam("rowId") @NotNull Long rowId) { + public ResultVO> getSource(@Valid @RequestParam("rowId") @NotNull Long rowId) { return ResultVO.success(bomNewEbomParentService.getSource(rowId)); } } 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 61332f08..4effc2a9 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 @@ -2305,25 +2305,31 @@ public class BomNewEbomParentService extends ServiceImpl getSource(Long rowId) { VUtils.isTure(Objects.isNull(rowId) || rowId == 0).throwMessage("无效的数据"); BomNewEbomParentEntity parent = getById(rowId); if (!Objects.isNull(parent)) { - if (parent.getSourceRowId() != 0) { - BomNewOriginalParentEntity op = originalParentService.getById(parent.getSourceRowId()); - if (!Objects.isNull(op)) { - return Convert.convert(BomOriginalListVO.class, op); + if (StrUtil.isNotBlank(parent.getSourceRowId())) { + List rowIds = Arrays.stream(parent.getSourceRowId().split(",")).map(Long::valueOf).collect(Collectors.toList()); + List originals = originalParentService.lambdaQuery() + .in(BomNewOriginalParentEntity::getRowId, rowIds) + .list(); + if (CollUtil.isNotEmpty(originals)) { + return Convert.toList(BomOriginalListVO.class, originals); } } } else { BomNewEbomChildEntity child = ebomChildService.getById(rowId); if (!Objects.isNull(child)) { - if (child.getSourceRowId() != 0) { - BomNewOriginalChildEntity oc = originalChildService.getById(child.getSourceRowId()); - if (!Objects.isNull(oc)) { - return Convert.convert(BomOriginalListVO.class, oc); + if (StrUtil.isNotBlank(child.getSourceRowId())) { + List rowIds = Arrays.stream(child.getSourceRowId().split(",")).map(Long::valueOf).collect(Collectors.toList()); + List originals = originalChildService.lambdaQuery() + .in(BomNewOriginalChildEntity::getRowId, rowIds) + .list(); + if (CollUtil.isNotEmpty(originals)) { + return Convert.toList(BomOriginalListVO.class, originals); } } } 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 10be5913..aee621f3 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 @@ -73,7 +73,7 @@ public class EBomEdit { parent.setCurrentVersion("A00"); parent.setDeviseName(SessionUtil.getRealName()); parent.setDeptName(SessionUtil.getDepartName()); - parent.setSourceRowId("0"); + parent.setSourceRowId(""); parent.setSource(source); parent.setStatus(EBomStatusEnum.WAIT_CHECK.getValue()); parent.setNum(new BigDecimal(1)); @@ -201,7 +201,7 @@ public class EBomEdit { child.setSource(source); child.setCreatedTime(LocalDateTime.now()); child.setCreatedBy(SessionUtil.getUserCode()); - child.setSourceRowId("0"); + child.setSourceRowId(""); child.setParentRowId(parentEntity.getRowId()); if(StrUtil.isEmpty(child.getOrderNumber())){ child.setOrderNumber("00"); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index bade296c..147e5c55 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -200,7 +200,7 @@ public class EBomToPBom { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { liftingLayerSummary(lastVirtualPackage, vo); - vo.setSourceRowId(vo.getParentRowId()); + vo.setSourceRowId(String.valueOf(vo.getParentRowId())); vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId())); vo.setParentRowId(lastVirtualPackage.getBomRowId()); result.add(vo); @@ -215,7 +215,7 @@ public class EBomToPBom { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { liftingLayerSummary(lastVirtualPackage, vo); - vo.setSourceRowId(vo.getParentRowId()); + vo.setSourceRowId(String.valueOf(vo.getParentRowId())); vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId())); vo.setParentRowId(lastVirtualPackage.getBomRowId()); result.add(vo); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index 558d1d2a..eeca95b7 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -193,7 +193,7 @@ public abstract class VirtualPackageBase { parent.setBomExist(1); parent.setMaterialUnit("PC"); parent.setMaterialOriginalUnit("PC"); - parent.setSourceRowId(0L); + parent.setSourceRowId(""); parent.setLastVersionIs(1); parent.setNum(new BigDecimal(1)); parent.setDeviseUserCode(SessionUtil.getUserCode()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java index 73fe5526..e51275e1 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java @@ -323,7 +323,7 @@ public class OriginalBomToEBomConvert 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.getBomRowId()); + eBomParent.setSourceRowId(String.valueOf(parentEnt.getBomRowId())); eBomParent.setLastVersionIs(1); eBomParent.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); //eBomParent.setModifyTime(LocalDateTime.now());