admin/sql/migrate_t_pickup_order_line_service_no.sql
zzh a70f6f2a87 feat: 接入 9610 汇总申报,字段按业务含义命名并对齐运单
含清单/报关单拉取、ITFX 转发配置、迁移脚本与拣货单号扩展。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-30 17:46:04 +08:00

50 lines
1.5 KiB
SQL

-- 揽收明细:补齐运单号/客户单号快照(幂等;列已存在则跳过)
-- 对应实体 PickupOrderLine.ServiceNo / ClientNo
-- 报错 Unknown column 'ServiceNo' in 'field list' 时执行本脚本
-- MySQL 5.7+ / 8.0
SET @db := DATABASE();
-- ServiceNo
SET @col := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 't_pickup_order_line'
AND COLUMN_NAME = 'ServiceNo'
);
SET @sql := IF(
@col = 0,
'ALTER TABLE `t_pickup_order_line` ADD COLUMN `ServiceNo` VARCHAR(64) NULL COMMENT ''运单号快照(便于列表)'' AFTER `OrderId`',
'SELECT ''skip ServiceNo'' AS msg'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- ClientNo
SET @col := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 't_pickup_order_line'
AND COLUMN_NAME = 'ClientNo'
);
SET @sql := IF(
@col = 0,
'ALTER TABLE `t_pickup_order_line` ADD COLUMN `ClientNo` VARCHAR(64) NULL COMMENT ''客户单号快照'' AFTER `ServiceNo`',
'SELECT ''skip ClientNo'' AS msg'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 存量行从订单表回填快照(仅空值)
UPDATE `t_pickup_order_line` pl
INNER JOIN `t_order` o ON o.`Id` = pl.`OrderId`
SET
pl.`ServiceNo` = IFNULL(NULLIF(pl.`ServiceNo`, ''), o.`ServiceNo`),
pl.`ClientNo` = IFNULL(NULLIF(pl.`ClientNo`, ''), o.`ClientNo`)
WHERE pl.`IsDeleted` = 0
AND (pl.`ServiceNo` IS NULL OR pl.`ServiceNo` = '' OR pl.`ClientNo` IS NULL OR pl.`ClientNo` = '');