From 7e75008d88d79333c2b37cdf0cd4953f28364406 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 Nov 2024 10:38:19 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF?= =?UTF-8?q?=E3=80=91=E5=88=97=E8=A1=A8=E3=80=81=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../technology/api/ProcessRouteTaskApi.java | 34 +- .../mapper/master/MaterialMainMapper.java | 26 ++ .../mapper/master/ProcessRouteTaskMapper.java | 7 + .../pojo/entity/MaterialMainEntity.java | 395 ++++++++++++++++++ .../pojo/query/ProcessRouteTaskQuery.java | 45 ++ .../technology/pojo/vo/BaseMaterialVO.java | 66 +++ .../pojo/vo/ProcessRouteTaskAssemblyVO.java | 87 ++++ .../pojo/vo/ProcessRouteTaskProcessesVO.java | 114 +++++ .../pojo/vo/ProcessRouteTaskVO.java | 88 ++++ .../service/MaterialMainService.java | 82 ++++ .../service/ProcessRouteTaskService.java | 65 +++ .../technology/util/ListCommonUtil.java | 85 ++++ .../mapper/master/MaterialMainMapper.xml | 81 ++++ .../mapper/master/ProcessRouteTaskMapper.xml | 51 +++ 14 files changed, 1224 insertions(+), 2 deletions(-) create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/MaterialMainMapper.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/MaterialMainEntity.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/ProcessRouteTaskQuery.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BaseMaterialVO.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskAssemblyVO.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskProcessesVO.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskVO.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/MaterialMainService.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/ListCommonUtil.java create mode 100644 nflg_project_dev/nflg-technology/src/main/resources/mapper/master/MaterialMainMapper.xml diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java index 70e1d4c7..4fb53041 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java @@ -1,9 +1,15 @@ package com.nflg.product.technology.api; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.product.base.core.api.BaseApi; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery; +import com.nflg.product.technology.pojo.vo.ProcessRouteTaskVO; +import com.nflg.product.technology.service.ProcessRouteTaskService; +import nflg.product.common.vo.ResultVO; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; /** *

@@ -17,4 +23,28 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/processRouteTask") public class ProcessRouteTaskApi extends BaseApi { + @Resource + private ProcessRouteTaskService processRouteTaskService; + + /** + * 分页查询所有数据 + * + * @param query Query 查询实体 + * @return 所有数据 + */ + @PostMapping("page") + public ResultVO> selectAll(@RequestBody ProcessRouteTaskQuery query) { + return ResultVO.success(processRouteTaskService.selectPageByCondition(query)); + } + + /** + * 查看详情 + * @param rowId + * @return + */ + @PostMapping("detail/{rowId}") + public ResultVO detail(@PathVariable Long rowId) { + return ResultVO.success(processRouteTaskService.detail(rowId)); + } + } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/MaterialMainMapper.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/MaterialMainMapper.java new file mode 100644 index 00000000..05ceca14 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/MaterialMainMapper.java @@ -0,0 +1,26 @@ +package com.nflg.product.technology.mapper.master; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.product.technology.pojo.entity.MaterialMainEntity; +import com.nflg.product.technology.pojo.vo.BaseMaterialVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * t_material_main 表数据库访问层 + * 物料主数据表 + * + * @author makejava + * @since 2023-11-09 15:21:42 + */ +public interface MaterialMainMapper extends BaseMapper { + + /** + * 获取物料基本信息 + * @param materialNos + * @return + */ + List getMaterialBaseInfo(@Param("materialNos") List materialNos); + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskMapper.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskMapper.java index 2c601a76..822891dc 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskMapper.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskMapper.java @@ -1,7 +1,12 @@ package com.nflg.product.technology.mapper.master; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskEntity; +import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery; +import com.nflg.product.technology.pojo.vo.ProcessRouteTaskVO; +import org.apache.ibatis.annotations.Param; /** *

@@ -13,4 +18,6 @@ import com.nflg.product.technology.pojo.entity.ProcessRouteTaskEntity; */ public interface ProcessRouteTaskMapper extends BaseMapper { + IPage selectPageByCondition(Page page, @Param("query") ProcessRouteTaskQuery query); + } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/MaterialMainEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/MaterialMainEntity.java new file mode 100644 index 00000000..bd93a74b --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/MaterialMainEntity.java @@ -0,0 +1,395 @@ +package com.nflg.product.technology.pojo.entity; + +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 lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * t_material_main + * 物料主数据表 + * + * @author makejava + * @since 2023-11-09 15:22:20 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="com-nflg-product-bomnew-pojo-main-entity-MaterialMainEntity") +@TableName(value = "t_material_main") +public class MaterialMainEntity implements Serializable { + + /** + * 行ID 雪花 + */ + @TableId(value = "row_id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 物料编码 + */ + @TableField(value = "material_no") + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料名称 + */ + @TableField(value = "material_name") + @ApiModelProperty(value = "物料名称") + private String materialName; + + /** + * 物料描述 + */ + @TableField(value = "material_desc") + @ApiModelProperty(value = "物料描述") + private String materialDesc; + + /** + * 英文描述 + */ + @TableField(value = "material_desc_en") + @ApiModelProperty(value = "英文描述") + private String materialDescEn; + + /** + * 物料描述(简写) + */ + @TableField(value = "short_material_desc") + @ApiModelProperty(value = "物料描述(简写)") + private String shortMaterialDesc; + + /** + * 物料规格 + */ + @TableField(value = "material_specifications") + @ApiModelProperty(value = "物料规格") + private String materialSpecifications; + + /** + * 物料分类编码 + */ + @TableField(value = "material_category_code") + @ApiModelProperty(value = "物料分类编码") + private String materialCategoryCode; + + /** + * 图号 + */ + @TableField(value = "drawing_no") + @ApiModelProperty(value = "图号") + private String drawingNo; + + /** + * 重量-kg + */ + @TableField(value = "material_weight") + @ApiModelProperty(value = "重量-kg") + private String materialWeight; + + /** + * 品牌 + */ + @TableField(value = "material_brand") + @ApiModelProperty(value = "品牌") + private String materialBrand; + + /** + * 基本计量单位 + */ + @TableField(value = "material_unit") + @ApiModelProperty(value = "基本计量单位") + private String materialUnit; + + /** + * 辅助单位 + */ + @TableField(value = "material_assist_unit") + @ApiModelProperty(value = "辅助单位") + private String materialAssistUnit; + + /** + * 该字段废除 + */ + @TableField(value = "reuse_state") + @ApiModelProperty(value = "该字段废除") + private Integer reuseState; + + /** + * 预估年使用量 + */ + @TableField(value = "use_of_year") + @ApiModelProperty(value = "预估年使用量") + private Integer useOfYear; + + /** + * 是否一次性使用物料 0:重复性使用物料;1:一次性使用物料 + */ + @TableField(value = "reuse_of_once_state") + @ApiModelProperty(value = "是否一次性使用物料 0:重复性使用物料;1:一次性使用物料") + private Integer reuseOfOnceState; + + /** + * 是否标准件:0:否 1:是 + */ + @TableField(value = "standard_state") + @ApiModelProperty(value = "是否标准件:0:否 1:是") + private Integer standardState; + + /** + * 物料类型:0:外购 1:自制 + */ + @TableField(value = "material_type") + @ApiModelProperty(value = "物料类型:0:外购 1:自制") + private Integer materialType; + + /** + * 备注 + */ + @TableField(value = "remark") + @ApiModelProperty(value = "备注") + private String remark; + + /** + * 材质 + */ + @TableField(value = "material_texture") + @ApiModelProperty(value = "材质") + private String materialTexture; + + /** + * 两年出库量 + */ + @TableField(value = "tow_year_lssl") + @ApiModelProperty(value = "两年出库量") + private BigDecimal towYearLssl; + + /** + * 四年出库量 + */ + @TableField(value = "four_year_lssl") + @ApiModelProperty(value = "四年出库量") + private BigDecimal fourYearLssl; + + /** + * 两年出库天次 + */ + @TableField(value = "tow_year_lssl_day") + @ApiModelProperty(value = "两年出库天次") + private Integer towYearLsslDay; + + /** + * 库存量 + */ + @TableField(value = "material_stock") + @ApiModelProperty(value = "库存量") + private BigDecimal materialStock; + + /** + * 最近采购价格 + */ + @TableField(value = "last_purchase_price") + @ApiModelProperty(value = "最近采购价格") + private BigDecimal lastPurchasePrice; + + /** + * 最近采购日期 + */ + @TableField(value = "last_purchase_date") + @ApiModelProperty(value = "最近采购日期") + private LocalDate lastPurchaseDate; + + /** + * 最近出库时间 + */ + @TableField(value = "last_out_warehouse_time") + @ApiModelProperty(value = "最近出库时间") + private LocalDateTime lastOutWarehouseTime; + + /** + * 订单保护价 + */ + @TableField(value = "order_protect_price") + @ApiModelProperty(value = "订单保护价") + private BigDecimal orderProtectPrice; + + /** + * 配件销售价 + */ + @TableField(value = "parts_sale_price") + @ApiModelProperty(value = "配件销售价") + private BigDecimal partsSalePrice; + + /** + * 物料状态 1:激活 2:禁止采购 3:售后专用 4:冻结 5:完全弃用 + */ + @TableField(value = "material_state") + @ApiModelProperty(value = "物料状态 1:激活 2:禁止采购 3:售后专用 4:冻结 5:完全弃用") + private Integer materialState; + + /** + * 流程状态:0:待提交 2:已驳回 5: 变更申请中 10:OA审核中 15:已审核 100: 历史正式物料(已审核) + */ + @TableField(value = "process_state") + @ApiModelProperty(value = "流程状态:0:待提交 2:已驳回 5: 变更申请中 10:OA审核中 15:已审核 100: 历史正式物料(已审核)") + private Integer processState; + + /** + * 驳回人 + */ + @TableField(value = "reject_user") + @ApiModelProperty(value = "驳回人") + private String rejectUser; + + /** + * 驳回原因 + */ + @TableField(value = "reject_resion") + @ApiModelProperty(value = "驳回原因") + private String rejectResion; + + /** + * 使用说明 + */ + @TableField(value = "use_remark") + @ApiModelProperty(value = "使用说明") + private String useRemark; + + /** + * 申请人(存中文名称) + */ + @TableField(value = "apply_user_code") + @ApiModelProperty(value = "申请人(存中文名称)") + private String applyUserCode; + + /** + * 申请部门 + */ + @TableField(value = "apply_dept_name") + @ApiModelProperty(value = "申请部门") + private String applyDeptName; + + /** + * 变更审请人 + */ + @TableField(value = "updated_by_user_code") + @ApiModelProperty(value = "变更审请人") + private String updatedByUserCode; + + /** + * 最近变更时间 + */ + @TableField(value = "last_apply_time") + @ApiModelProperty(value = "最近变更时间") + private LocalDateTime lastApplyTime; + + /** + * 替代物料 + */ + @TableField(value = "replace_material_no") + @ApiModelProperty(value = "替代物料") + private String replaceMaterialNo; + + /** + * 物料分类:0:非正式物料 1:正式物料 + */ + @TableField(value = "material_class") + @ApiModelProperty(value = "物料分类:0:非正式物料 1:正式物料") + private Integer materialClass; + + /** + * 是否使用类别通用外形图:0=不使用、1=使用 + */ + @TableField(value = "common_zero_file") + @ApiModelProperty(value = "是否使用类别通用外形图:0=不使用、1=使用") + private Integer commonZeroFile; + + /** + * 制作物料获取类型:1=自制、2=外协、3=采购 + */ + @TableField(value = "material_get_type") + @ApiModelProperty(value = "制作物料获取类型:1=自制、2=外协、3=采购") + private Integer materialGetType; + + /** + * 创建人 + */ + @TableField(value = "created_by") + @ApiModelProperty(value = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @TableField(value = "created_time") + @ApiModelProperty(value = "创建时间") + private LocalDateTime createdTime; + + /** + * 更新人 + */ + @TableField(value = "updated_by") + @ApiModelProperty(value = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @TableField(value = "updated_time") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + /** + * 对应OA 的行ID + */ + @TableField(value = "oa_row_id") + @ApiModelProperty(value = "对应OA 的行ID") + private Long oaRowId; + + /** + * 采购类型 + */ + @TableField(value = "procure_type") + @ApiModelProperty(value = "采购类型") + private String procureType; + + /** + * 项目类别(F、Q、L) + */ + @TableField(value = "project_type") + @ApiModelProperty(value = "项目类别(F、Q、L)") + private String projectType; + + /** + * 冻结计算起始日期 + */ + @TableField(value = "freeze_calc_start") + @ApiModelProperty(value = "冻结计算起始日期") + private LocalDate freezeCalcStart; + + /** + * 推荐度(0-5) + */ + @TableField(value = "recommend") + @ApiModelProperty(value = "推荐度(0-5)") + private Integer recommend; + + /** + * 物料分类 + */ + @TableField(exist = false) + private MaterialCategoryEntity materialCategory; + + private static final long serialVersionUID = 550851863623524865L; + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/ProcessRouteTaskQuery.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/ProcessRouteTaskQuery.java new file mode 100644 index 00000000..cd0cea51 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/ProcessRouteTaskQuery.java @@ -0,0 +1,45 @@ +package com.nflg.product.technology.pojo.query; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * + */ +@Data +@Accessors(chain = true) +public class ProcessRouteTaskQuery { + + private String createdTimeFrom; + + private String createdTimeTo; + + private String updatedTimeFrom; + + private String updatedTimeTo; + + private String materialNo; + + private List materialNoList; + + private String createdBy; + + private String updatedBy; + + private String factory; + + private Integer status; + + private Integer usefulness; + + private Integer delFlag; + + @ApiModelProperty(value = "设置每页显示条数") + private Long pageSize = 20L; + + @ApiModelProperty(value = "当前页") + private Long page = 1L; +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BaseMaterialVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BaseMaterialVO.java new file mode 100644 index 00000000..a2ec4f42 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BaseMaterialVO.java @@ -0,0 +1,66 @@ +package com.nflg.product.technology.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** +* +* @author 大米 +* @date 2023/11/9 15:03 +*/ +@Data +public class BaseMaterialVO { + + + @ApiModelProperty("物料主数据行ID") + private Long materialRowId; + + @ApiModelProperty("物料编码") + private String materialNo; + + @ApiModelProperty("物料名称") + private String materialName; + + @ApiModelProperty("物料描述") + private String materialDesc; + + @ApiModelProperty("物料分类编码") + private String materialCategoryCode; + + @ApiModelProperty("制作物料获取类型:1=自制、2=外协、3=采购") + private Integer materialGetType; + + @ApiModelProperty("项目类别(F、Q、L)") + private String projectType; + + @ApiModelProperty("采购类型") + private String procureType; + + @ApiModelProperty("物料状态 1:激活 2:禁止采购 3:售后专用 4:冻结 5:完全弃用") + private Integer materialState; + + @ApiModelProperty("图号") + protected String drawingNo; + + /** + * 材料 + */ + @ApiModelProperty(value = "材料") + private String material; + + @ApiModelProperty("材质") + private String materialTexture; + + @ApiModelProperty("物料大类别") + private String relCategoryCode; + @ApiModelProperty("物料分类编码名称") + private String categoryName; + + @ApiModelProperty("单位") + private String materialUnit; + @ApiModelProperty("单重") + private BigDecimal materialWeight; + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskAssemblyVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskAssemblyVO.java new file mode 100644 index 00000000..e173d393 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskAssemblyVO.java @@ -0,0 +1,87 @@ +package com.nflg.product.technology.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * 工艺路线-组件分配 + *

+ * + * @author 10001392 + * @since 2024-11-24 + */ +@Data +@Accessors(chain = true) +public class ProcessRouteTaskAssemblyVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long rowId; + + // 任务清单ID + private Long taskRowId; + + // 虚拟装配:0=false、1=true + private Integer virtualAssembly; + + // PBOM父行ID + private Long sourceRowId; + + // 层 + private Integer level; + + // 项目编号 + private String projectCode; + + // 组件 + private String materialNo; + + // 数量 + private BigDecimal num; + + // 排序字符串 + private String sapOrderNum; + + // 计量单位 + private String materialUnit; + + // 项目类别 + private String projectType; + + // 是否反冲:0=false、1=true + private Integer recoil; + + // 操作/活动 + private String processe; + + // BOM表头物料 + private String parentMaterialNo; + + // 有效起始日 + private LocalDateTime expireStartTime; + + // 有效至 + private LocalDateTime expireEndTime; + + // 删除标记:0=未删除、1=已删除 + private Integer delFlag; + + // 创建人 + private String createdBy; + + // 创建时间 + private LocalDateTime createdTime; + + // 更新人 + private String updatedBy; + + // 更新时间 + private LocalDateTime updatedTime; + + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskProcessesVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskProcessesVO.java new file mode 100644 index 00000000..bab155ad --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskProcessesVO.java @@ -0,0 +1,114 @@ +package com.nflg.product.technology.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * 工艺路线-工序 + *

+ * + * @author 10001392 + * @since 2024-11-24 + */ +@Data +@Accessors(chain = true) +public class ProcessRouteTaskProcessesVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long rowId; + + // 任务清单ID + private Long taskRowId; + + // 工序 + private String processe; + + // 工作中心 + private String workCenter; + + // 工厂编码 + private String factory; + + // 控制码 + private String controlCode; + + // 基本数量 + private Integer baseNum; + + // 工序的计量单位(默认为PC,不可以编辑) + private String materialUnit; + + // 有效起始日 + private LocalDateTime expireStartTime; + + // 有效至 + private LocalDateTime expireEndTime; + + // 活动类型 + private String twoActivityType; + + // 单位 + private String twoJobUnit; + + // 机器(填写工时) + private BigDecimal twoWorkHours; + + // 活动类型 + private String oneActivityType; + + // 单位 + private String oneJobUnit; + + // 人工(填写工时) + private BigDecimal oneWorkHours; + + // 活动类型 + private String threeActivityType; + + // 单位 + private String threeJobUnit; + + // 固定(填写工时) + private BigDecimal threeWorkHours; + + // 活动类型 + private String fourActivityType; + + // 单位 + private String fourJobUnit; + + // 可变(填写工时) + private BigDecimal fourWorkHours; + + // 活动类型 + private String nonActivityType; + + // 单位 + private String nonJobUnit; + + // 排产(填写工时) + private BigDecimal nonWorkHours; + + // 删除标记:0=未删除、1=已删除 + private Integer delFlag; + + // 创建人 + private String createdBy; + + // 创建时间 + private LocalDateTime createdTime; + + // 更新人 + private String updatedBy; + + // 更新时间 + private LocalDateTime updatedTime; + + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskVO.java new file mode 100644 index 00000000..15daa51e --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/ProcessRouteTaskVO.java @@ -0,0 +1,88 @@ +package com.nflg.product.technology.pojo.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 工艺路线-任务清单(抬头) + *

+ * + * @author 10001392 + * @since 2024-11-24 + */ +@Data +@Accessors(chain = true) +public class ProcessRouteTaskVO extends BaseMaterialVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long rowId; + + // 工艺路线编号 + private String taskCode; + + // 工厂编码 + private String factory; + +// // 物料编码 +// private String materialNo; + + // 任务清单描述 + private String description; + + // 用途:1=生产 2=工程/设计 3=万能 4=工厂维护 5=货物接收 51=货物接收模型 53=GR外部处理 6= 货物发放 9=物料检验 + private Integer usefulness; + + // 状态:1=生成的、2=对订单下达、3=对成本核算下达 + private Integer status; + + // 从批量 + private String fromBatch; + + // 到批量 + private String toBatch; + + // 有效起始日 + private LocalDateTime expireStartTime; + + // 有效至 + private LocalDateTime expireEndTime; + + // 删除标记:0=未删除、1=已删除 + private Integer delFlag; + + // 创建人 + private String createdBy; + + // 创建时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT-8") + private LocalDateTime createdTime; + + // 更新人 + private String updatedBy; + + // 更新时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT-8") + private LocalDateTime updatedTime; + + // 处理状态:1=修改中、2=暂存中、3=已完成 + private Integer handleState; + + // SAP导入状态:1=已导入、2=未导入、3=异常、4=已修改(未导入) + private Integer sapState; + + // 物料数据 start + // 物料数据 end + + // 工序列表 + private List processesVOList; + + // 组件分配列表 + private List assemblyVOList; +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/MaterialMainService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/MaterialMainService.java new file mode 100644 index 00000000..d81f2b9d --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/MaterialMainService.java @@ -0,0 +1,82 @@ +package com.nflg.product.technology.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.product.technology.mapper.master.MaterialMainMapper; +import com.nflg.product.technology.pojo.entity.MaterialMainEntity; +import com.nflg.product.technology.pojo.vo.BaseMaterialVO; +import com.nflg.product.technology.util.ListCommonUtil; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +/** + * t_material_main 表服务实现类 + * 物料主数据表 + * + * @author makejava + * @since 2023-11-09 15:21:42 + */ +@Service +public class MaterialMainService extends ServiceImpl { + /** + * 获取物料信息 + * + * @param materialNos + * @return + */ + public List getMaterialBaseInfo(@Param("materialNos") List materialNos) { + return this.getBaseMapper().getMaterialBaseInfo(materialNos); + + } + + /** + * 初始化物料基本信息 + * + * @param data + * @param + */ + public void intiMaterialInfo(List data) { + List materialNos = data.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(u -> u.getMaterialNo()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(materialNos)) { + List materialBaseInfos = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); + Map materialMp = ListCommonUtil.listToMap(materialBaseInfos, BaseMaterialVO::getMaterialNo); + for (T t : data) { + if (StrUtil.isNotBlank(t.getMaterialNo()) && materialMp.containsKey(t.getMaterialNo())) { + BeanUtil.copyProperties(materialMp.get(t.getMaterialNo()), t, "material", "materialTexture"); + } + } + } + } + + public List intiMaterialInfo(List data, String... ignorePropertyList) { + List materialNos = data.stream().map(BaseMaterialVO::getMaterialNo).filter(StrUtil::isNotBlank).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(materialNos)) { + List materialBaseInfos = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); + intiMaterialInfo(data, materialBaseInfos, ignorePropertyList); + return materialBaseInfos; + } + return Collections.emptyList(); + } + + public void intiMaterialInfo(List data ,List materialBaseInfos, String ... ignorePropertyList) { + List materialNos = data.stream().map(BaseMaterialVO::getMaterialNo).filter(StrUtil::isNotBlank).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(materialNos)) { + Map materialMp = ListCommonUtil.listToMap(materialBaseInfos, BaseMaterialVO::getMaterialNo); + for (T t : data) { + if (StrUtil.isNotBlank(t.getMaterialNo()) && materialMp.containsKey(t.getMaterialNo())) { + BeanUtil.copyProperties(materialMp.get(t.getMaterialNo()), t, ignorePropertyList); + } + } + } + } + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java index aecd2e2f..c075c81c 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java @@ -1,10 +1,30 @@ package com.nflg.product.technology.service; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.product.base.core.exception.NflgBusinessException; +import com.nflg.product.base.core.vo.PageVO; +import com.nflg.product.technology.mapper.master.ProcessRouteTaskAssemblyMapper; import com.nflg.product.technology.mapper.master.ProcessRouteTaskMapper; +import com.nflg.product.technology.mapper.master.ProcessRouteTaskProcessesMapper; +import com.nflg.product.technology.pojo.entity.ProcessRouteTaskAssemblyEntity; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskEntity; +import com.nflg.product.technology.pojo.entity.ProcessRouteTaskProcessesEntity; +import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery; +import com.nflg.product.technology.pojo.vo.ProcessRouteTaskAssemblyVO; +import com.nflg.product.technology.pojo.vo.ProcessRouteTaskProcessesVO; +import com.nflg.product.technology.pojo.vo.ProcessRouteTaskVO; +import nflg.product.common.constant.STATE; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + /** *

* 工艺路线-任务清单(抬头) 服务类 @@ -16,4 +36,49 @@ import org.springframework.stereotype.Service; @Service public class ProcessRouteTaskService extends ServiceImpl { + @Resource + private ProcessRouteTaskProcessesService processRouteTaskProcessesService; + @Resource + private ProcessRouteTaskAssemblyService processRouteTaskAssemblyService; + @Resource + private MaterialMainService materialMainService; + @Resource + private ProcessRouteTaskMapper processRouteTaskMapper; + @Resource + private ProcessRouteTaskProcessesMapper processRouteTaskProcessesMapper; + @Resource + private ProcessRouteTaskAssemblyMapper processRouteTaskAssemblyMapper; + + public IPage selectPageByCondition(ProcessRouteTaskQuery query) { + //设置分页 + Page pageCondition = new PageVO<>(query.getPage(), query.getPageSize()); + IPage iPage = processRouteTaskMapper.selectPageByCondition(pageCondition, query); + if (CollUtil.isNotEmpty(iPage.getRecords())) { + materialMainService.intiMaterialInfo(iPage.getRecords(), ""); + } + return iPage; + } + + public ProcessRouteTaskVO detail(Long rowId) { + if (ObjectUtil.isEmpty(rowId)) { + throw new NflgBusinessException(STATE.ParamErr, "参数ID不能为空"); + } + ProcessRouteTaskEntity processRouteTaskEntity = processRouteTaskMapper.selectById(rowId); + if (ObjectUtil.isEmpty(processRouteTaskEntity)) { + return null; + } + ProcessRouteTaskVO processRouteTaskVO = Convert.convert(ProcessRouteTaskVO.class, processRouteTaskEntity); + if (ObjectUtil.isNotEmpty(processRouteTaskVO)) { + materialMainService.intiMaterialInfo(Collections.singletonList(processRouteTaskVO), ""); + } + List taskProcessesEntityList = processRouteTaskProcessesService.lambdaQuery().eq(ProcessRouteTaskProcessesEntity::getTaskRowId, rowId).list(); + if (ObjectUtil.isNotEmpty(taskProcessesEntityList)) { + processRouteTaskVO.setProcessesVOList(Convert.toList(ProcessRouteTaskProcessesVO.class, taskProcessesEntityList)); + } + List taskAssemblyEntityList = processRouteTaskAssemblyService.lambdaQuery().eq(ProcessRouteTaskAssemblyEntity::getTaskRowId, rowId).list(); + if (ObjectUtil.isNotEmpty(taskAssemblyEntityList)) { + processRouteTaskVO.setAssemblyVOList(Convert.toList(ProcessRouteTaskAssemblyVO.class, taskAssemblyEntityList)); + } + return processRouteTaskVO; + } } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/ListCommonUtil.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/ListCommonUtil.java new file mode 100644 index 00000000..cf34c174 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/ListCommonUtil.java @@ -0,0 +1,85 @@ +package com.nflg.product.technology.util; + +import cn.hutool.core.collection.ListUtil; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * lsit 工具类 + * + * @Author 大米 + * @Date 2022-11-08 + */ + public class ListCommonUtil extends ListUtil { + + + /** + * list 转map + * + * @param list + * @param function + * @param + * @return + */ + public static Map listToMap(List list, Function function) { + if (list==null || list.size() <= 0) { + return new HashMap(1); + } + return list.stream().collect(Collectors.toMap(function, Function.identity(), (k1, k2) -> k1)); + } + + + /** + * list 转map + * + * @param list + * @param keyFunction + * @param valueFunction + * @param + * @return + */ + public static Map listToMap(List list, Function keyFunction, Function valueFunction) { + if (list.size() <= 0) { + return new HashMap(1); + } + return list.stream().collect(Collectors.toMap(keyFunction, valueFunction)); + } + + + + public static Map> listGroupMap(List list, Function function) { + if (list.size() <= 0) { + return new HashMap>(1); + } + return list.stream().collect(Collectors.groupingBy(function)); + } + + /** + * 去重 + * @param list + * @param identityFunc + * @return + * @param + * @param + */ + public static List toDistinct(List list, Function identityFunc){ + List result = new ArrayList<>(); + Map fidler=new HashMap<>(); + list.forEach(k->{ + if(!fidler.containsKey(identityFunc.apply(k))){ + result.add(k); + fidler.put(identityFunc.apply(k),"1"); + } + + }); + return result; + } + + + +} diff --git a/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/MaterialMainMapper.xml b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/MaterialMainMapper.xml new file mode 100644 index 00000000..6a12a312 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/MaterialMainMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row_id, material_no, material_name, material_desc, short_material_desc, material_specifications, + material_category_code, drawing_no, material_weight, material_brand, material_unit, material_assist_unit, + reuse_state, use_of_year, reuse_of_once_state, standard_state, material_type, remark, material_texture, + tow_year_lssl, four_year_lssl, tow_year_lssl_day, material_stock, last_purchase_price, last_purchase_date, + last_out_warehouse_time, order_protect_price, parts_sale_price, material_state, process_state, reject_user, + reject_resion, use_remark, apply_user_code, apply_dept_name, updated_by_user_code, last_apply_time, + replace_material_no, material_class, common_zero_file, material_get_type, created_by, created_time, updated_by, + updated_time, oa_row_id, procure_type, project_type, freeze_calc_start, recommend + + + + + diff --git a/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskMapper.xml b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskMapper.xml index 14295040..6c1cb3dc 100644 --- a/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskMapper.xml +++ b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskMapper.xml @@ -2,4 +2,55 @@ + + row_id,task_code, factory, material_no, description, usefulness, status, from_batch, + to_batch, expire_start_time, expire_end_time, del_flag, created_by, created_time, updated_by, + updated_time, handle_status, sap_state + + + + + + + + AND material_no IN + + #{item} + + + + AND material_no = #{query.material_no} + + + AND factory = #{query.factory} + + + AND created_time = ]]> #{query.createdTimeFrom} + + + AND created_time #{query.createdTimeTo} + + + AND created_by LIKE concat('%', #{query.createdBy}, '%') + + + AND updated_time = ]]> #{query.updatedTimeFrom} + + + AND updated_time #{query.updatedTimeTo} + + + AND updated_by LIKE concat('%', #{query.updatedBy}, '%') + + + AND del_flag = #{delFlag} + + + +