zss
12 小时以前 124a6178ae918de05886b52199b7755d4fa1ece3
Merge remote-tracking branch 'origin/dev_宁夏_中盛建材' into dev_宁夏_中盛建材
已添加27个文件
已修改8个文件
1068 ■■■■■ 文件已修改
doc/宁夏-中盛建材.sql 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/controller/AppendixController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemInstanceController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemParamInstanceController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/controller/ProductProcessParamInstanceController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/controller/ProductStructureInstanceController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemInstanceMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemParamInstanceMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/mapper/ProductProcessParamInstanceMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/mapper/ProductStructureInstanceMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemInstance.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemParamInstance.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/pojo/ProductProcessParamInstance.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/pojo/ProductStructureInstance.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/AppendixService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/ProcessRouteItemInstanceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/ProcessRouteItemParamInstanceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/ProductProcessParamInstanceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/ProductStructureInstanceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemInstanceServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/impl/ProductProcessParamInstanceServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/appendix/service/impl/ProductStructureInstanceServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProcessRouteMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProcessRouteService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/appendix/ProcessRouteItemInstanceMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/appendix/ProcessRouteItemParamInstanceMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/appendix/ProductProcessParamInstanceMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/appendix/ProductStructureInstanceMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProcessRouteMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -276,3 +276,102 @@
ALTER TABLE `product-inventory-management-zsjc`.`process_route`
    ADD COLUMN `dict_code` bigint NOT NULL COMMENT '产品类型字典编码' AFTER `status`;
ALTER TABLE `product-inventory-management-zsjc`.`product_order`
    ADD COLUMN `status` int NULL COMMENT '状态(1.待开始、2.进行中、3.已完成、4.已取消)' AFTER `plan_complete_time`;
