-- 生产质检:初检、复检、加工部审批、公司质检审批后才放行库存。 -- 先部署数据库变更,再部署对应后端与前端;历史合格记录已完成库存流转。 ALTER TABLE mes_qc_seed_quality ADD COLUMN workflow_status tinyint NOT NULL DEFAULT 40 COMMENT '10待复检 20待加工部审批 30待公司质检审批 40已放行 50待加工部不合格评审 60待公司不合格审批 70已报废', ADD COLUMN qualified_warehouse_id bigint DEFAULT NULL COMMENT '审批通过后的目标合格库', ADD COLUMN retest_result tinyint DEFAULT NULL COMMENT '复检结果 1合格 2不合格', ADD COLUMN retested_at datetime DEFAULT NULL COMMENT '复检时间', ADD COLUMN process_approved_at datetime DEFAULT NULL COMMENT '加工部审批时间', ADD COLUMN company_approved_at datetime DEFAULT NULL COMMENT '公司质检审批时间'; CREATE INDEX idx_mes_seed_quality_workflow ON mes_qc_seed_quality (workflow_status, inspected_at); -- 旧数据已经按旧流程放行或报废,不能重新审批或重复扣库存。 UPDATE mes_qc_seed_quality SET workflow_status = CASE WHEN result = 1 THEN 40 WHEN result = 2 THEN 70 ELSE 10 END; CREATE TABLE IF NOT EXISTS mes_qc_seed_quality_action ( id bigint NOT NULL AUTO_INCREMENT, quality_id bigint NOT NULL, action varchar(32) NOT NULL COMMENT 'INITIAL/RETEST/PROCESS_APPROVE/COMPANY_APPROVE/REJECT', result tinyint DEFAULT NULL, opinion varchar(500) DEFAULT NULL, indicators_json text DEFAULT NULL, operator_id bigint DEFAULT NULL, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_quality_time (quality_id, create_time) ) ENGINE=InnoDB COMMENT='种子质检流程操作留痕'; INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '复检', 'mes:qc-seed-quality:retest', 3, 3, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-seed-quality:retest' AND m.deleted = b'0'); INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '加工部审批', 'mes:qc-seed-quality:process-approve', 3, 4, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-seed-quality:process-approve' AND m.deleted = b'0'); INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '公司质检审批', 'mes:qc-seed-quality:company-approve', 3, 5, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-seed-quality:company-approve' AND m.deleted = b'0'); -- 独立销售质检入口;保留原“出货检验”菜单,复用其已实现的销售出库单检验能力。 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 '销售质检', '', 2, 8, 5500, 'sales-quality', 'ep:document-checked', 'mes/qc/salesQuality/index', 'MesQcSalesQuality', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE parent_id = 5500 AND path = 'sales-quality' AND deleted = b'0'); -- 销售质检复检及两级审批;历史已完成出货检验单维持既有放行结果。 ALTER TABLE mes_qc_oqc ADD COLUMN workflow_status tinyint NOT NULL DEFAULT 0 COMMENT '0草稿 10待复检 20待销售部审批 30待公司质检审批 40已放行 50待销售部不合格评审 60待公司不合格审批 70已拒绝出货'; CREATE INDEX idx_mes_oqc_workflow ON mes_qc_oqc (workflow_status, id); UPDATE mes_qc_oqc SET workflow_status = CASE WHEN status = 0 THEN 0 WHEN check_result = 1 THEN 40 ELSE 70 END; CREATE TABLE IF NOT EXISTS mes_qc_oqc_action ( id bigint NOT NULL AUTO_INCREMENT, oqc_id bigint NOT NULL, action varchar(32) NOT NULL, result tinyint DEFAULT NULL, opinion varchar(500) DEFAULT NULL, quantities_json text DEFAULT NULL, operator_id bigint DEFAULT NULL, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_oqc_time (oqc_id, create_time) ) ENGINE=InnoDB COMMENT='销售质检复检和审批留痕'; INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '销售复检', 'mes:qc-oqc:retest', 3, 1, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'sales-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-oqc:retest' AND m.deleted = b'0'); INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '销售部审批', 'mes:qc-oqc:sales-approve', 3, 2, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'sales-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-oqc:sales-approve' AND m.deleted = b'0'); INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) SELECT '销售公司质检审批', 'mes:qc-oqc:company-approve', 3, 3, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE parent_id = 5500 AND path = 'sales-quality' AND deleted = b'0' AND NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.parent_id = system_menu.id AND m.permission = 'mes:qc-oqc:company-approve' AND m.deleted = b'0');