二期内容提交
This commit is contained in:
@@ -1178,6 +1178,39 @@ SET @sql = IF((SELECT COUNT(*) FROM information_schema.statistics WHERE table_sc
|
||||
PREPARE statement FROM @sql; EXECUTE statement; DEALLOCATE PREPARE statement;
|
||||
|
||||
|
||||
-- 第三方单条箱规 + 单张图片绑定增量。
|
||||
USE baiyue_firstleg;
|
||||
DROP PROCEDURE IF EXISTS phase2_add_measurement_column;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE phase2_add_measurement_column(
|
||||
IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_definition TEXT)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table AND COLUMN_NAME = p_column
|
||||
) THEN
|
||||
SET @ddl = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN `', p_column, '` ', p_definition);
|
||||
PREPARE statement FROM @ddl;
|
||||
EXECUTE statement;
|
||||
DEALLOCATE PREPARE statement;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL phase2_add_measurement_column('fl_inbound_measurement', 'external_request_hash',
|
||||
'CHAR(64) NULL COMMENT ''第三方data原文和图片内容联合请求哈希'' AFTER external_event_no');
|
||||
CALL phase2_add_measurement_column('fl_inbound_measurement_item', 'inbound_detail_id',
|
||||
'BIGINT UNSIGNED NULL COMMENT ''绑定的订单货物明细ID,平台手工明细可为空'' AFTER measurement_id');
|
||||
CALL phase2_add_measurement_column('fl_inbound_measurement_item', 'external_detail_no',
|
||||
'VARCHAR(128) NULL COMMENT ''第三方测量明细唯一号,平台手工明细可为空'' AFTER inbound_detail_id');
|
||||
DROP PROCEDURE IF EXISTS phase2_add_measurement_column;
|
||||
SET @has_index = (SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'fl_inbound_measurement_item'
|
||||
AND INDEX_NAME = 'uk_measure_external_detail');
|
||||
SET @ddl = IF(@has_index = 0,
|
||||
'ALTER TABLE fl_inbound_measurement_item ADD UNIQUE KEY uk_measure_external_detail (tenant_id, inbound_detail_id, external_detail_no)',
|
||||
'SELECT 1');
|
||||
PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement;
|
||||
|
||||
-- 结构核对:只读输出,不写业务数据。
|
||||
SELECT 'firstleg 二期核心表数量' AS check_item,
|
||||
COUNT(*) AS actual_value,
|
||||
@@ -1228,4 +1261,21 @@ WHERE table_schema = 'baiyue_warehouse'
|
||||
OR (table_name = 'wh_location_occupancy' AND index_name IN ('uk_location_active_occupancy', 'uk_pallet_active_occupancy'))
|
||||
);
|
||||
|
||||
SELECT '第三方单条测量绑定关键列' AS check_item,
|
||||
COUNT(*) AS actual_value,
|
||||
IF(COUNT(*) = 3, 'PASS', 'FAIL') AS check_result
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND ((table_name = 'fl_inbound_measurement' AND column_name = 'external_request_hash')
|
||||
OR (table_name = 'fl_inbound_measurement_item'
|
||||
AND column_name IN ('inbound_detail_id', 'external_detail_no')));
|
||||
|
||||
SELECT '第三方单条测量绑定唯一索引' AS check_item,
|
||||
COUNT(DISTINCT index_name) AS actual_value,
|
||||
IF(COUNT(DISTINCT index_name) = 1, 'PASS', 'FAIL') AS check_result
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_inbound_measurement_item'
|
||||
AND index_name = 'uk_measure_external_detail';
|
||||
|
||||
SELECT '二期入库新增表与字段脚本执行完成,请确认以上检查全部为 PASS' AS execution_message;
|
||||
|
||||
@@ -25,3 +25,10 @@
|
||||
在 Navicat、DataGrip 或 MySQL 命令行中以“运行脚本”方式完整执行,确保客户端支持 `DELIMITER`。不要只选中局部语句执行。
|
||||
|
||||
执行结束后必须看到 `MIGRATION_COMPLETED`,并确认其前面的 IAM 权限、IAM 客户档案九字段、Warehouse 表结构、Order 幂等表和 Firstleg 索引核验均通过。
|
||||
|
||||
## 二期第三方测量增量
|
||||
|
||||
- 模块脚本:`firstleg/src/main/resources/db/phase2-third-party-single-measurement-migration.sql`。
|
||||
- 二期统一脚本:`2026-08-04-二期入库新增表字段-MySQL8一键执行.sql` 已内联该增量。
|
||||
- 新增 `external_request_hash`、`inbound_detail_id`、`external_detail_no` 和第三方明细唯一索引,用于一条回传绑定一条订单货物明细及一张文件中心图片。
|
||||
- 本次代码回归不执行真实数据库迁移;测试环境部署 Firstleg 新版本前必须先执行该增量并确认末尾两项检查为 `PASS`。
|
||||
|
||||
Reference in New Issue
Block a user