Merge branch 'test' of http://8.163.30.128:10082/java-project/baiyue-firstleg into test
This commit is contained in:
@@ -4430,6 +4430,79 @@ DROP TEMPORARY TABLE IF EXISTS tmp_wh_fixed_platform_warehouse;
|
||||
|
||||
-- 全部增量完成后的最终结构强校验;只有通过此段才输出唯一 PASS
|
||||
-- ============================================================
|
||||
USE baiyue_firstleg;
|
||||
DROP PROCEDURE IF EXISTS unified_publish_fee_add_column;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE unified_publish_fee_add_column(
|
||||
IN target_table VARCHAR(64), IN target_column VARCHAR(64), IN column_definition TEXT
|
||||
)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE() AND table_name = target_table AND column_name = target_column
|
||||
) THEN
|
||||
SET @ddl = CONCAT('ALTER TABLE `', target_table, '` ADD COLUMN `', target_column, '` ', column_definition);
|
||||
PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL unified_publish_fee_add_column('fl_fee_item', 'fee_code',
|
||||
"VARCHAR(50) NULL COMMENT '稳定费用编码;系统费用使用固定编码' AFTER trade_scope");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'source_type',
|
||||
"VARCHAR(32) NOT NULL DEFAULT 'MANUAL' COMMENT 'MANUAL或FBA_PRICING' AFTER fee_item_id");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'source_fee_id',
|
||||
"BIGINT UNSIGNED NULL COMMENT '来源计费快照ID' AFTER source_type");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'source_fee_version',
|
||||
"INT UNSIGNED NULL COMMENT '来源计费快照版本' AFTER source_fee_id");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'source_fee_no',
|
||||
"VARCHAR(40) NULL COMMENT '来源费用单号' AFTER source_fee_version");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'customer_id',
|
||||
"BIGINT UNSIGNED NULL COMMENT '客户ID快照' AFTER business_date");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'customer_name',
|
||||
"VARCHAR(128) NULL COMMENT '客户公司名称快照' AFTER customer_id");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'invoice_title',
|
||||
"VARCHAR(256) NULL COMMENT '发票抬头快照' AFTER customer_name");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'chargeable_quantity',
|
||||
"DECIMAL(18,4) NULL COMMENT '本费用最终计费量' AFTER chargeable_volume_cbm");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'charge_unit',
|
||||
"VARCHAR(16) NULL COMMENT 'KG或CBM' AFTER chargeable_quantity");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'publication_status',
|
||||
"VARCHAR(16) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT、PUBLISHED、SUPERSEDED' AFTER review_reason");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'published_by',
|
||||
"BIGINT NULL COMMENT '发布人ID' AFTER publication_status");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'published_by_name',
|
||||
"VARCHAR(64) NULL COMMENT '发布人名称快照' AFTER published_by");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'published_at',
|
||||
"DATETIME(3) NULL COMMENT '发布时间' AFTER published_by_name");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'inbounded_at',
|
||||
"DATETIME(3) NULL COMMENT '入库完成时间快照' AFTER published_at");
|
||||
CALL unified_publish_fee_add_column('fl_inbound_fee_detail', 'settlement_included',
|
||||
"TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否参与结算' AFTER inbounded_at");
|
||||
DROP PROCEDURE IF EXISTS unified_publish_fee_add_column;
|
||||
|
||||
DROP PROCEDURE IF EXISTS unified_publish_fee_add_index;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE unified_publish_fee_add_index(
|
||||
IN target_table VARCHAR(64), IN target_index VARCHAR(64), IN index_definition TEXT
|
||||
)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE() AND table_name = target_table AND index_name = target_index
|
||||
) THEN
|
||||
SET @ddl = CONCAT('ALTER TABLE `', target_table, '` ADD ', index_definition);
|
||||
PREPARE statement FROM @ddl; EXECUTE statement; DEALLOCATE PREPARE statement;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL unified_publish_fee_add_index('fl_fee_item', 'uk_fee_item_code',
|
||||
'UNIQUE KEY `uk_fee_item_code` (`tenant_id`, `fee_code`)');
|
||||
CALL unified_publish_fee_add_index('fl_inbound_fee_detail', 'uk_inbound_fee_source',
|
||||
'UNIQUE KEY `uk_inbound_fee_source` (`tenant_id`, `source_type`, `source_fee_id`)');
|
||||
CALL unified_publish_fee_add_index('fl_inbound_fee_detail', 'idx_inbound_fee_published',
|
||||
'KEY `idx_inbound_fee_published` (`tenant_id`, `inbound_id`, `publication_status`, `source_fee_version`)');
|
||||
DROP PROCEDURE IF EXISTS unified_publish_fee_add_index;
|
||||
|
||||
DROP PROCEDURE IF EXISTS unified_assert_final_extensions;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE unified_assert_final_extensions()
|
||||
@@ -4448,6 +4521,37 @@ BEGIN
|
||||
SIGNAL SQLSTATE '45000'
|
||||
SET MESSAGE_TEXT = '统一迁移失败:费用表 tenant_id 客户隔离语义未同步';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_fee_item'
|
||||
AND column_name = 'fee_code') <> 1
|
||||
OR (SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_inbound_fee_detail'
|
||||
AND column_name IN (
|
||||
'source_type', 'source_fee_id', 'source_fee_version', 'source_fee_no',
|
||||
'customer_id', 'customer_name', 'invoice_title',
|
||||
'chargeable_quantity', 'charge_unit', 'publication_status',
|
||||
'published_by', 'published_by_name', 'published_at', 'inbounded_at',
|
||||
'settlement_included')) <> 15 THEN
|
||||
SIGNAL SQLSTATE '45000'
|
||||
SET MESSAGE_TEXT = '统一迁移失败:已发布入库运费明细字段未完整创建';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_fee_item'
|
||||
AND index_name = 'uk_fee_item_code' AND non_unique = 0) <> 2
|
||||
OR (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_inbound_fee_detail'
|
||||
AND index_name = 'uk_inbound_fee_source' AND non_unique = 0) <> 3
|
||||
OR (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
AND table_name = 'fl_inbound_fee_detail'
|
||||
AND index_name = 'idx_inbound_fee_published') <> 4 THEN
|
||||
SIGNAL SQLSTATE '45000'
|
||||
SET MESSAGE_TEXT = '统一迁移失败:已发布入库运费明细索引未完整创建';
|
||||
END IF;
|
||||
IF (SELECT COUNT(DISTINCT CONCAT(table_name, '.', index_name))
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'baiyue_firstleg'
|
||||
|
||||
Reference in New Issue
Block a user