-- 测试数据批次隔离:MySQL 增量补丁 -- 本补丁仅增加可空归属字段,不回填既有数据。 CREATE TABLE biz_test_batch ( batch_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '测试数据批次ID', batch_code VARCHAR(64) NOT NULL COMMENT '批次编码', batch_name VARCHAR(100) NOT NULL COMMENT '批次名称', status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '批次状态', create_by VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者', create_time DATETIME NOT NULL COMMENT '创建时间', update_by VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者', update_time DATETIME NOT NULL COMMENT '更新时间', closed_by BIGINT NULL COMMENT '关闭人ID', closed_at DATETIME NULL COMMENT '关闭时间', purged_by BIGINT NULL COMMENT '清理人ID', purged_at DATETIME NULL COMMENT '清理时间', purge_summary TEXT NULL COMMENT '清理摘要JSON', preview_action VARCHAR(16) NULL COMMENT '预览动作', preview_token_hash CHAR(64) NULL COMMENT '预览令牌摘要', preview_scope_hash CHAR(64) NULL COMMENT '预览范围摘要', preview_expires_at DATETIME NULL COMMENT '预览过期时间', remark VARCHAR(500) NULL COMMENT '备注', PRIMARY KEY (batch_id), CONSTRAINT uq_biz_test_batch_code UNIQUE (batch_code), CONSTRAINT ck_biz_test_batch_status CHECK (status IN ('ACTIVE', 'CLOSED', 'PURGED')), CONSTRAINT ck_biz_test_batch_preview_action CHECK ( preview_action IS NULL OR preview_action IN ('ADOPT', 'PURGE') ), CONSTRAINT fk_biz_test_batch_closed_by FOREIGN KEY (closed_by) REFERENCES sys_user (user_id), CONSTRAINT fk_biz_test_batch_purged_by FOREIGN KEY (purged_by) REFERENCES sys_user (user_id) ) ENGINE=InnoDB COMMENT='测试数据批次'; CREATE TABLE biz_test_batch_user ( batch_id BIGINT NOT NULL COMMENT '测试数据批次ID', user_id BIGINT NOT NULL COMMENT '用户ID', create_by VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者', create_time DATETIME NOT NULL COMMENT '创建时间', PRIMARY KEY (batch_id, user_id), CONSTRAINT fk_biz_test_batch_user_batch FOREIGN KEY (batch_id) REFERENCES biz_test_batch (batch_id), CONSTRAINT fk_biz_test_batch_user_user FOREIGN KEY (user_id) REFERENCES sys_user (user_id) ) ENGINE=InnoDB COMMENT='测试数据批次与用户关联'; ALTER TABLE biz_strain ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_strain_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_strain_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_customer ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_customer_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_customer_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_customer_site ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_customer_site_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_customer_site_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_production_line ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_production_line_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_production_line_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_warehouse ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_warehouse_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_warehouse_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_pallet ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_pallet_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_pallet_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_inbound_order ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_inbound_order_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_inbound_order_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_inbound_item ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_inbound_item_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_inbound_item_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_filling_record ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_filling_record_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_filling_record_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_shipment_order ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_shipment_order_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_shipment_order_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_shipment_item ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_shipment_item_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_shipment_item_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_usage_record ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_usage_record_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_usage_record_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_return_order ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_return_order_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_return_order_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_return_item ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_return_item_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_return_item_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_pallet_inventory ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_pallet_inventory_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_pallet_inventory_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); ALTER TABLE biz_pallet_event ADD COLUMN test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据', ADD INDEX idx_biz_pallet_event_test_batch_id (test_batch_id), ADD CONSTRAINT fk_biz_pallet_event_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id); -- 菜单迁移:移除旧物理删除权限,加入测试数据批次管理菜单。 -- 新菜单不自动授予普通角色;超级管理员由现有 admin 权限访问。 START TRANSACTION; DELETE FROM sys_role_menu WHERE menu_id IN (1068, 1072, 1076, 1081, 1085, 1090, 1095, 1102); DELETE FROM sys_menu WHERE menu_id IN (1068, 1072, 1076, 1081, 1085, 1090, 1095, 1102); INSERT INTO sys_menu VALUES (519, '测试数据批次', 1, '7', 'testBatch', 'system/testBatch/index', '', '', 1, 0, 'C', '0', '0', 'system:testbatch:list', '#', 'admin', SYSDATE(), '', NULL, '测试数据批次菜单'), (1109, '批次查询', 519, '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:query', '#', 'admin', SYSDATE(), '', NULL, ''), (1110, '批次新增', 519, '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:add', '#', 'admin', SYSDATE(), '', NULL, ''), (1111, '批次修改', 519, '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:edit', '#', 'admin', SYSDATE(), '', NULL, ''), (1112, '批次授权', 519, '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:assign', '#', 'admin', SYSDATE(), '', NULL, ''), (1113, '批次关闭', 519, '5', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:close', '#', 'admin', SYSDATE(), '', NULL, ''), (1114, '数据纳入', 519, '6', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:adopt', '#', 'admin', SYSDATE(), '', NULL, ''), (1115, '批次清理', 519, '7', '', '', '', '', 1, 0, 'F', '0', '0', 'system:testbatch:purge', '#', 'admin', SYSDATE(), '', NULL, ''); COMMIT;