-- 三期 PDA 部分拣货释放策略与 A0 共享资源唯一标识。 SET NAMES utf8mb4; DROP PROCEDURE IF EXISTS phase3_pda_add_column; DELIMITER $$ CREATE PROCEDURE phase3_pda_add_column(IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_ddl TEXT) BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_column ) THEN SET @phase3_pda_ddl = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN ', p_ddl); PREPARE phase3_pda_stmt FROM @phase3_pda_ddl; EXECUTE phase3_pda_stmt; DEALLOCATE PREPARE phase3_pda_stmt; END IF; END$$ DELIMITER ; CALL phase3_pda_add_column('fl_loading_pick_item', 'release_mode', '`release_mode` VARCHAR(10) NULL COMMENT ''AUTO按比例释放,MANUAL按人工选择释放'' AFTER `item_status`'); CALL phase3_pda_add_column('fl_loading_pick_item', 'release_location_ids', '`release_location_ids` JSON NULL COMMENT ''人工选择释放库位ID;空数组表示明确释放0个'' AFTER `release_mode`'); CALL phase3_pda_add_column('fl_inbound_pallet_allocation', 'reservation_id', '`reservation_id` BIGINT UNSIGNED NULL COMMENT ''仓库预占资源唯一ID,A0共享场景用于区分托盘'' AFTER `location_code`'); SET @phase3_pda_index_ddl = IF( EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = 'fl_inbound_pallet_allocation' AND index_name = 'idx_allocation_reservation'), 'SELECT 1', 'ALTER TABLE fl_inbound_pallet_allocation ADD INDEX idx_allocation_reservation (reservation_id)'); PREPARE phase3_pda_index_stmt FROM @phase3_pda_index_ddl; EXECUTE phase3_pda_index_stmt; DEALLOCATE PREPARE phase3_pda_index_stmt; DROP PROCEDURE IF EXISTS phase3_pda_add_column;