@@ -0,0 +1,66 @@
-- Region: OVERSEAS
-- Schema: baiyue_lastleg
-- Purpose: 补齐测试与生产各自缺失的尾程字段,并将字段定义收敛到当前空库基线。
-- Preconditions: 连接必须指向 baiyue_lastleg;待收紧字段不存在 NULL, review_decision 不超过 16 字符。
-- Postconditions: 本文件涉及的字段集合、类型、默认值、可空性和测量照片表排序规则与海外统一初始化 SQL 一致。
SET NAMES utf8mb4 ;
-- 测试环境当前缺失、生产已存在的 PDA 废弃作业字段。
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_cargo_discard_item ' AND column_name = ' actual_discard_packages ' ) , ' ALTER TABLE ll_cargo_discard_item ADD COLUMN actual_discard_packages int NULL COMMENT '' PDA确认实际废弃箱数 '' AFTER discard_packages ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_cargo_discard_item ' AND column_name = ' pda_status ' ) , ' ALTER TABLE ll_cargo_discard_item ADD COLUMN pda_status varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' PENDING '' COMMENT '' PDA处理状态:待处理PENDING、已完成COMPLETED '' AFTER actual_discard_packages ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_cargo_discard_item ' AND column_name = ' pda_operator_id ' ) , ' ALTER TABLE ll_cargo_discard_item ADD COLUMN pda_operator_id varchar(128) COLLATE utf8mb4_unicode_ci NULL COMMENT '' PDA操作人 '' AFTER pda_status ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_cargo_discard_item ' AND column_name = ' pda_completed_at ' ) , ' ALTER TABLE ll_cargo_discard_item ADD COLUMN pda_completed_at datetime(3) NULL COMMENT '' PDA完成时间 '' AFTER pda_operator_id ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
-- 生产环境当前缺失、测试已存在的换标与退货字段。
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_relabel_pda_unit_fact ' AND column_name = ' quantity ' ) , ' ALTER TABLE ll_relabel_pda_unit_fact ADD COLUMN quantity int NOT NULL DEFAULT 1 COMMENT '' 本次事实处理件数,箱级作业固定为1 '' AFTER reason ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_return_inventory_carton ' AND column_name = ' pallet_code ' ) , ' ALTER TABLE ll_return_inventory_carton ADD COLUMN pallet_code varchar(128) COLLATE utf8mb4_unicode_ci NULL COMMENT '' 签收时绑定的托盘码 '' AFTER source_return_no ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_return_order ' AND column_name = ' discrepancy_reason ' ) , ' ALTER TABLE ll_return_order ADD COLUMN discrepancy_reason varchar(500) COLLATE utf8mb4_unicode_ci NULL COMMENT '' 手动完结差异原因 '' AFTER status ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_return_order ' AND column_name = ' manually_completed_at ' ) , ' ALTER TABLE ll_return_order ADD COLUMN manually_completed_at datetime(3) NULL COMMENT '' 手动差异完结时间 '' AFTER discrepancy_reason ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ ddl = IF ( NOT EXISTS ( SELECT 1 FROM information_schema . columns WHERE table_schema = DATABASE ( ) AND table_name = ' ll_return_receipt ' AND column_name = ' pallet_code ' ) , ' ALTER TABLE ll_return_receipt ADD COLUMN pallet_code varchar(128) COLLATE utf8mb4_unicode_ci NULL COMMENT '' 本次签收绑定的托盘码 '' AFTER carton_mark ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
-- 收紧测试库漂移字段前先阻断不满足目标定义的数据,不执行自动回填或清理。
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_delivery_order WHERE delivery_group_key IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_delivery_order.delivery_group_key contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_local_looseboard_order WHERE container_type IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_local_looseboard_order.container_type contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_us_truck_order WHERE container_type IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_us_truck_order.container_type contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_outbound_pda_pick WHERE inventory_position_id IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_outbound_pda_pick.inventory_position_id contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_relabel_item WHERE new_sku_code IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_relabel_item.new_sku_code contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_relabel_item WHERE source_warehouse_id IS NULL LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_relabel_item.source_warehouse_id contains NULL '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
SET @ guard = IF ( EXISTS ( SELECT 1 FROM ll_relabel_pda_task WHERE CHAR_LENGTH ( review_decision ) > 16 LIMIT 1 ) , ' SIGNAL SQLSTATE '' 45000 '' SET MESSAGE_TEXT = '' ll_relabel_pda_task.review_decision exceeds 16 characters '' ' , ' SELECT 1 ' ) ;
PREPARE stmt FROM @ guard ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
ALTER TABLE ll_delivery_order
MODIFY COLUMN delivery_group_key varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 同一出库单内按目的FBA仓拆单的稳定分组键 ' ;
ALTER TABLE ll_local_looseboard_order
MODIFY COLUMN container_type varchar ( 32 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' 40HQ ' COMMENT ' 平台统一柜型:40GP、40HQ、45HQ ' ;
ALTER TABLE ll_us_truck_order
MODIFY COLUMN container_type varchar ( 32 ) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' 40HQ ' COMMENT ' 平台统一柜型:40GP、40HQ、45HQ ' ;
ALTER TABLE ll_outbound_pda_pick
MODIFY COLUMN inventory_position_id bigint NOT NULL COMMENT ' 库存仓位ID ' ;
ALTER TABLE ll_relabel_item
MODIFY COLUMN new_sku_code varchar ( 128 ) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 换标后SKU编码 ' ,
MODIFY COLUMN source_warehouse_id varchar ( 128 ) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 原海外中转仓ID ' ;
ALTER TABLE ll_relabel_pda_task
MODIFY COLUMN review_decision varchar ( 16 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT ' 最近复核结论:APPROVE或REWORK ' ;
SET @ ddl = IF (
( SELECT table_collation FROM information_schema . tables WHERE table_schema = DATABASE ( ) AND table_name = ' ll_warehouse_transfer_measurement_photo ' ) < > ' utf8mb4_unicode_ci ' ,
' ALTER TABLE ll_warehouse_transfer_measurement_photo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ' ,
' SELECT 1 '
) ;
PREPARE stmt FROM @ ddl ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;