DROP TABLE IF EXISTS `process_route_item_instance`;
CREATE TABLE `process_route_item_instance`
(
    `id`               bigint     NOT NULL AUTO_INCREMENT,
    `route_id`         bigint     NOT NULL DEFAULT 0 COMMENT '工艺路线id',
    `product_model_id` bigint     NULL     DEFAULT 0 COMMENT '产品id',
    `process_id`       bigint     NOT NULL DEFAULT 0 COMMENT '工序id',
    `tenant_id`        bigint     NOT NULL COMMENT '租户id',
    `create_time`      datetime   NULL     DEFAULT NULL COMMENT '录入时间',
    `update_time`      datetime   NULL     DEFAULT NULL COMMENT '更新时间',
    `drag_sort`        int        NULL     DEFAULT NULL COMMENT '拖动排序',
    `is_quality`       tinyint(1) NULL     DEFAULT 1 COMMENT '是否质检工序',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 83
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT = '工艺路线子集-附表'
  ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for process_route_item_param_instance
-- ----------------------------
DROP TABLE IF EXISTS `process_route_item_param_instance`;
CREATE TABLE `process_route_item_param_instance`
(
    `id`               bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `route_item_id`    bigint                                                        NOT NULL COMMENT '关联工艺路线明细ID (process_route_item.id)',
    `param_id`         bigint                                                        NOT NULL COMMENT '关联基础参数定义ID (base_param.id)',
    `process_param_id` bigint                                                        NULL     DEFAULT NULL COMMENT '来源工序参数ID',
    `standard_value`   varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL     DEFAULT NULL COMMENT '此路线节点设定的标准值',
    `min_value`        decimal(10, 2)                                                NULL     DEFAULT NULL COMMENT '此路线节点设定的标准最小值',
    `max_value`        decimal(10, 2)                                                NULL     DEFAULT NULL COMMENT '此路线节点设定的标准最大值',
    `is_required`      tinyint                                                       NOT NULL DEFAULT 0 COMMENT '是否必填',
    `sort`             int                                                           NOT NULL DEFAULT 0 COMMENT '排序',
    `tenant_id`        bigint                                                        NULL     DEFAULT NULL COMMENT '租户ID',
    `create_time`      datetime                                                      NULL     DEFAULT CURRENT_TIMESTAMP,
    `update_time`      datetime                                                      NULL     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`) USING BTREE,
    INDEX `idx_route_item_id` (`route_item_id` ASC) USING BTREE,
    INDEX `idx_param_id` (`param_id` ASC) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 178
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT = '工艺路线工序参数-附表'
  ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for product_process_param_instance
-- ----------------------------
DROP TABLE IF EXISTS `product_process_param_instance`;
CREATE TABLE `product_process_param_instance`
(
    `id`             bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `process_id`     bigint                                                        NOT NULL COMMENT '所属工序ID (product_process.id)',
    `param_id`       bigint                                                        NOT NULL COMMENT '关联基础参数ID (base_param.id)',
    `standard_value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL     DEFAULT NULL COMMENT '在此工序设定的标准值(单值模式)',
    `min_value`      decimal(10, 2)                                                NULL     DEFAULT NULL COMMENT '在此工序设定的标准最小值(区间模式)',
    `max_value`      decimal(10, 2)                                                NULL     DEFAULT NULL COMMENT '在此工序设定的标准最大值(区间模式)',
    `is_required`    tinyint                                                       NOT NULL DEFAULT 0 COMMENT '在此工序中是否必填(0-否, 1-是)',
    `sort`           int                                                           NOT NULL DEFAULT 0 COMMENT '排序号',
    `tenant_id`      bigint                                                        NULL     DEFAULT NULL COMMENT '租户ID',
    `create_time`    datetime                                                      NULL     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`    datetime                                                      NULL     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`) USING BTREE,
    INDEX `idx_process_id` (`process_id` ASC) USING BTREE,
    INDEX `idx_param_id` (`param_id` ASC) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 61
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT = '工序绑定参数-附表'
  ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for product_structure_instance
-- ----------------------------
DROP TABLE IF EXISTS `product_structure_instance`;
CREATE TABLE `product_structure_instance`
(
    `id`                bigint                                                        NOT NULL AUTO_INCREMENT,
    `parent_id`         bigint                                                        NULL DEFAULT NULL COMMENT '父节点ID',
    `product_model_id`  bigint                                                        NULL DEFAULT NULL COMMENT '产品id',
    `process_id`        bigint                                                        NULL DEFAULT NULL COMMENT '工序id',
    `unit_quantity`     decimal(16, 4)                                                NOT NULL COMMENT '单位产出需要数量',
    `demanded_quantity` decimal(16, 4)                                                NULL DEFAULT NULL COMMENT '需求数量',
    `unit`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位',
    `tenant_id`         bigint                                                        NULL DEFAULT NULL COMMENT '租户id',
    `bom_id`            bigint                                                        NOT NULL COMMENT 'bom的id',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT = 'BOM子集-附表'
  ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
src/main/java/com/ruoyi/appendix/controller/AppendixController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.appendix.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <br>
 * BOM-工艺路线附表控制层
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 14:44
 */
@RestController
@RequestMapping("/appendix")
@Api("BOM-工艺路线附表控制层")
public class AppendixController {
}
src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemInstanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.appendix.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å­é›†-附表控制层
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:07
 */
@RestController
@RequestMapping("/processRouteItemInstance")
@Api("艺路线子集-附表控制层")
public class ProcessRouteItemInstanceController {
}
src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemParamInstanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.appendix.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å·¥åºå‚数接口
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:14
 */
@Api(tags = "工艺路线工序参数接口")
@RestController
@RequestMapping("/processRouteItemParamInstance")
public class ProcessRouteItemParamInstanceController {
}
src/main/java/com/ruoyi/appendix/controller/ProductProcessParamInstanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.appendix.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <br>
 * å·¥åºç»‘定参数-附表Controller
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:19
 */
@Api(tags = "工序绑定参数接口")
@RestController
@RequestMapping("/productProcessParamInstance")
public class ProductProcessParamInstanceController {
}
src/main/java/com/ruoyi/appendix/controller/ProductStructureInstanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.appendix.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <br>
 * BOM子集-附表Controller
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:22
 */
@Api(tags = "BOM结构接口")
@RestController
@RequestMapping("/productStructureInstance")
public class ProductStructureInstanceController {
}
src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemInstanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å­é›†-附表Mapper
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:02
 */
public interface ProcessRouteItemInstanceMapper extends BaseMapper<ProcessRouteItemInstance> {
}
src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemParamInstanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å·¥åºå‚æ•°-附表Mapper
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:10
 */
public interface ProcessRouteItemParamInstanceMapper extends BaseMapper<ProcessRouteItemParamInstance> {
}
src/main/java/com/ruoyi/appendix/mapper/ProductProcessParamInstanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.appendix.pojo.ProductProcessParamInstance;
/**
 * <br>
 * å·¥åºç»‘定参数-附表Mapper
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:15
 */
public interface ProductProcessParamInstanceMapper extends BaseMapper<ProductProcessParamInstance> {
}
src/main/java/com/ruoyi/appendix/mapper/ProductStructureInstanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.appendix.pojo.ProductStructureInstance;
/**
 * <br>
 * BOM子集-附表Mapper
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:20
 */
public interface ProductStructureInstanceMapper extends BaseMapper<ProductStructureInstance> {
}
src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemInstance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.ruoyi.appendix.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å­é›†-附表
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 11:43
 */
@Data
@TableName("process_route_item_instance")
@Api(tags = "工艺路线子集-附表")
public class ProcessRouteItemInstance {
    @TableId(type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("工艺路线id")
    private Long routeId;
    @ApiModelProperty("产品id")
    private Long productModelId;
    @ApiModelProperty("工序id")
    private Long processId;
    @ApiModelProperty("租户id")
    private Long tenantId;
    @ApiModelProperty("录入时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("拖动排序")
    private Integer dragSort;
    @ApiModelProperty("是否质检工序")
    private Integer isQuality;
}
src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemParamInstance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.appendix.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å·¥åºå‚æ•°-附表
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:09
 */
@Data
@TableName("process_route_item_param_instance")
@Api(tags = "工艺路线工序参数-附表")
public class ProcessRouteItemParamInstance {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键ID")
    private Long id;
    @ApiModelProperty("关联工艺路线明细ID")
    private Long routeItemId;
    @ApiModelProperty("关联基础参数定义ID")
    private Long paramId;
    @ApiModelProperty("来源工序参数ID")
    private Long processParamId;
    @ApiModelProperty("标准值")
    private String standardValue;
    @ApiModelProperty("最小值")
    private BigDecimal minValue;
    @ApiModelProperty("最大值")
    private BigDecimal maxValue;
    @ApiModelProperty("是否必填")
    private Integer isRequired;
    @ApiModelProperty("排序")
    private Integer sort;
    @ApiModelProperty("租户ID")
    private Long tenantId;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
src/main/java/com/ruoyi/appendix/pojo/ProductProcessParamInstance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.appendix.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * <br>
 * å·¥åºç»‘定参数-附表
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:14
 */
@Data
@TableName("product_process_param_instance")
@Api(tags = "工序绑定参数-附表")
public class ProductProcessParamInstance {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键ID")
    private Long id;
    @ApiModelProperty("所属工序ID")
    private Long processId;
    @ApiModelProperty("关联基础参数ID")
    private Long paramId;
    @ApiModelProperty("标准值(单值模式)")
    private String standardValue;
    @ApiModelProperty("最小值(区间模式)")
    private BigDecimal minValue;
    @ApiModelProperty("最大值(区间模式)")
    private BigDecimal maxValue;
    @ApiModelProperty("是否必填(0-否,1-是)")
    private Boolean isRequired;
    @ApiModelProperty("排序号")
    private Integer sort;
    @ApiModelProperty("租户ID")
    private Long tenantId;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
src/main/java/com/ruoyi/appendix/pojo/ProductStructureInstance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.appendix.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * <br>
 * BOM子集-附表
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:20
 */
@Data
@TableName("product_structure_instance")
@Api(tags = "BOM子集-附表")
public class ProductStructureInstance {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键ID")
    private Long id;
    @ApiModelProperty("父节点ID")
    private Long parentId;
    @ApiModelProperty("产品ID")
    private Long productModelId;
    @ApiModelProperty("工序ID")
    private Long processId;
    @ApiModelProperty("单位产出需要数量")
    private BigDecimal unitQuantity;
    @ApiModelProperty("需求数量")
    private BigDecimal demandedQuantity;
    @ApiModelProperty("单位")
    private String unit;
    @ApiModelProperty("租户ID")
    private Long tenantId;
    @ApiModelProperty("BOM ID")
    private Long bomId;
}
src/main/java/com/ruoyi/appendix/service/AppendixService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.appendix.service;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
/**
 * <br>
 * BOM-工艺路线附表Service接口
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 14:45
 */
public interface AppendixService {
    /**
     * å°†å¯¹åº”的工艺路线子集与绑定的BOM子集填充到附表中
     *
     * @param productOrderId ç”Ÿäº§è®¢å•ID
     * @param processRouteId å·¥è‰ºè·¯çº¿ID
     */
    void populateData(Long productOrderId, Long processRouteId);
    /**
     * ç»™ä¸‹å‘的砌块拉取对应的工艺路线子集与绑定的BOM子集填充到附表中
     *
     * @param productionPlanDto äº§å“è¯¦æƒ…
     */
    Long populateBlocks(ProductionPlanDto productionPlanDto);
    /**
     * ç»™ä¸‹å‘的板材拉取对应的工艺路线子集与绑定的BOM子集填充到附表中
     *
     * @param productionPlanDto äº§å“è¯¦æƒ…
     */
    Long populatePlates(ProductionPlanDto productionPlanDto);
    /**
     * åˆ é™¤è¯¥è®¢å•携带的附表数据
     *
     * @param processRouteId å·¥è‰ºè·¯çº¿ID
     */
    void deleteData(Long processRouteId);
}
src/main/java/com/ruoyi/appendix/service/ProcessRouteItemInstanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
/**
 * <br>
 *工艺路线子集-附表Service
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:07
 */
public interface ProcessRouteItemInstanceService extends IService<ProcessRouteItemInstance> {
}
src/main/java/com/ruoyi/appendix/service/ProcessRouteItemParamInstanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å·¥åºå‚æ•°-附表Service
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:11
 */
public interface ProcessRouteItemParamInstanceService extends IService<ProcessRouteItemParamInstance> {
}
src/main/java/com/ruoyi/appendix/service/ProductProcessParamInstanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.appendix.pojo.ProductProcessParamInstance;
/**
 * <br>
 * å·¥åºç»‘定参数-附表Service接口
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:16
 */
public interface ProductProcessParamInstanceService extends IService<ProductProcessParamInstance> {
}
src/main/java/com/ruoyi/appendix/service/ProductStructureInstanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.appendix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.appendix.pojo.ProductStructureInstance;
/**
 * <br>
 * BOM子集-附表Service接口
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:21
 */
public interface ProductStructureInstanceService extends IService<ProductStructureInstance> {
}
src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,216 @@
package com.ruoyi.appendix.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
import com.ruoyi.appendix.pojo.ProductProcessParamInstance;
import com.ruoyi.appendix.pojo.ProductStructureInstance;
import com.ruoyi.appendix.service.*;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.*;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <br>
 * BOM-工艺路线附表Service接口实现类
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 14:45
 */
@Slf4j
@Service
public class AppendixServiceImpl implements AppendixService {
    @Resource
    private ProcessRouteItemInstanceService processRouteItemInstanceService;
    @Resource
    private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
    @Resource
    private ProductProcessParamInstanceService productProcessParamInstanceService;
    @Resource
    private ProductStructureInstanceService productStructureInstanceService;
    @Resource
    private ProcessRouteService processRouteService;
    @Resource
    private ProcessRouteItemService processRouteItemService;
    @Resource
    private ProcessRouteItemParamService processRouteItemParamService;
    @Resource
    private ProductProcessParamService productProcessParamService;
    @Resource
    private ProductStructureService productStructureService;
    @Resource
    private ProductOrderService productOrderService;
    @Override
    public Long populateBlocks(ProductionPlanDto productionPlanDto) {
        if (productionPlanDto == null) {
            throw new ServiceException("下发数据不能为空");
        }
        if (StringUtils.isEmpty(productionPlanDto.getStrength())) {
            throw new ServiceException("砌块的产品类型不能为空");
        }
        ProcessRoute processRoute = processRouteService.latestTypeDate(productionPlanDto.getProductName(), productionPlanDto.getStrength());
        if (processRoute == null) {
            log.info("下发产品【{}】未查询出工艺路线", productionPlanDto.getProductName());
            return null;
        }
        migration(processRoute);
        return processRoute.getId();
    }
    @Override
    public Long populatePlates(ProductionPlanDto productionPlanDto) {
        if (productionPlanDto == null) {
            throw new ServiceException("下发数据不能为空");
        }
        //  æ¿æä¸åŒºåˆ†å¼ºåº¦ï¼Œstrengthä¼ null
        ProcessRoute processRoute = processRouteService.latestTypeDate(productionPlanDto.getProductName(), null);
        if (processRoute == null) {
            log.info("下发产品【{}】未查询出工艺路线", productionPlanDto.getProductName());
            return null;
        }
        migration(processRoute);
        return processRoute.getId();
    }
    @Override
    public void populateData(Long productOrderId, Long processRouteId) {
        ProcessRoute processRoute = processRouteService.getById(processRouteId);
        if (processRoute == null) {
            log.info("生产订单【{}】未查询出工艺路线【{}】", productOrderId, processRouteId);
            return;
        }
        migration(processRoute);
        //  å›žå†™å·¥è‰ºè·¯çº¿id到生产订单
        ProductOrder productOrder = new ProductOrder();
        productOrder.setId(productOrderId);
        productOrder.setRouteId(processRouteId);
        productOrderService.updateById(productOrder);
    }
    @Override
    public void deleteData(Long processRouteId) {
        //  æŸ¥å‡ºå·¥è‰ºè·¯çº¿å­é›†ï¼Œç”¨äºŽå…³è”删除参数附表
        List<ProcessRouteItem> itemList = processRouteItemService.list(new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRouteId));
        if (itemList != null && !itemList.isEmpty()) {
            List<Long> itemIds = itemList.stream().map(ProcessRouteItem::getId).collect(Collectors.toList());
            List<Long> processIds = itemList.stream().map(ProcessRouteItem::getProcessId).collect(Collectors.toList());
            //  åˆ é™¤å·¥è‰ºè·¯çº¿å·¥åºå‚数附表
            processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>().in(ProcessRouteItemParamInstance::getRouteItemId, itemIds));
            //  åˆ é™¤å·¥åºç»‘定参数附表
            productProcessParamInstanceService.remove(new LambdaQueryWrapper<ProductProcessParamInstance>().in(ProductProcessParamInstance::getProcessId, processIds));
        }
        //  åˆ é™¤å·¥è‰ºè·¯çº¿å­é›†é™„表
        processRouteItemInstanceService.remove(
                new LambdaQueryWrapper<ProcessRouteItemInstance>().eq(ProcessRouteItemInstance::getRouteId, processRouteId));
        //  åˆ é™¤BOM子集附表
        ProcessRoute processRoute = processRouteService.getById(processRouteId);
        if (processRoute != null && processRoute.getBomId() != null) {
            productStructureInstanceService.remove(new LambdaQueryWrapper<ProductStructureInstance>().eq(ProductStructureInstance::getBomId, processRoute.getBomId()));
        }
    }
    /**
     * æ ¹æ®å·¥è‰ºè·¯çº¿è¿ç§»å››å¼ é™„表数据
     */
    private void migration(ProcessRoute processRoute) {
        //  è¿ç§»å·¥è‰ºè·¯çº¿å­é›†è¡¨æ•°æ®
        List<ProcessRouteItem> processRouteItemList = processRouteItemService.list(new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
        migrationProcessRouteItem(processRouteItemList);
        //  è¿ç§»å·¥è‰ºè·¯çº¿å†…绑定的工序及工序参数
        if (processRouteItemList != null && !processRouteItemList.isEmpty()) {
            for (ProcessRouteItem item : processRouteItemList) {
                List<ProcessRouteItemParam> paramList = processRouteItemParamService.list(new LambdaQueryWrapper<ProcessRouteItemParam>().eq(ProcessRouteItemParam::getRouteItemId, item.getId()));
                migrationProcessRouteItemParam(paramList);
                List<ProductProcessParam> processParamList = productProcessParamService.list(new LambdaQueryWrapper<ProductProcessParam>().eq(ProductProcessParam::getProcessId, item.getProcessId()));
                migrationProductProcessParam(processParamList);
            }
        }
        //  è¿ç§»BOM子集表数据
        if (processRoute.getBomId() != null) {
            List<ProductStructure> structureList = productStructureService.list(new LambdaQueryWrapper<ProductStructure>().eq(ProductStructure::getBomId, processRoute.getBomId()));
            migrationProductStructure(structureList);
        }
    }
    private void migrationProcessRouteItem(List<ProcessRouteItem> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        List<ProcessRouteItemInstance> instances = list.stream().map(item -> {
            ProcessRouteItemInstance instance = new ProcessRouteItemInstance();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setIsQuality(item.getIsQuality() != null && item.getIsQuality() ? 1 : 0);
            return instance;
        }).collect(Collectors.toList());
        processRouteItemInstanceService.saveBatch(instances);
    }
    private void migrationProcessRouteItemParam(List<ProcessRouteItemParam> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        List<ProcessRouteItemParamInstance> instances = list.stream().map(item -> {
            ProcessRouteItemParamInstance instance = new ProcessRouteItemParamInstance();
            BeanUtils.copyProperties(item, instance, "id");
            return instance;
        }).collect(Collectors.toList());
        processRouteItemParamInstanceService.saveBatch(instances);
    }
    private void migrationProductProcessParam(List<ProductProcessParam> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        List<ProductProcessParamInstance> instances = list.stream().map(item -> {
            ProductProcessParamInstance instance = new ProductProcessParamInstance();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setIsRequired(item.getIsRequired() != null && item.getIsRequired() == 1);
            return instance;
        }).collect(Collectors.toList());
        productProcessParamInstanceService.saveBatch(instances);
    }
    private void migrationProductStructure(List<ProductStructure> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        List<ProductStructureInstance> instances = list.stream().map(item -> {
            ProductStructureInstance instance = new ProductStructureInstance();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setBomId(item.getBomId() != null ? item.getBomId().longValue() : null);
            return instance;
        }).collect(Collectors.toList());
        productStructureInstanceService.saveBatch(instances);
    }
}
src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemInstanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.appendix.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.mapper.ProcessRouteItemInstanceMapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
import com.ruoyi.appendix.service.ProcessRouteItemInstanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å­é›†-附表Service实现类
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:08
 */
@Slf4j
@Service
public class ProcessRouteItemInstanceServiceImpl extends ServiceImpl<ProcessRouteItemInstanceMapper, ProcessRouteItemInstance> implements ProcessRouteItemInstanceService {
}
src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.appendix.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.mapper.ProcessRouteItemParamInstanceMapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
import com.ruoyi.appendix.service.ProcessRouteItemParamInstanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * <br>
 * å·¥è‰ºè·¯çº¿å·¥åºå‚æ•°-附表Service实现类
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:12
 */
@Slf4j
@Service
public class ProcessRouteItemParamInstanceServiceImpl extends ServiceImpl<ProcessRouteItemParamInstanceMapper, ProcessRouteItemParamInstance> implements ProcessRouteItemParamInstanceService {
}
src/main/java/com/ruoyi/appendix/service/impl/ProductProcessParamInstanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.appendix.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.mapper.ProductProcessParamInstanceMapper;
import com.ruoyi.appendix.pojo.ProductProcessParamInstance;
import com.ruoyi.appendix.service.ProductProcessParamInstanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * <br>
 * å·¥åºç»‘定参数-附表Service实现类
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:18
 */
@Slf4j
@Service
public class ProductProcessParamInstanceServiceImpl extends ServiceImpl<ProductProcessParamInstanceMapper, ProductProcessParamInstance> implements ProductProcessParamInstanceService {
}
src/main/java/com/ruoyi/appendix/service/impl/ProductStructureInstanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.appendix.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.mapper.ProductStructureInstanceMapper;
import com.ruoyi.appendix.pojo.ProductStructureInstance;
import com.ruoyi.appendix.service.ProductStructureInstanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * <br>
 * BOM子集-附表Service实现类
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 13:21
 */
@Slf4j
@Service
public class ProductStructureInstanceServiceImpl extends ServiceImpl<ProductStructureInstanceMapper, ProductStructureInstance> implements ProductStructureInstanceService {
}
src/main/java/com/ruoyi/production/mapper/ProcessRouteMapper.java
@@ -12,4 +12,6 @@
public interface ProcessRouteMapper extends BaseMapper<ProcessRoute> {
    IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page,@Param("c") ProcessRouteDto processRouteDto);
    ProcessRoute latestTypeDate(String productName, String strength);
}
src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -33,6 +33,7 @@
    private Long workOrderId;
    @ApiModelProperty(value = "生产订单id")
    @TableField(exist = false)
    private Long productOrderId;
    @ApiModelProperty(value = "报工状态")
src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -18,4 +18,6 @@
    int batchDelete(List<Long> ids);
    List<ProductStructureDto> getRouteBom(Long id);
    ProcessRoute latestTypeDate(String productName, String strength);
}
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -106,4 +106,9 @@
        }
        return list;
    }
    @Override
    public ProcessRoute latestTypeDate(String productName, String strength) {
        return baseMapper.latestTypeDate(productName, strength);
    }
}
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.service.AppendixService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
@@ -73,6 +74,9 @@
    @Autowired
    private StockUtils stockUtils;
    @Autowired
    private AppendixService appendixService;
    @Override
    public IPage<ProductOrderDto> pageProductOrder(Page<ProductOrder> page, ProductOrderDto productOrder) {
@@ -241,9 +245,14 @@
        // åˆ é™¤ä¸­é—´è¡¨
        productOrderPlanMapper.delete(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, ids));
        // TODO: åˆ é™¤é™„表的工艺路线与BOM
        productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().in(ProductProcessRouteItem::getProductOrderId, ids));
        productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>().in(ProductProcessRoute::getProductOrderId, ids));
        //  åˆ é™¤é™„表的工艺路线与BOM
        for (Long id : ids) {
            ProductOrder productOrder = baseMapper.selectById(id);
            appendixService.deleteData(productOrder.getRouteId());
        }
