-- ============================================================ -- 生产任务编码规则(PRO_TASK_CODE)初始化 -- -- 背景: -- “生产排产”页面新增生产任务时,MesProTaskServiceImpl 调用 -- generateAutoCode(PRO_TASK_CODE),若库中缺少该规则, -- 会抛出“编码规则不存在”,导致排产提交失败。 -- -- 说明: -- 1. 脚本可重复执行(已存在则跳过)。 -- 2. 生成的编码格式:RW + yyMMdd + 4 位流水号,例如 RW2610190001, -- 与库中既有任务编码(RW2610150062)保持一致。 -- 3. 分段类型:2=当前日期,3=固定字符,4=流水号; -- 循环方式:3=按天;流水号按天从 1 开始,步长 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_TASK_CODE', '生产任务编码', '生产排产任务自动编码', 12, b'0', '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_TASK_CODE' AND deleted = b'0' ); -- 2. 规则分段:固定前缀 RW 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, 2, NULL, 'RW', NULL, NULL, NULL, NULL, '固定前缀', '1', '1', NOW(), NOW(), b'0' FROM mes_md_auto_code_rule r WHERE r.code = 'PRO_TASK_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. 规则分段:日期 yyMMdd 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, 6, 'yyMMdd', NULL, NULL, NULL, NULL, NULL, '日期', '1', '1', NOW(), NOW(), b'0' FROM mes_md_auto_code_rule r WHERE r.code = 'PRO_TASK_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, 4, NULL, NULL, 1, 1, b'1', 3, '流水号-按天循环', '1', '1', NOW(), NOW(), b'0' FROM mes_md_auto_code_rule r WHERE r.code = 'PRO_TASK_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' );