This commit is contained in:
2026-09-28 17:17:28 +08:00
parent 6954932ce3
commit 6a3b6e22e6
4 changed files with 10 additions and 8 deletions
@@ -1,15 +1,14 @@
-- Region: CN
-- Schema: baiyue_firstleg
-- Purpose: 对齐墨家测量收件箱字段并允许人工报价费用快照缺少船司价格。
-- Preconditions: 连接必须指向 baiyue_firstleg;若墨家收件箱已有记录,必须先完成经批准的重量回填方案;本文件不执行 UPDATE。
-- Preconditions: 连接必须指向 baiyue_firstleg;墨家收件表已存在;未收到的设备重量保留 NULL,不回填为 0。
-- Postconditions: 墨家收件箱字段、入库费用船司价格字段与当前 Firstleg 基线一致。
SET NAMES utf8mb4;
SET @guard = IF(
EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'fl_mojia_measurement_receipt')
AND EXISTS (SELECT 1 FROM fl_mojia_measurement_receipt LIMIT 1),
'SELECT 1 FROM migration_blocked_firstleg_mojia_receipt_requires_weight_review',
NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'fl_mojia_measurement_receipt'),
'SELECT 1 FROM migration_blocked_firstleg_mojia_receipt_table_missing',
'SELECT 1'
);
PREPARE stmt FROM @guard; EXECUTE stmt; DEALLOCATE PREPARE stmt;
@@ -21,7 +20,10 @@ SET @ddl = IF(NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_s
'ALTER TABLE fl_mojia_measurement_receipt ADD COLUMN measurement_kind VARCHAR(16) NOT NULL DEFAULT ''BOX_LABEL'' COMMENT ''测量分流:BOX_LABEL箱唛;SKU一件代发SKU'' AFTER inbound_code', '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 = 'fl_mojia_measurement_receipt' AND column_name = 'weight_kg'),
'ALTER TABLE fl_mojia_measurement_receipt ADD COLUMN weight_kg DECIMAL(18,3) NOT NULL COMMENT ''设备实测重量kg'' AFTER height_cm', 'SELECT 1');
'ALTER TABLE fl_mojia_measurement_receipt ADD COLUMN weight_kg DECIMAL(18,3) NULL COMMENT ''设备实测重量kg;未收到时为空,不以0代替'' AFTER height_cm', 'SELECT 1');
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 = 'fl_mojia_measurement_receipt' AND column_name = 'weight_kg' AND is_nullable = 'NO'),
'ALTER TABLE fl_mojia_measurement_receipt MODIFY COLUMN weight_kg DECIMAL(18,3) NULL COMMENT ''设备实测重量kg;未收到时为空,不以0代替''', '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 = 'fl_mojia_measurement_receipt' AND column_name = 'sync_status'),
'ALTER TABLE fl_mojia_measurement_receipt ADD COLUMN sync_status VARCHAR(24) NULL COMMENT ''SKU同步状态:PENDING/SYNCING/SUCCESS/FAILED'' AFTER status', 'SELECT 1');
@@ -3436,7 +3436,7 @@ CREATE TABLE fl_mojia_measurement_receipt (
length_cm decimal(12,3) NOT NULL COMMENT '设备实测长度cm',
width_cm decimal(12,3) NOT NULL COMMENT '设备实测宽度cm',
height_cm decimal(12,3) NOT NULL COMMENT '设备实测高度cm',
weight_kg decimal(18,3) NOT NULL COMMENT '设备实测重量kg',
weight_kg decimal(18,3) DEFAULT NULL COMMENT '设备实测重量kg;未收到时为空,不以0代替',
machine_no varchar(64) NOT NULL COMMENT '设备编号',
measured_at datetime(3) NOT NULL COMMENT '设备测量时间或服务接收时间',
image_file_id bigint unsigned NOT NULL COMMENT 'File服务中的墨家联调图片ID',
@@ -335,7 +335,7 @@ CREATE TABLE IF NOT EXISTS fl_mojia_measurement_receipt (
length_cm DECIMAL(12,3) NOT NULL COMMENT '设备实测长度cm',
width_cm DECIMAL(12,3) NOT NULL COMMENT '设备实测宽度cm',
height_cm DECIMAL(12,3) NOT NULL COMMENT '设备实测高度cm',
weight_kg DECIMAL(18,3) NOT NULL COMMENT '设备实测重量kg',
weight_kg DECIMAL(18,3) NULL COMMENT '设备实测重量kg;未收到时为空,不以0代替',
machine_no VARCHAR(64) NOT NULL COMMENT '设备编号',
measured_at DATETIME(3) NOT NULL COMMENT '设备测量时间或服务接收时间',
image_file_id BIGINT UNSIGNED NOT NULL COMMENT 'File服务中的墨家联调图片ID',
@@ -89,7 +89,7 @@ test('近期头程与海外结构完整进入各自统一初始化入口', () =>
const receipt = table(cn, 'baiyue_firstleg', 'fl_mojia_measurement_receipt')
for (const field of ['measurement_kind', 'weight_kg', 'sync_status', 'sync_failure_code',
'sync_failure_reason', 'lingxing_sku_id', 'revision']) assert.match(receipt, new RegExp(`\\b${field}\\b`, 'i'))
assert.match(receipt, /weight_kg decimal\(18,3\) NOT NULL/i)
assert.match(receipt, /weight_kg decimal\(18,3\) DEFAULT NULL/i)
const relabel = table(overseas, 'baiyue_lastleg', 'll_relabel_application')
assert.match(relabel, /KEY idx_ll_relabel_application_order \(lastleg_order_id\)/i)