liu
3 天以前 f2605183fb42384f365fbcc323871df9e16c5d5f
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
-- ============================================================================
-- 新疆-新高力 项目:单据审核状态机改造 + 电力作业计划生成工单 待执行数据库变更
-- 目标库:mom-xgdl
-- 说明:本脚本幂等,可重复执行;已存在的字段/菜单会自动跳过。
--       开发库(192.168.197.128)已全部执行过,本脚本用于向其它环境(如测试/生产)同步。
-- 对应代码提交:
--   refactor(crm/erp/hrm/mes): 单据审核改为审批配置状态机
--   fix(mes): 电力作业计划生成工单补充编码规则取号
-- ============================================================================
 
SET NAMES utf8mb4;
 
-- ============================================================================
-- 第一部分:20 张单据表新增审核人四字段
--   reviewer_id / reviewer_name / review_time / review_remark
-- ============================================================================
 
DROP TABLE IF EXISTS _tmp_xgdl_review_cols;
CREATE TABLE _tmp_xgdl_review_cols (
    tbl    VARCHAR(64)  NOT NULL,
    col    VARCHAR(64)  NOT NULL,
    coldef VARCHAR(255) NOT NULL
);
 
INSERT INTO _tmp_xgdl_review_cols (tbl, col, coldef) VALUES
-- CRM
('crm_cancellation',            'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('crm_cancellation',            'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('crm_cancellation',            'review_time',    'datetime COMMENT ''审核时间'''),
('crm_cancellation',            'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('crm_contract',                'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('crm_contract',                'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('crm_contract',                'review_time',    'datetime COMMENT ''审核时间'''),
('crm_contract',                'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('crm_invoice',                 'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('crm_invoice',                 'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('crm_invoice',                 'review_time',    'datetime COMMENT ''审核时间'''),
('crm_invoice',                 'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('crm_refund',                  'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('crm_refund',                  'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('crm_refund',                  'review_time',    'datetime COMMENT ''审核时间'''),
('crm_refund',                  'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
-- ERP
('erp_finance_payment',         'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('erp_finance_payment',         'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('erp_finance_payment',         'review_time',    'datetime COMMENT ''审核时间'''),
('erp_finance_payment',         'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('erp_purchase_request',        'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('erp_purchase_request',        'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('erp_purchase_request',        'review_time',    'datetime COMMENT ''审核时间'''),
('erp_purchase_request',        'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
-- HRM
('hrm_leave_application',       'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_leave_application',       'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_leave_application',       'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_leave_application',       'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('hrm_regularize_application',  'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_regularize_application',  'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_regularize_application',  'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_regularize_application',  'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('hrm_resignation_application', 'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_resignation_application', 'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_resignation_application', 'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_resignation_application', 'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('hrm_transfer_application',    'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_transfer_application',    'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_transfer_application',    'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_transfer_application',    'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('hrm_attendance_exception',    'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_attendance_exception',    'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_attendance_exception',    'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_attendance_exception',    'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('hrm_performance_appraise',    'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('hrm_performance_appraise',    'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('hrm_performance_appraise',    'review_time',    'datetime COMMENT ''审核时间'''),
('hrm_performance_appraise',    'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
-- MES
('mes_pd_project',              'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_pd_project',              'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_pd_project',              'review_time',    'datetime COMMENT ''审核时间'''),
('mes_pd_project',              'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('product_tech_confirm',        'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('product_tech_confirm',        'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('product_tech_confirm',        'review_time',    'datetime COMMENT ''审核时间'''),
('product_tech_confirm',        'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_equipment_receipt',    'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_equipment_receipt',    'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_equipment_receipt',    'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_equipment_receipt',    'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_item_receipt',         'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_item_receipt',         'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_item_receipt',         'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_item_receipt',         'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_misc_issue',           'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_misc_issue',           'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_misc_issue',           'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_misc_issue',           'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_misc_receipt',         'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_misc_receipt',         'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_misc_receipt',         'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_misc_receipt',         'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_return_vendor',        'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_return_vendor',        'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_return_vendor',        'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_return_vendor',        'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)'''),
('mes_wm_stock_taking_task',    'reviewer_id',    'bigint COMMENT ''审核人用户编号(提交审批时指定)'''),
('mes_wm_stock_taking_task',    'reviewer_name',  'varchar(64) COMMENT ''审核人姓名(冗余)'''),
('mes_wm_stock_taking_task',    'review_time',    'datetime COMMENT ''审核时间'''),
('mes_wm_stock_taking_task',    'review_remark',  'varchar(500) COMMENT ''审核意见(不通过时即不通过原因)''');
 
DROP PROCEDURE IF EXISTS xgdl_add_review_cols;
DELIMITER $$
CREATE PROCEDURE xgdl_add_review_cols()
BEGIN
    DECLARE v_done INT DEFAULT 0;
    DECLARE v_tbl VARCHAR(64);
    DECLARE v_col VARCHAR(64);
    DECLARE v_def VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT tbl, col, coldef FROM _tmp_xgdl_review_cols;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
 
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO v_tbl, v_col, v_def;
        IF v_done = 1 THEN
            LEAVE read_loop;
        END IF;
        IF EXISTS (SELECT 1 FROM information_schema.tables
                   WHERE table_schema = DATABASE() AND table_name = v_tbl)
           AND NOT EXISTS (SELECT 1 FROM information_schema.columns
                   WHERE table_schema = DATABASE() AND table_name = v_tbl AND column_name = v_col)
        THEN
            SET @ddl = CONCAT('ALTER TABLE `', v_tbl, '` ADD COLUMN `', v_col, '` ', v_def);
            PREPARE stmt FROM @ddl;
            EXECUTE stmt;
            DEALLOCATE PREPARE stmt;
        END IF;
    END LOOP;
    CLOSE cur;
END$$
DELIMITER ;
 
CALL xgdl_add_review_cols();
DROP PROCEDURE IF EXISTS xgdl_add_review_cols;
DROP TABLE IF EXISTS _tmp_xgdl_review_cols;
 
-- ============================================================================
-- 第二部分:审核按钮菜单(system_menu,type=3 按钮)
--   挂载位置:与同资源「修改」按钮同父级;已存在则跳过
-- ============================================================================
 
-- 逐条插入:名称、权限、锚点权限(同资源的 :update 按钮)
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '销户申请审核' AS name, 'crm:cancellation:audit' AS perm, 'crm:cancellation:update' AS anchor) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'crm:cancellation:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'crm:cancellation:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '合同审核' AS name, 'crm:contract:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'crm:contract:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'crm:contract:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '发票审核' AS name, 'crm:invoice:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'crm:invoice:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'crm:invoice:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '退费单审核' AS name, 'crm:refund:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'crm:refund:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'crm:refund:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '付款单审核' AS name, 'erp:finance-payment:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'erp:finance-payment:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'erp:finance-payment:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '采购申请审核' AS name, 'erp:purchase-request:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'erp:purchase-request:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'erp:purchase-request:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '请假申请审核' AS name, 'hrm:leave:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'hrm:leave:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'hrm:leave:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '转正申请审核' AS name, 'hrm:regularize:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'hrm:regularize:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'hrm:regularize:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '离职申请审核' AS name, 'hrm:resignation:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'hrm:resignation:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'hrm:resignation:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '调动申请审核' AS name, 'hrm:transfer:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'hrm:transfer:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'hrm:transfer:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '考勤异常审核' AS name, 'hrm:attendance-exception:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'hrm:attendance-exception:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'hrm:attendance-exception:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '项目审核' AS name, 'mes:pd-project:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:pd-project:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:pd-project:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '技术确认函审核' AS name, 'mes:pd-tech-confirm:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:pd-tech-confirm:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:pd-tech-confirm:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '采购入库单审核' AS name, 'mes:wm-item-receipt:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm-item-receipt:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm-item-receipt:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '杂项出库单审核' AS name, 'mes:wm-misc-issue:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm-misc-issue:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm-misc-issue:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '采购退货单审核' AS name, 'mes:wm-return-vendor:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm-return-vendor:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm-return-vendor:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '盘点任务审核' AS name, 'mes:wm-stock-taking-task:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm-stock-taking-task:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm-stock-taking-task:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '设备入库单审核' AS name, 'mes:wm:equipment-receipt:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm:equipment-receipt:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm:equipment-receipt:audit') m);
 
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT t.name, t.perm, 3, 99, a.parent_id, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM (SELECT '杂项入库单审核' AS name, 'mes:wm:misc-receipt:audit' AS perm) t
JOIN (SELECT MIN(x.parent_id) AS parent_id FROM system_menu x WHERE x.deleted = 0 AND x.permission = 'mes:wm:misc-receipt:update') a ON 1 = 1
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM system_menu WHERE deleted = 0 AND permission = 'mes:wm:misc-receipt:audit') m);
 
-- ============================================================================
-- 第三部分:电力作业计划生成工单 —— 工单编码取号规则(无变更,仅说明)
--   fix(mes) 使用 PRO_WORK_ORDER_CODE 编码规则自动生成工单编码。
--   该规则(WO_ + yyyyMMdd + 4 位循环流水号,规则组成 3 段)在
--   mes_md_auto_code_rule / mes_md_auto_code_part 中已存在,无需执行 SQL。
--   全新环境请执行 sql/mysql/mes_auto_code_rule_init.sql 初始化全部编码规则
--   (注意:该脚本会 TRUNC 式重建规则表,仅适用于首次初始化,勿在已有数据的环境执行)。
-- ============================================================================
 
-- 完成。可执行以下语句校验:
-- SELECT table_name, column_name FROM information_schema.columns
--  WHERE table_schema = DATABASE() AND column_name = 'reviewer_id';
-- SELECT permission FROM system_menu WHERE deleted = 0 AND permission LIKE '%:audit';