Files
baiyue-firstleg/scripts/db/test-lastleg-relabel-return-transfer-columns.sql
T

57 lines
3.1 KiB
SQL
Raw Normal View History

2026-09-20 15:06:56 +08:00
-- 本地与 test 结构比对(2026-09-20):仅补 test 缺失的贴标/退货换标字段。
-- 执行前连接到预期的 test MySQL;本脚本只作用于尾程业务库,不修改连接配置或其他 schema。
-- MySQL 8;可重复执行。DDL 会隐式提交,遇错应停止执行,不使用 mysql --force。
USE `baiyue_lastleg`;
-- 贴标 PDA:一次 SKU 扫描可登记多件;旧记录保持默认数量 1。
SET @ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'll_relabel_pda_unit_fact' AND column_name = 'quantity'),
'SELECT 1',
'ALTER TABLE `ll_relabel_pda_unit_fact` ADD COLUMN `quantity` INT NOT NULL DEFAULT 1 COMMENT ''本次事实处理件数,箱级作业固定为1'' AFTER `reason`'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- 退货签收和库存箱记录来源托盘。
SET @ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'll_return_receipt' AND column_name = 'pallet_code'),
'SELECT 1',
'ALTER TABLE `ll_return_receipt` ADD COLUMN `pallet_code` VARCHAR(128) NULL COMMENT ''本次签收绑定的托盘码'' AFTER `receipt_batch_no`'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'll_return_inventory_carton' AND column_name = 'pallet_code'),
'SELECT 1',
'ALTER TABLE `ll_return_inventory_carton` ADD COLUMN `pallet_code` VARCHAR(128) NULL COMMENT ''签收时绑定的托盘码'' AFTER `source_return_no`'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- 退货单手动差异完结的审计字段。
SET @ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'll_return_order' AND column_name = 'discrepancy_reason'),
'SELECT 1',
'ALTER TABLE `ll_return_order` ADD COLUMN `discrepancy_reason` VARCHAR(500) NULL COMMENT ''手动完结差异原因'' AFTER `remark`'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'll_return_order' AND column_name = 'manually_completed_at'),
'SELECT 1',
'ALTER TABLE `ll_return_order` ADD COLUMN `manually_completed_at` DATETIME(3) NULL COMMENT ''手动差异完结时间'' AFTER `discrepancy_reason`'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- 预期返回 5;低于 5 表示本次补齐不完整。
SELECT DATABASE() AS target_schema, COUNT(*) AS aligned_column_count
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND (table_name = 'll_relabel_pda_unit_fact' AND column_name = 'quantity'
OR table_name = 'll_return_receipt' AND column_name = 'pallet_code'
OR table_name = 'll_return_inventory_carton' AND column_name = 'pallet_code'
OR table_name = 'll_return_order' AND column_name IN ('discrepancy_reason', 'manually_completed_at'));