liu
2026-10-19 31f9b2e3e6a1cffb83c838f1db1d6251b708f983
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
-- ============================================================
-- 生产工单编码规则(PRO_WORK_ORDER_CODE)初始化
--
-- 背景:
--   电力作业计划“生成工单”依赖编码规则 PRO_WORK_ORDER_CODE,
--   若库中缺少该规则,会抛出“编码规则不存在”。
--
-- 说明:
--   1. 脚本可重复执行(已存在则跳过)。
--   2. 生成的编码格式:WO_yyyyMMdd + 3 位流水号,例如 WO_20261019001。
--   3. 分段类型:2=当前日期,3=固定字符,4=流水号;
--      循环方式:3=按天;补齐方式:1=左补齐。
-- ============================================================
 
-- 1. 编码规则主表
INSERT INTO mes_md_auto_code_rule
    (code, name, description, max_length, padded, padded_char, padded_method, status, remark, creator, updater, create_time, update_time, deleted)
SELECT 'PRO_WORK_ORDER_CODE', '生产工单编码', '生产工单自动编码', 15, b'1', '0', 1, 0, NULL, '1', '1', NOW(), NOW(), b'0'
FROM DUAL
WHERE NOT EXISTS (
    SELECT 1 FROM mes_md_auto_code_rule WHERE code = 'PRO_WORK_ORDER_CODE' AND deleted = b'0'
);
 
-- 2. 规则分段:固定前缀 WO_
INSERT INTO mes_md_auto_code_part
    (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted)
SELECT r.id, 1, 3, 3, NULL, 'WO_', NULL, NULL, NULL, NULL, '固定前缀', '1', '1', NOW(), NOW(), b'0'
FROM mes_md_auto_code_rule r
WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 1 AND p.deleted = b'0'
  );
 
-- 3. 规则分段:日期 yyyyMMdd
INSERT INTO mes_md_auto_code_part
    (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted)
SELECT r.id, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '日期', '1', '1', NOW(), NOW(), b'0'
FROM mes_md_auto_code_rule r
WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 2 AND p.deleted = b'0'
  );
 
-- 4. 规则分段:流水号(按天循环,从 1 开始,步长 1)
INSERT INTO mes_md_auto_code_part
    (rule_id, sort, type, length, date_format, fix_character, serial_start_no, serial_step, cycle_flag, cycle_method, remark, creator, updater, create_time, update_time, deleted)
SELECT r.id, 3, 4, 3, NULL, NULL, 1, 1, b'1', 3, '流水号', '1', '1', NOW(), NOW(), b'0'
FROM mes_md_auto_code_rule r
WHERE r.code = 'PRO_WORK_ORDER_CODE' AND r.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM mes_md_auto_code_part p WHERE p.rule_id = r.id AND p.sort = 3 AND p.deleted = b'0'
  );