//        productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().in(ProductProcessRouteItem::getProductOrderId, ids));
//        productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>().in(ProductProcessRoute::getProductOrderId, ids));
        //  åˆ é™¤è®¢å•
        productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().in(ProductOrder::getId, ids));
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.appendix.service.AppendixService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
@@ -77,6 +78,9 @@
    @Autowired
    private ProductMaterialService productMaterialService;
    @Autowired
    private AppendixService appendixService;
    /**
     * åŒæ­¥é”ï¼Œç¡®ä¿æ‰‹åŠ¨å’Œå®šæ—¶ä»»åŠ¡ä¸åŒæ—¶æ‰§è¡Œ
     */
@@ -143,6 +147,14 @@
        productOrder.setQuantity(productionPlanDto.getTotalAssignedQuantity());
        productOrder.setPlanCompleteTime(productionPlanDto.getPlanCompleteTime());
        productOrder.setStatus(ProductOrderStatusEnum.WAIT.getCode());
        //  å½“下发的产品为砌块或板材,就拉取BOM子集与工艺路线子集数据存入到附表中
        if ("砌块".equals(productionPlanDto.getProductName())) {
            productOrder.setRouteId(appendixService.populateBlocks(productionPlanDto));
        }
        if ("板材".equals(productionPlanDto.getProductName())) {
            productOrder.setRouteId(appendixService.populatePlates(productionPlanDto));
        }
        productOrderService.addProductOrder(productOrder);
        // æ ¹æ®ä¸‹å‘数量,从第一个生产计划开始分配方数
