优化
This commit is contained in:
@@ -103,6 +103,38 @@ DELIMITER ;
|
||||
CALL finance_fee_source_add_index();
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_add_index;
|
||||
|
||||
ALTER TABLE fin_cost
|
||||
MODIFY COLUMN cost_type VARCHAR(24) NOT NULL COMMENT '成本归属类型:SINGLE_ORDER单票、CONTAINER_SHARED整柜公共、SOURCE_DIRECT_PAID来源直接已付';
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_replace_cost_checks;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE finance_fee_source_replace_cost_checks()
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema=DATABASE() AND table_name='fin_cost' AND constraint_name='chk_fin_cost_target') THEN
|
||||
ALTER TABLE fin_cost DROP CHECK chk_fin_cost_target;
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema=DATABASE() AND table_name='fin_cost' AND constraint_name='chk_fin_cost_origin') THEN
|
||||
ALTER TABLE fin_cost DROP CHECK chk_fin_cost_origin;
|
||||
END IF;
|
||||
ALTER TABLE fin_cost
|
||||
ADD CONSTRAINT chk_fin_cost_target CHECK (
|
||||
(cost_type='SINGLE_ORDER' AND order_id IS NOT NULL AND container_id IS NULL)
|
||||
OR (cost_type='CONTAINER_SHARED' AND container_id IS NOT NULL)
|
||||
OR (cost_type='SOURCE_DIRECT_PAID' AND (order_id IS NOT NULL OR inbound_id IS NOT NULL OR container_id IS NOT NULL))
|
||||
),
|
||||
ADD CONSTRAINT chk_fin_cost_origin CHECK (
|
||||
(cost_origin='MANUAL' AND source_system IS NULL AND source_type IS NULL AND source_fee_id IS NULL AND source_fee_version IS NULL AND source_hash IS NULL)
|
||||
OR (cost_origin='FIRSTLEG_DIRECT_PAID' AND source_system='FIRSTLEG' AND source_type IS NOT NULL
|
||||
AND source_fee_id IS NOT NULL AND source_fee_version IS NOT NULL AND source_hash IS NOT NULL
|
||||
AND status IN ('CONFIRMED','VOIDED') AND paid_at IS NOT NULL
|
||||
AND payment_method IN ('ONLINE','BANK_TRANSFER','CASH','OTHER'))
|
||||
);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL finance_fee_source_replace_cost_checks();
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_replace_cost_checks;
|
||||
|
||||
-- 产品确认无历史财务数据;以下兼容值仅用于空环境重复迁移时保证结构收敛。
|
||||
UPDATE fin_fee_source
|
||||
SET source_type = COALESCE(source_type, 'INBOUND_FEE'),
|
||||
|
||||
@@ -16,6 +16,8 @@ class FinanceFeeSourceMigrationContractTest {
|
||||
"source_hash", "source_snapshot", "payload_hash", "result_resource_id", "error_code");
|
||||
assertThat(sql).contains("settlement_mode", "paid_at", "payment_method",
|
||||
"payment_reference_no", "payment_voucher_file_ids");
|
||||
assertThat(sql).contains("cost_origin", "FIRSTLEG_DIRECT_PAID", "source_fee_version",
|
||||
"uk_fin_cost_source_version", "Finance直接已付成本字段不完整");
|
||||
assertThat(sql).contains("AVAILABLE可结算", "SUPERSEDED已被新版本替代", "VOIDED已作废");
|
||||
assertThat(sql).contains("finance_fee_source_assert_schema");
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ class FinanceSqlCommentContractTest {
|
||||
}
|
||||
}
|
||||
assertThat(tableCount).isEqualTo(17);
|
||||
assertThat(columnCount).isEqualTo(248);
|
||||
assertThat(columnCount).isEqualTo(257);
|
||||
assertThat(missing).as("缺少中文业务注释的Finance字段").isEmpty();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user