完成排产(测试过了)

This commit is contained in:
2026-03-08 16:02:44 +08:00
parent b660ddcc3e
commit 7736ac3311
125 changed files with 10418 additions and 15 deletions

View File

@@ -4342,4 +4342,191 @@ CREATE TABLE `xxl_job_user` (
UNIQUE INDEX `i_username`(`username` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
-- =============================
-- APS 排产补充表wms_*
-- =============================
-- 1) 工厂日历
DROP TABLE IF EXISTS `wms_calendar`;
CREATE TABLE `wms_calendar` (
`calendar_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`calendar_date` date NOT NULL COMMENT '日期',
`calendar_type` tinyint NOT NULL DEFAULT 1 COMMENT '日历类型1工作日 2周末 3法定假日 4停机日',
`factory_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '工厂编码',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`calendar_id`) USING BTREE,
UNIQUE KEY `uk_calendar_date_factory` (`calendar_date`,`factory_code`) USING BTREE,
KEY `idx_calendar_type` (`calendar_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工厂日历' ROW_FORMAT=Dynamic;
-- 2) 班次模板
DROP TABLE IF EXISTS `wms_shift_template`;
CREATE TABLE `wms_shift_template` (
`shift_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`shift_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '班次编码',
`shift_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '班次名称',
`start_time` time NOT NULL COMMENT '开始时间',
`end_time` time NOT NULL COMMENT '结束时间',
`cross_day` tinyint NOT NULL DEFAULT 0 COMMENT '是否跨天0否 1是',
`efficiency_rate` decimal(6,4) NOT NULL DEFAULT 1.0000 COMMENT '班次效率系数',
`is_enabled` tinyint NOT NULL DEFAULT 1 COMMENT '是否启用0否 1是',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`shift_id`) USING BTREE,
UNIQUE KEY `uk_shift_code` (`shift_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='班次模板' ROW_FORMAT=Dynamic;
-- 3) 日历班次配置(某天 + 某产线 + 某班次)
DROP TABLE IF EXISTS `wms_calendar_shift`;
CREATE TABLE `wms_calendar_shift` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`calendar_date` date NOT NULL COMMENT '日期',
`line_id` bigint NOT NULL COMMENT '产线ID',
`shift_id` bigint NOT NULL COMMENT '班次ID',
`planned_hours` decimal(8,2) NOT NULL DEFAULT 8.00 COMMENT '计划工时',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1可排产 2停机',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_calendar_shift` (`calendar_date`,`line_id`,`shift_id`) USING BTREE,
KEY `idx_cs_line_date` (`line_id`,`calendar_date`) USING BTREE,
KEY `idx_cs_shift` (`shift_id`) USING BTREE,
CONSTRAINT `fk_cs_line` FOREIGN KEY (`line_id`) REFERENCES `wms_production_line` (`line_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_cs_shift` FOREIGN KEY (`shift_id`) REFERENCES `wms_shift_template` (`shift_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='日历班次配置' ROW_FORMAT=Dynamic;
-- 4) 产线能力(支持产品维度 / 工序维度)
DROP TABLE IF EXISTS `wms_line_capability`;
CREATE TABLE `wms_line_capability` (
`capability_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`line_id` bigint NOT NULL COMMENT '产线ID',
`product_id` bigint DEFAULT NULL COMMENT '产品ID可空按工序维度时可空',
`process_id` bigint DEFAULT NULL COMMENT '工序ID可空按产品维度时可空',
`capacity_per_hour` decimal(18,4) NOT NULL COMMENT '每小时产能',
`setup_minutes` int NOT NULL DEFAULT 0 COMMENT '换型准备时间(分钟)',
`priority` int NOT NULL DEFAULT 100 COMMENT '优先级(越小越优先)',
`is_enabled` tinyint NOT NULL DEFAULT 1 COMMENT '是否启用0否 1是',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`capability_id`) USING BTREE,
UNIQUE KEY `uk_line_prod_proc` (`line_id`,`product_id`,`process_id`) USING BTREE,
KEY `idx_lc_line` (`line_id`) USING BTREE,
KEY `idx_lc_product` (`product_id`) USING BTREE,
KEY `idx_lc_process` (`process_id`) USING BTREE,
CONSTRAINT `fk_lc_line` FOREIGN KEY (`line_id`) REFERENCES `wms_production_line` (`line_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_lc_product` FOREIGN KEY (`product_id`) REFERENCES `wms_product` (`product_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_lc_process` FOREIGN KEY (`process_id`) REFERENCES `wms_processe` (`process_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='产线能力(产品/工序可生产关系)' ROW_FORMAT=Dynamic;
-- 5) 工序级排程记录(核心)
DROP TABLE IF EXISTS `wms_schedule_operation`;
CREATE TABLE `wms_schedule_operation` (
`operation_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`plan_id` bigint NOT NULL COMMENT '排产计划ID',
`detail_id` bigint DEFAULT NULL COMMENT '排产明细ID',
`order_id` bigint NOT NULL COMMENT '订单ID',
`order_detail_id` bigint NOT NULL COMMENT '订单明细ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`process_id` bigint NOT NULL COMMENT '工序ID',
`line_id` bigint NOT NULL COMMENT '产线ID',
`sequence_no` int NOT NULL COMMENT '工序顺序',
`plan_qty` decimal(18,4) NOT NULL COMMENT '计划数量',
`start_time` datetime NOT NULL COMMENT '计划开始时间',
`end_time` datetime NOT NULL COMMENT '计划结束时间',
`setup_minutes` int NOT NULL DEFAULT 0 COMMENT '换型时长',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态0待执行 1执行中 2已完成 3已锁定 4取消',
`locked_flag` tinyint NOT NULL DEFAULT 0 COMMENT '是否锁定0否 1是',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`operation_id`) USING BTREE,
KEY `idx_so_plan` (`plan_id`) USING BTREE,
KEY `idx_so_line_time` (`line_id`,`start_time`,`end_time`) USING BTREE,
KEY `idx_so_order_detail` (`order_detail_id`) USING BTREE,
KEY `idx_so_process` (`process_id`) USING BTREE,
CONSTRAINT `fk_so_plan` FOREIGN KEY (`plan_id`) REFERENCES `wms_schedule_plan` (`plan_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_detail` FOREIGN KEY (`detail_id`) REFERENCES `wms_schedule_plan_detail` (`detail_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_order` FOREIGN KEY (`order_id`) REFERENCES `wms_order` (`order_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_order_detail` FOREIGN KEY (`order_detail_id`) REFERENCES `wms_order_detail` (`detail_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_product` FOREIGN KEY (`product_id`) REFERENCES `wms_product` (`product_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_process` FOREIGN KEY (`process_id`) REFERENCES `wms_processe` (`process_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_so_line` FOREIGN KEY (`line_id`) REFERENCES `wms_production_line` (`line_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工序级排产记录' ROW_FORMAT=Dynamic;
-- 5b) 工序级排程-钢卷关系
DROP TABLE IF EXISTS `wms_schedule_operation_coil`;
CREATE TABLE `wms_schedule_operation_coil` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`operation_id` bigint NOT NULL COMMENT '工序排程ID关联 wms_schedule_operation.operation_id',
`coil_id` bigint NOT NULL COMMENT '钢卷ID关联 wms_material_coil.coil_id',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
`del_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除标志0=正常1=已删除)',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_soc_operation` (`operation_id`) USING BTREE,
KEY `idx_soc_coil` (`coil_id`) USING BTREE,
CONSTRAINT `fk_soc_operation` FOREIGN KEY (`operation_id`) REFERENCES `wms_schedule_operation` (`operation_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_soc_coil` FOREIGN KEY (`coil_id`) REFERENCES `wms_material_coil` (`coil_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工序排程钢卷关系表' ROW_FORMAT=Dynamic;
-- 6) 排产锁定(冻结机制)
DROP TABLE IF EXISTS `wms_schedule_lock`;
CREATE TABLE `wms_schedule_lock` (
`lock_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`lock_type` tinyint NOT NULL COMMENT '锁定类型1计划 2产线+时间窗 3工序记录',
`plan_id` bigint DEFAULT NULL COMMENT '计划ID',
`line_id` bigint DEFAULT NULL COMMENT '产线ID',
`operation_id` bigint DEFAULT NULL COMMENT '工序排程ID',
`lock_start_time` datetime DEFAULT NULL COMMENT '锁定开始时间',
`lock_end_time` datetime DEFAULT NULL COMMENT '锁定结束时间',
`lock_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '锁定原因',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1生效 0失效',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`lock_id`) USING BTREE,
KEY `idx_sl_plan` (`plan_id`) USING BTREE,
KEY `idx_sl_line_time` (`line_id`,`lock_start_time`,`lock_end_time`) USING BTREE,
KEY `idx_sl_operation` (`operation_id`) USING BTREE,
CONSTRAINT `fk_sl_plan` FOREIGN KEY (`plan_id`) REFERENCES `wms_schedule_plan` (`plan_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_sl_line` FOREIGN KEY (`line_id`) REFERENCES `wms_production_line` (`line_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk_sl_operation` FOREIGN KEY (`operation_id`) REFERENCES `wms_schedule_operation` (`operation_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='排产锁定表' ROW_FORMAT=Dynamic;
-- 7) 排程变更日志
DROP TABLE IF EXISTS `wms_schedule_change_log`;
CREATE TABLE `wms_schedule_change_log` (
`log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`operation_id` bigint NOT NULL COMMENT '工序排程ID',
`change_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '变更类型CREATE/UPDATE/DELETE/RESCHEDULE/LOCK/UNLOCK',
`before_value` json DEFAULT NULL COMMENT '变更前快照',
`after_value` json DEFAULT NULL COMMENT '变更后快照',
`change_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更原因',
`change_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变更时间',
`change_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更人',
PRIMARY KEY (`log_id`) USING BTREE,
KEY `idx_scl_operation` (`operation_id`) USING BTREE,
KEY `idx_scl_time` (`change_time`) USING BTREE,
CONSTRAINT `fk_scl_operation` FOREIGN KEY (`operation_id`) REFERENCES `wms_schedule_operation` (`operation_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='排产变更日志' ROW_FORMAT=Dynamic;
SET FOREIGN_KEY_CHECKS = 1;