diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index b94d687e1..5d67ffcb1 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -14067,8 +14067,6 @@ DELIMITER ; CALL assert_finance_permissions(); DROP PROCEDURE IF EXISTS assert_finance_permissions; -CALL assert_unified_final_schema(); -DROP PROCEDURE IF EXISTS assert_unified_final_schema; CALL assert_loading_pick_task_shapes(1); DROP PROCEDURE IF EXISTS assert_loading_pick_task_shapes; @@ -14244,6 +14242,18 @@ CREATE TABLE IF NOT EXISTS baiyue_firstleg.fl_container_transport_history ( PRIMARY KEY(id),KEY idx_container_transport_history(container_booking_id,created_at,id) ) ENGINE=InnoDB COMMENT='柜次真实运输字段不可变变更审计'; +ALTER TABLE baiyue_firstleg.fl_container_transport_history + MODIFY COLUMN id BIGINT UNSIGNED NOT NULL COMMENT '运输字段变更历史ID', + MODIFY COLUMN container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '稳定柜次ID', + MODIFY COLUMN before_container_no VARCHAR(64) NULL COMMENT '变更前真实集装箱号', + MODIFY COLUMN after_container_no VARCHAR(64) NULL COMMENT '变更后真实集装箱号', + MODIFY COLUMN before_voyage_no VARCHAR(64) NULL COMMENT '变更前航次号', + MODIFY COLUMN after_voyage_no VARCHAR(64) NULL COMMENT '变更后航次号', + MODIFY COLUMN reason VARCHAR(500) NULL COMMENT '运输字段变更原因', + MODIFY COLUMN operator_id BIGINT UNSIGNED NOT NULL COMMENT '变更操作人ID', + MODIFY COLUMN operator_name VARCHAR(64) NULL COMMENT '变更操作人名称快照', + MODIFY COLUMN created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '变更记录创建时间'; + /* IAM 消息中心基线。来源:iam/src/main/resources/db/notification-center.sql */ DROP PROCEDURE IF EXISTS baiyue_iam.assert_notification_permission_ids; DELIMITER $$ @@ -14622,10 +14632,12 @@ CREATE TABLE IF NOT EXISTS wh_domestic_container_order ( deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记', version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本', PRIMARY KEY(id), UNIQUE KEY uk_dc_order_no(tenant_id,order_no,deleted), KEY idx_dc_order_list(tenant_id,business_type,warehouse_id,status,operation_time), - KEY idx_dc_order_container(tenant_id,warehouse_id,container_no,business_type), + KEY idx_dc_order_container(tenant_id,warehouse_id,container_no,business_type), CONSTRAINT chk_dc_order_scope CHECK(tenant_id=0), CONSTRAINT chk_dc_order_type CHECK(business_type IN('INBOUND','OUTBOUND')), CONSTRAINT chk_dc_order_status CHECK(status IN('PENDING','COMPLETED')), CONSTRAINT chk_dc_order_quantity CHECK(box_count>0 AND volume_cbm>=0) ) ENGINE=InnoDB COMMENT='国内仓独立整柜入出库单'; +ALTER TABLE wh_domestic_container_order + MODIFY COLUMN id BIGINT UNSIGNED NOT NULL COMMENT '整柜订单ID'; CREATE TABLE IF NOT EXISTS wh_domestic_container_inventory ( id BIGINT UNSIGNED NOT NULL COMMENT '库存ID', tenant_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '平台公共作用域,固定为0', warehouse_id BIGINT UNSIGNED NOT NULL COMMENT '平台国内仓ID', warehouse_name VARCHAR(120) NOT NULL COMMENT '仓库名称', container_no VARCHAR(32) NOT NULL COMMENT '柜号', cargo_name VARCHAR(128) NOT NULL COMMENT '货物名称', @@ -14709,5 +14721,7 @@ UPDATE iam_permission SET status='INACTIVE',deleted=1 WHERE permission_code IN('platform:firstleg:container:view','platform:firstleg:preload:view','platform:firstleg:loading-list:view','platform:supplier:view'); -- 入库完成后的唯一状态为 WAIT_SPLIT。 +CALL assert_unified_final_schema(); +DROP PROCEDURE IF EXISTS assert_unified_final_schema; SELECT 'PASS' AS migration_status, '统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、公共资源及可靠审计结构校验通过' AS message; diff --git a/iam/src/test/java/com/baiyue/iam/repository/WarehouseRoleSqlContractTest.java b/iam/src/test/java/com/baiyue/iam/repository/WarehouseRoleSqlContractTest.java index c89e5c9ec..9cb8406a9 100644 --- a/iam/src/test/java/com/baiyue/iam/repository/WarehouseRoleSqlContractTest.java +++ b/iam/src/test/java/com/baiyue/iam/repository/WarehouseRoleSqlContractTest.java @@ -99,7 +99,7 @@ class WarehouseRoleSqlContractTest { private static String roleMigrationBlock(String sql) { String marker = "-- 来源:iam/src/main/resources/db/phase3-warehouse-roles.sql"; - String endMarker = "-- 二、三期对外统一使用 INBOUNDED;历史 WAIT_SPLIT 仅由查询适配为 INBOUNDED,统一迁移不改写主表或历史状态。"; + String endMarker = "-- BEGIN FINANCE FEE SOURCE MODULE MIGRATIONS"; int start = sql.indexOf(marker); int end = sql.indexOf(endMarker, start + marker.length()); if (start < 0 || end < 0) throw new IllegalStateException("统一入口缺少仓库角色连续区块");