src/main/resources/mapper/appendix/ProcessRouteItemInstanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.appendix.mapper.ProcessRouteItemInstanceMapper">
    <resultMap id="ProcessRouteItemInstanceMap" type="com.ruoyi.appendix.pojo.ProcessRouteItemInstance">
        <id property="id" column="id"/>
        <result property="routeId" column="route_id"/>
        <result property="productModelId" column="product_model_id"/>
        <result property="processId" column="process_id"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
        <result property="dragSort" column="drag_sort"/>
        <result property="isQuality" column="is_quality"/>
    </resultMap>
</mapper>
src/main/resources/mapper/appendix/ProcessRouteItemParamInstanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.appendix.mapper.ProcessRouteItemParamInstanceMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance">
        <id property="id" column="id"/>
        <result property="routeItemId" column="route_item_id"/>
        <result property="paramId" column="param_id"/>
        <result property="processParamId" column="process_param_id"/>
        <result property="standardValue" column="standard_value"/>
        <result property="minValue" column="min_value"/>
        <result property="maxValue" column="max_value"/>
        <result property="isRequired" column="is_required"/>
        <result property="sort" column="sort"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
</mapper>
src/main/resources/mapper/appendix/ProductProcessParamInstanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.appendix.mapper.ProductProcessParamInstanceMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.appendix.pojo.ProductProcessParamInstance">
        <id property="id" column="id"/>
        <result property="processId" column="process_id"/>
        <result property="paramId" column="param_id"/>
        <result property="standardValue" column="standard_value"/>
        <result property="minValue" column="min_value"/>
        <result property="maxValue" column="max_value"/>
        <result property="isRequired" column="is_required"/>
        <result property="sort" column="sort"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
