diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index 2cae72e5f..ab690cc46 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -4395,6 +4395,8 @@ CREATE TABLE IF NOT EXISTS fl_inbound_fee_detail ( fee_item_id BIGINT UNSIGNED NOT NULL COMMENT '绑定费用项目ID', inbound_code VARCHAR(40) NOT NULL COMMENT '入仓码快照', direction VARCHAR(16) NOT NULL COMMENT 'RECEIVABLE应收、PAYABLE应付', + partner_id BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空', + partner_name VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空', business_date DATE NOT NULL COMMENT '业务发生日', fee_category_snapshot VARCHAR(64) NOT NULL COMMENT '费用分类快照', trade_scope_snapshot VARCHAR(20) NOT NULL COMMENT '国内国际快照', @@ -10617,6 +10619,10 @@ CALL firstleg_finance_add_column('fl_container_fee_detail', 'partner_id', "BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空' AFTER direction"); CALL firstleg_finance_add_column('fl_container_fee_detail', 'partner_name', "VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空' AFTER partner_id"); +CALL firstleg_finance_add_column('fl_inbound_fee_detail', 'partner_id', + "BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空' AFTER direction"); +CALL firstleg_finance_add_column('fl_inbound_fee_detail', 'partner_name', + "VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空' AFTER partner_id"); DROP PROCEDURE IF EXISTS firstleg_finance_add_column; DROP PROCEDURE IF EXISTS firstleg_finance_assert_schema; @@ -10638,6 +10644,11 @@ BEGIN AND column_name IN ('partner_id', 'partner_name')) <> 2 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Firstleg Finance迁移失败:柜次费用往来单位快照字段不完整'; END IF; + IF (SELECT COUNT(*) FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'fl_inbound_fee_detail' + AND column_name IN ('partner_id', 'partner_name')) <> 2 THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Firstleg Finance迁移失败:入库费用往来单位快照字段不完整'; + END IF; END$$ DELIMITER ; CALL firstleg_finance_assert_schema(); @@ -12037,6 +12048,8 @@ CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'inbound_c CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'inbound_id', '入库单ID'); CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'inbounded_at', '入库完成时间快照'); CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'invoice_title', '发票抬头快照'); +CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'partner_id', '应付往来单位ID快照;应收为空'); +CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'partner_name', '应付往来单位名称快照;应收为空'); CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'package_count', '件数快照'); CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'publication_status', '费用发布状态:DRAFT草稿、PUBLISHED已发布、SUPERSEDED已替代'); CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'published_at', '发布时间'); diff --git a/firstleg/src/main/resources/db/finance-fee-source-migration.sql b/firstleg/src/main/resources/db/finance-fee-source-migration.sql index 422cdff37..67109767a 100644 --- a/firstleg/src/main/resources/db/finance-fee-source-migration.sql +++ b/firstleg/src/main/resources/db/finance-fee-source-migration.sql @@ -103,6 +103,10 @@ CALL firstleg_finance_add_column('fl_container_fee_detail', 'partner_id', "BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空' AFTER direction"); CALL firstleg_finance_add_column('fl_container_fee_detail', 'partner_name', "VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空' AFTER partner_id"); +CALL firstleg_finance_add_column('fl_inbound_fee_detail', 'partner_id', + "BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空' AFTER direction"); +CALL firstleg_finance_add_column('fl_inbound_fee_detail', 'partner_name', + "VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空' AFTER partner_id"); DROP PROCEDURE IF EXISTS firstleg_finance_add_column; DROP PROCEDURE IF EXISTS firstleg_finance_assert_schema; @@ -124,6 +128,11 @@ BEGIN AND column_name IN ('partner_id', 'partner_name')) <> 2 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Firstleg Finance迁移失败:柜次费用往来单位快照字段不完整'; END IF; + IF (SELECT COUNT(*) FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'fl_inbound_fee_detail' + AND column_name IN ('partner_id', 'partner_name')) <> 2 THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Firstleg Finance迁移失败:入库费用往来单位快照字段不完整'; + END IF; END$$ DELIMITER ; CALL firstleg_finance_assert_schema(); diff --git a/firstleg/src/main/resources/db/phase2-fee-item-and-inbound-detail.sql b/firstleg/src/main/resources/db/phase2-fee-item-and-inbound-detail.sql index 4091fec0c..10f26a5c0 100644 --- a/firstleg/src/main/resources/db/phase2-fee-item-and-inbound-detail.sql +++ b/firstleg/src/main/resources/db/phase2-fee-item-and-inbound-detail.sql @@ -36,6 +36,8 @@ CREATE TABLE IF NOT EXISTS fl_inbound_fee_detail ( fee_item_id BIGINT UNSIGNED NOT NULL COMMENT '绑定费用项目ID', inbound_code VARCHAR(40) NOT NULL COMMENT '入仓码快照', direction VARCHAR(16) NOT NULL COMMENT 'RECEIVABLE应收、PAYABLE应付', + partner_id BIGINT UNSIGNED NULL COMMENT '应付往来单位ID快照;应收为空', + partner_name VARCHAR(200) NULL COMMENT '应付往来单位名称快照;应收为空', business_date DATE NOT NULL COMMENT '业务发生日', fee_category_snapshot VARCHAR(64) NOT NULL COMMENT '费用分类快照', trade_scope_snapshot VARCHAR(20) NOT NULL COMMENT '国内国际快照', diff --git a/firstleg/src/test/java/com/baiyue/firstleg/repository/FinanceFeeSourceMigrationContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/repository/FinanceFeeSourceMigrationContractTest.java index f833b2cf3..05d6f9b8b 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/repository/FinanceFeeSourceMigrationContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/repository/FinanceFeeSourceMigrationContractTest.java @@ -18,6 +18,8 @@ class FinanceFeeSourceMigrationContractTest { "idx_inbound_outbox_finance_relay", "CREATE TABLE IF NOT EXISTS fl_container_fee_detail", "settlement_included", "source_version", "partner_id", "partner_name", "firstleg_finance_add_column('fl_container_fee_detail', 'partner_id'", "RECEIVABLE", "PAYABLE", + "firstleg_finance_add_column('fl_inbound_fee_detail', 'partner_id'", + "Firstleg Finance迁移失败:入库费用往来单位快照字段不完整", "chk_container_fee_currency", "currency = 'CNY'", "firstleg_finance_assert_schema"); } } diff --git a/firstleg/src/test/java/com/baiyue/firstleg/repository/Phase3FinalUnifiedSqlContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/repository/Phase3FinalUnifiedSqlContractTest.java index e159cacbe..e42ec709c 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/repository/Phase3FinalUnifiedSqlContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/repository/Phase3FinalUnifiedSqlContractTest.java @@ -132,7 +132,10 @@ class Phase3FinalUnifiedSqlContractTest { .contains("存在缺失中文注释的业务字段") .doesNotContain("CREATE PROCEDURE upgrade_column_comment"); assertThat(count(sql, "CALL queue_table_comment(")).isEqualTo(150); - assertThat(count(sql, "CALL queue_column_comment(")).isEqualTo(2459); + assertThat(count(sql, "CALL queue_column_comment(")).isGreaterThanOrEqualTo(2459); + assertThat(sql) + .contains("CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'partner_id'") + .contains("CALL queue_column_comment('baiyue_firstleg', 'fl_inbound_fee_detail', 'partner_name'"); assertThat(sql.indexOf("CALL apply_queued_comments();", sql.indexOf("-- END GENERATED NINE-SCHEMA COMMENT UPGRADE CALLS"))) .isGreaterThan(sql.indexOf("-- END GENERATED NINE-SCHEMA COMMENT UPGRADE CALLS"));