From f1f44b01bda365f37dbb3667292916d2508a1b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 11 Apr 2024 09:24:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20pbom=E5=88=A0=E9=99=A4=E5=B7=A5?= =?UTF-8?q?=E8=89=BA=E5=8C=85=E6=97=B6=EF=BC=8C=E5=B0=86=E5=85=B6=E4=B8=8B?= =?UTF-8?q?=E5=AD=90=E7=BA=A7=E6=8F=90=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/PBomApi.java | 8 +++-- .../bomnew/constant/MaterialMainConstant.java | 4 +++ .../mapper/master/BomNewPbomChildMapper.java | 4 +++ .../pojo/entity/BomNewPbomChildEntity.java | 16 ++++----- .../pojo/entity/BomNewPbomParentEntity.java | 17 ++++----- .../service/BomNewPbomChildService.java | 9 +++++ .../service/BomNewPbomParentService.java | 35 +++++++++++++++---- .../mapper/master/BomNewPbomChildMapper.xml | 18 ++++++++++ 8 files changed, 87 insertions(+), 24 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 4e8121f9..cbc41601 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 @@ -155,13 +155,17 @@ public class PBomApi extends BaseApi { return ResultVO.success(true); } + /** + * 删除 + * @param param 包含删除BOM所需信息的DTO(数据传输对象) + * @return data字段表示删除的bom中是否包含工艺包,包含工艺包时需要刷新列表数据(true为包含,false为不包含) + */ @PostMapping("editDel") @ApiOperation("编辑-删除") @LogRecord(success = "PBom-编辑-删除,物料编码:{{#bom.materialNo}}-版本:{{#bom.currentVersion}},操作结果:{{#_ret}}", bizNo = "{{#param.bomRowId}}",type = "PBom-编辑-删除") public ResultVO editDel(@Valid @RequestBody EditPBomDelDTO param){ VUtils.isTure(CollUtil.isEmpty(param.getRowIdList())).throwMessage("请选择要删除的数据行"); - bomNewPbomParentService.editDel(param); - return ResultVO.success(true); + return ResultVO.success(bomNewPbomParentService.editDel(param)); } @PostMapping("setVirtualPart") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/MaterialMainConstant.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/MaterialMainConstant.java index c78476a6..6694e9b5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/MaterialMainConstant.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/MaterialMainConstant.java @@ -8,4 +8,8 @@ public class MaterialMainConstant { public static final String MaterialNo_31="31"; + /* + * 工艺包类别编号 + */ + public static final String CATEGORYCODE_TECHNOLOGYPACKAGE = "201201"; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomChildMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomChildMapper.java index 91ac2598..91a3e5ea 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomChildMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomChildMapper.java @@ -23,4 +23,8 @@ public interface BomNewPbomChildMapper extends BaseMapper void delByParentRowId(@Param("parentRowId") Long parentRowId); void setProductionFactoryCode(@Param("productionFactoryCode")String productionFactoryCode, @Param("rowIds") List rowIds); + + List getChildrenByChildRowId(Long rowId); + + void setParentRowId(List rowIds, Long parentRowId); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomChildEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomChildEntity.java index 12c635d1..23b5dd8c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomChildEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomChildEntity.java @@ -1,19 +1,17 @@ package com.nflg.product.bomnew.pojo.entity; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; - import lombok.Data; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalDate; /** * t_bom_new_pbom_child @@ -148,6 +146,7 @@ public class BomNewPbomChildEntity implements Serializable { /** * 生产工厂设置方式 0-默认 1-规则匹配 2-手工 + * @see com.nflg.product.bomnew.constant.ProductionFactoryCodeInputTypeEnum */ @TableField(value = "production_factory_code_input_type") @ApiModelProperty("生产工厂设置方式 0-默认 1-规则匹配 2-手工") @@ -218,6 +217,7 @@ public class BomNewPbomChildEntity implements Serializable { /** * 0-非虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包 + * @see com.nflg.product.bomnew.constant.VirtualPackageTypeEnum */ @TableField(value = "virtual_part_type") @ApiModelProperty(value = "0-非虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java index 24b1f754..986638e5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java @@ -1,19 +1,17 @@ package com.nflg.product.bomnew.pojo.entity; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; - import lombok.Data; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalDate; /** * t_bom_new_pbom_parent @@ -169,6 +167,7 @@ public class BomNewPbomParentEntity implements Serializable { /** * 1=待处理、2=暂存 3=已处理 + * @see com.nflg.product.bomnew.constant.PBomEditStatusEnum */ @TableField(value = "edit_status") @ApiModelProperty(value = "1=待处理、2=暂存 3=已处理") @@ -176,6 +175,7 @@ public class BomNewPbomParentEntity implements Serializable { /** * BOM状态:1=待发布 2=待分配工厂 3=已分配工厂 4=已发布 + * @see com.nflg.product.bomnew.constant.PBomStatusEnum */ @TableField(value = "status") @ApiModelProperty(value = "BOM状态:1=待发布 4=已发布 8=待分配工厂 16=已分配工厂") @@ -247,6 +247,7 @@ public class BomNewPbomParentEntity implements Serializable { /** * 创建人员所属岗位 0-设计人员 1-工艺人员 2-其他 + * @see com.nflg.product.bomnew.constant.UserJobEnum */ @TableField(value = "created_job") @ApiModelProperty(value = "创建人员所属岗位 0-设计人员 1-工艺人员 2-其他") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomChildService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomChildService.java index 5fafa438..f37cd1f6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomChildService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomChildService.java @@ -6,6 +6,8 @@ import com.nflg.product.bomnew.mapper.master.BomNewPbomChildMapper; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import org.springframework.stereotype.Service; +import java.util.List; + /** * t_bom_new_pbom_child 表服务实现类 @@ -17,4 +19,11 @@ import org.springframework.stereotype.Service; @Service public class BomNewPbomChildService extends ServiceImpl { + public List getChildrenByChildRowId(Long rowId) { + return this.getBaseMapper().getChildrenByChildRowId(rowId); + } + + public void setParentRowId(List rowIds, Long parentRowId) { + this.getBaseMapper().setParentRowId(rowIds, parentRowId); + } } 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 93795834..95d71802 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 @@ -366,28 +366,51 @@ public class BomNewPbomParentService extends ServiceImpl childList = pbomChildService.getBaseMapper().selectBatchIds(paramDTO.getRowIdList()); List childListVO = Convert.toList(BomNewPbomParentVO.class, childList); - materialMainService.intiMaterialInfo(childListVO); + + // 判断是否是工艺包 + List technologypackages = childListVO.stream() + .filter(c -> MaterialMainConstant.CATEGORYCODE_TECHNOLOGYPACKAGE.equals(c.getMaterialCategoryCode())) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(technologypackages)) { + //将工艺包子级提层 + for (BomNewPbomParentVO t : technologypackages) { + //找出所有子级 + List cc = pbomChildService.getChildrenByChildRowId(t.getRowId()); + if (!cc.isEmpty()) { + hasTechnologypackage = true; + //将子级的父级id设置为工艺包的父级id + pbomChildService.setParentRowId(cc.stream().map(BomNewPbomChildEntity::getRowId).collect(Collectors.toList()), + t.getParentRowId()); + } + } + } + + materialMainService.intiMaterialInfo(ImmutableList.of(parentVO)); + // 机加工件 的子级可直接删除 if (parentVO.getMaterialCategoryCode().startsWith("200301")) { pbomChildService.getBaseMapper().delByRowId(paramDTO.getRowIdList()); - return; + return hasTechnologypackage; } //删除辅助物料 - List noDelList = childListVO.stream().filter(u -> !u.getMaterialCategoryCode().startsWith("1003") && !u.getMaterialCategoryCode().startsWith("1020") && !u.getMaterialCategoryCode().startsWith("1021")).collect(Collectors.toList()); + List noDelList = childListVO.stream() + .filter(u -> !u.getMaterialCategoryCode().startsWith("1003") && !u.getMaterialCategoryCode().startsWith("1020") && !u.getMaterialCategoryCode().startsWith("1021")) + .collect(Collectors.toList()); + noDelList.removeAll(technologypackages); VUtils.isTure(CollUtil.isNotEmpty(noDelList)).throwMessage("非机加工件的子级只能删除辅助物料"); pbomChildService.getBaseMapper().delByRowId(paramDTO.getRowIdList()); - + return hasTechnologypackage; } /** diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomChildMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomChildMapper.xml index a329b790..0fa4e758 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomChildMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomChildMapper.xml @@ -68,4 +68,22 @@ #{item} + + + +