</mapper>
src/main/resources/mapper/appendix/ProductStructureInstanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.appendix.mapper.ProductStructureInstanceMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.appendix.pojo.ProductStructureInstance">
        <id property="id" column="id"/>
        <result property="parentId" column="parent_id"/>
        <result property="productModelId" column="product_model_id"/>
        <result property="processId" column="process_id"/>
        <result property="unitQuantity" column="unit_quantity"/>
        <result property="demandedQuantity" column="demanded_quantity"/>
        <result property="unit" column="unit"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="bomId" column="bom_id"/>
    </resultMap>
</mapper>
src/main/resources/mapper/production/ProcessRouteMapper.xml
@@ -29,4 +29,24 @@
        order by ps.id
    </select>
    <select id="latestTypeDate" resultType="com.ruoyi.production.pojo.ProcessRoute">
        SELECT *
        FROM process_route pr
        WHERE pr.dict_code = (SELECT d.dict_code
                              FROM sys_dict_data d
                              WHERE d.dict_label =
                                <choose>
                                    <when test="strength != null and strength != ''">
                                        CONCAT(#{productName}, '-', #{strength})
                                    </when>
                                    <otherwise>
                                        #{productName}
                                    </otherwise>
                                </choose>
                                AND d.dict_type = 'product_type'
                              LIMIT 1)
        ORDER BY pr.create_time DESC
        LIMIT 1
    </select>
</mapper>