🐛 修正应收账单收货重快照字段来源

This commit is contained in:
caojia
2026-10-13 18:05:48 +08:00
parent 83941be542
commit 3edc8ea009
6 changed files with 55 additions and 20 deletions
@@ -1,14 +1,14 @@
-- 应收账单订单明细冗余 prc_order_bill.weight,供账单导出使用。
-- 应收账单订单明细冗余 prc_order_bill.receive_weight(收货重),供账单导出使用。
-- 来源字段为空时快照保留 NULL,不伪造为 0。
SET @column_exists := (
SELECT COUNT(1) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail'
AND COLUMN_NAME = 'weight'
AND COLUMN_NAME = 'receive_weight'
);
SET @sql := IF(@column_exists = 0,
'ALTER TABLE `ar_bill_detail` ADD COLUMN `weight` decimal(10,3) DEFAULT NULL COMMENT ''prc_order_bill.weight来源快照'' AFTER `actual_weight`',
'ALTER TABLE `ar_bill_detail` ADD COLUMN `receive_weight` decimal(10,3) DEFAULT NULL COMMENT ''prc_order_bill.receive_weight收货重来源快照'' AFTER `actual_weight`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
@@ -17,5 +17,5 @@ DEALLOCATE PREPARE stmt;
UPDATE `ar_bill_detail` d
INNER JOIN `prc_order_bill` p ON p.`bill_id` = d.`prc_order_bill_id`
SET d.`weight` = p.`weight`
WHERE d.`weight` IS NULL AND p.`weight` IS NOT NULL;
SET d.`receive_weight` = p.`receive_weight`
WHERE d.`receive_weight` IS NULL AND p.`receive_weight` IS NOT NULL;
@@ -0,0 +1,35 @@
-- 应收账单快照字段 weight 重命名为 receive_weight,并以 prc_order_bill.receive_weight 修正历史值。
-- 来源字段为空时保留 NULL;本迁移完成后删除旧 weight 列。
SET @column_exists := (
SELECT COUNT(1) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail'
AND COLUMN_NAME = 'receive_weight'
);
SET @sql := IF(@column_exists = 0,
'ALTER TABLE `ar_bill_detail` ADD COLUMN `receive_weight` decimal(10,3) DEFAULT NULL COMMENT ''prc_order_bill.receive_weight收货重来源快照'' AFTER `actual_weight`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE `ar_bill_detail` d
INNER JOIN `prc_order_bill` p ON p.`bill_id` = d.`prc_order_bill_id`
SET d.`receive_weight` = p.`receive_weight`
WHERE NOT (d.`receive_weight` <=> p.`receive_weight`);
SET @column_exists := (
SELECT COUNT(1) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail'
AND COLUMN_NAME = 'weight'
);
SET @sql := IF(@column_exists > 0,
'ALTER TABLE `ar_bill_detail` DROP COLUMN `weight`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
+1 -1
View File
@@ -116,7 +116,7 @@ CREATE TABLE `ar_bill_detail` (
`country_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的国家名称',
`dest_postcode` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的邮编',
`actual_weight` decimal(12,3) DEFAULT NULL COMMENT '实际重量KG',
`weight` decimal(10,3) DEFAULT NULL COMMENT 'prc_order_bill.weight来源快照',
`receive_weight` decimal(10,3) DEFAULT NULL COMMENT 'prc_order_bill.receive_weight收货重来源快照',
`volume_weight` decimal(12,3) DEFAULT NULL COMMENT '材积重量KG',
`charge_weight` decimal(12,3) DEFAULT NULL COMMENT '计费重量KG',
`freight_rate` decimal(10,4) DEFAULT NULL COMMENT '运费单价快照',