-- 一袋一码:破损袋码替换迁移 -- 说明:旧袋码保留并标记已作废,新袋码与旧袋码通过替换记录关联。 SET @cancel_time_exists = ( SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_pro_bag_code' AND column_name = 'cancel_time' ); SET @sql = IF(@cancel_time_exists = 0, 'ALTER TABLE mes_pro_bag_code ADD COLUMN cancel_time DATETIME DEFAULT NULL COMMENT ''作废时间'' AFTER print_time', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @cancel_reason_exists = ( SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_pro_bag_code' AND column_name = 'cancel_reason' ); SET @sql = IF(@cancel_reason_exists = 0, 'ALTER TABLE mes_pro_bag_code ADD COLUMN cancel_reason VARCHAR(255) DEFAULT NULL COMMENT ''作废原因'' AFTER cancel_time', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; CREATE TABLE IF NOT EXISTS `mes_pro_bag_code_replace` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号', `replace_uuid` VARCHAR(32) NOT NULL COMMENT '替换组 UUID', `batch_id` BIGINT NOT NULL COMMENT '生产批次编号', `batch_code` VARCHAR(64) DEFAULT NULL COMMENT '生产批次号', `old_bag_code_id` BIGINT NOT NULL COMMENT '旧袋码编号', `old_code` VARCHAR(64) NOT NULL COMMENT '旧袋码', `old_bag_no` INT NOT NULL COMMENT '旧袋序号', `old_status` TINYINT NOT NULL COMMENT '旧袋码作废前状态', `old_pallet_id` BIGINT DEFAULT NULL COMMENT '旧袋码原托盘编号', `old_pallet_code` VARCHAR(64) DEFAULT NULL COMMENT '旧袋码原托盘码', `new_bag_code_id` BIGINT NOT NULL COMMENT '新袋码编号', `new_code` VARCHAR(64) NOT NULL COMMENT '新袋码', `new_bag_no` INT NOT NULL COMMENT '新袋序号', `reason` VARCHAR(255) NOT NULL COMMENT '替换原因', `replace_time` DATETIME NOT NULL COMMENT '替换时间', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_old_bag_code_id` (`old_bag_code_id`), UNIQUE KEY `uk_new_bag_code_id` (`new_bag_code_id`), KEY `idx_replace_uuid` (`replace_uuid`), KEY `idx_batch_id` (`batch_id`), KEY `idx_old_code` (`old_code`), KEY `idx_new_code` (`new_code`) ) ENGINE = InnoDB COMMENT = 'MES 袋码替换记录'; INSERT INTO `system_menu` (`id`, `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 602629, '袋码破损替换', 'mes:pro-bag-code:replace', 3, 6, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `system_menu` WHERE `id` = 602629 OR (`permission` = 'mes:pro-bag-code:replace' AND `deleted` = b'0'));