xiaoyi
10 天以前 fae95228037f0c1304c1917ae5fff452f2160c5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- =============================================
-- 长辉 chdl 环境 MES 模块缺失列补齐
-- 生成时间:2026-10-28
-- 背景:全接口扫描发现 MES 多个 DO 字段在库中无对应列,导致列表查询 500
-- 说明:MySQL 8 不支持 ADD COLUMN IF NOT EXISTS,这里用存储过程做幂等
-- =============================================
 
DELIMITER $$
DROP PROCEDURE IF EXISTS chdl_mes_add_column_20261028$$
CREATE PROCEDURE chdl_mes_add_column_20261028(
    IN p_table_name VARCHAR(64), IN p_column_name VARCHAR(64), IN p_ddl_sql VARCHAR(1000))
BEGIN
    IF NOT EXISTS (SELECT 1 FROM information_schema.COLUMNS
                   WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table_name AND COLUMN_NAME = p_column_name) THEN
        SET @mes_col_ddl = p_ddl_sql;
        PREPARE mes_col_stmt FROM @mes_col_ddl;
        EXECUTE mes_col_stmt;
        DEALLOCATE PREPARE mes_col_stmt;
    END IF;
END$$
DELIMITER ;
 
-- ---------- 1. 设备台账:数采字段 ----------
CALL chdl_mes_add_column_20261028('mes_dv_machinery','collect_device_code',
    'ALTER TABLE mes_dv_machinery ADD COLUMN collect_device_code varchar(64) NULL COMMENT ''数采设备编码''');
CALL chdl_mes_add_column_20261028('mes_dv_machinery','collect_enabled',
    'ALTER TABLE mes_dv_machinery ADD COLUMN collect_enabled bit(1) NULL DEFAULT b''0'' COMMENT ''是否启用数采''');
 
-- ---------- 2. 库存盘点任务 ----------
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','taking_date',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN taking_date datetime NULL COMMENT ''盘点日期''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','type',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN type tinyint NULL COMMENT ''盘点类型''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','user_id',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN user_id bigint NULL COMMENT ''盘点人编号''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','blind_flag',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN blind_flag bit(1) NULL DEFAULT b''0'' COMMENT ''是否盲盘''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','frozen',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN frozen bit(1) NULL DEFAULT b''0'' COMMENT ''是否冻结库存''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','start_time',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN start_time datetime NULL COMMENT ''开始时间''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task','end_time',
    'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN end_time datetime NULL COMMENT ''结束时间''');
 
-- ---------- 3. 库存盘点明细 ----------
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task_line','batch_code',
    'ALTER TABLE mes_wm_stock_taking_task_line ADD COLUMN batch_code varchar(64) NULL COMMENT ''批次号''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task_line','taking_quantity',
    'ALTER TABLE mes_wm_stock_taking_task_line ADD COLUMN taking_quantity decimal(24,6) NULL COMMENT ''盘点数量''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task_line','status',
    'ALTER TABLE mes_wm_stock_taking_task_line ADD COLUMN status tinyint NULL COMMENT ''盘点状态''');
 
-- ---------- 4. 库存盘点结果 ----------
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task_result','batch_code',
    'ALTER TABLE mes_wm_stock_taking_task_result ADD COLUMN batch_code varchar(64) NULL COMMENT ''批次号''');
CALL chdl_mes_add_column_20261028('mes_wm_stock_taking_task_result','taking_quantity',
    'ALTER TABLE mes_wm_stock_taking_task_result ADD COLUMN taking_quantity decimal(24,6) NULL COMMENT ''盘点数量''');
 
-- ---------- 5. 外协发料明细 ----------
CALL chdl_mes_add_column_20261028('mes_wm_outsource_issue_line','material_stock_id',
    'ALTER TABLE mes_wm_outsource_issue_line ADD COLUMN material_stock_id bigint NULL COMMENT ''库存编号''');
CALL chdl_mes_add_column_20261028('mes_wm_outsource_issue_line','batch_id',
    'ALTER TABLE mes_wm_outsource_issue_line ADD COLUMN batch_id bigint NULL COMMENT ''批次编号''');
 
-- ---------- 6. 外协入库明细 ----------
CALL chdl_mes_add_column_20261028('mes_wm_outsource_receipt_line','batch_id',
    'ALTER TABLE mes_wm_outsource_receipt_line ADD COLUMN batch_id bigint NULL COMMENT ''批次编号''');
CALL chdl_mes_add_column_20261028('mes_wm_outsource_receipt_line','batch_code',
    'ALTER TABLE mes_wm_outsource_receipt_line ADD COLUMN batch_code varchar(64) NULL COMMENT ''批次号''');
CALL chdl_mes_add_column_20261028('mes_wm_outsource_receipt_line','production_date',
    'ALTER TABLE mes_wm_outsource_receipt_line ADD COLUMN production_date datetime NULL COMMENT ''生产日期''');
CALL chdl_mes_add_column_20261028('mes_wm_outsource_receipt_line','expire_date',
    'ALTER TABLE mes_wm_outsource_receipt_line ADD COLUMN expire_date datetime NULL COMMENT ''有效期至''');
CALL chdl_mes_add_column_20261028('mes_wm_outsource_receipt_line','lot_number',
    'ALTER TABLE mes_wm_outsource_receipt_line ADD COLUMN lot_number varchar(64) NULL COMMENT ''批号''');
 
-- ---------- 7. 装箱管理明细 ----------
CALL chdl_mes_add_column_20261028('mes_wm_package_line','work_order_id',
    'ALTER TABLE mes_wm_package_line ADD COLUMN work_order_id bigint NULL COMMENT ''生产工单编号''');
CALL chdl_mes_add_column_20261028('mes_wm_package_line','expire_date',
    'ALTER TABLE mes_wm_package_line ADD COLUMN expire_date datetime NULL COMMENT ''有效期至''');
 
DROP PROCEDURE chdl_mes_add_column_20261028;
 
-- ---------- 8. 数据迁移:遗留 task_date → taking_date ----------
-- mes_wm_stock_taking_task 库中存在遗留列 task_date(代码从未使用),
-- 新加的 taking_date 需要从它回填,否则历史盘点任务的日期会丢。
UPDATE mes_wm_stock_taking_task
   SET taking_date = task_date
 WHERE taking_date IS NULL AND task_date IS NOT NULL;