From f7f4c80806d0acf466e49992fec2675577fe6b74 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Tue, 8 Sep 2026 22:51:02 +0800 Subject: [PATCH] fix(firstleg): sync container pickup code schema --- deploy/sql/头程数据库统一增量-MySQL8.sql | 33 ++++++++++++++++++- .../SmartLoadingSqlContractTest.java | 7 ++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index f992df6c7..a5c801391 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -5063,6 +5063,10 @@ CREATE TABLE IF NOT EXISTS fl_container_booking ( actual_port_arrival_at DATETIME(3) NULL COMMENT '实际到港时间', estimated_warehouse_arrival_at DATETIME(3) NULL COMMENT '预计到仓时间', actual_warehouse_arrival_at DATETIME(3) NULL COMMENT '实际到仓时间', + pickup_code VARCHAR(64) NULL COMMENT 'PU数字码;按字符串保存以保留前导零', + pickup_code_updated_by BIGINT UNSIGNED NULL COMMENT 'PU码最后填写人ID', + pickup_code_updated_by_name VARCHAR(64) NULL COMMENT 'PU码最后填写人名称快照', + pickup_code_updated_at DATETIME(3) NULL COMMENT 'PU码最后填写时间', created_by BIGINT UNSIGNED NOT NULL COMMENT '创建人ID', created_by_name VARCHAR(64) NULL COMMENT '创建人名称快照', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', @@ -5083,7 +5087,9 @@ CREATE TABLE IF NOT EXISTS fl_container_booking ( CONSTRAINT chk_container_booking_capacity CHECK (capacity_cbm IS NULL OR capacity_cbm > 0), CONSTRAINT chk_container_booking_weight CHECK (max_weight_kg IS NULL OR max_weight_kg > 0), CONSTRAINT chk_container_booking_iso6346 CHECK - (container_no IS NULL OR container_no REGEXP '^[A-Z]{3}[UJZ][0-9]{7}$') + (container_no IS NULL OR container_no REGEXP '^[A-Z]{3}[UJZ][0-9]{7}$'), + CONSTRAINT chk_container_booking_pickup_code CHECK + (pickup_code IS NULL OR pickup_code REGEXP '^[0-9]{1,64}$') ) ENGINE=InnoDB COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划'; DROP PROCEDURE IF EXISTS phase3_container_real_unit_columns; @@ -5115,6 +5121,26 @@ BEGIN ALTER TABLE fl_container_booking ADD COLUMN customer_name VARCHAR(128) NULL COMMENT '已关联真实订舱客户名称快照' AFTER customer_id; END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() + AND table_name='fl_container_booking' AND column_name='pickup_code') THEN + ALTER TABLE fl_container_booking ADD COLUMN pickup_code VARCHAR(64) NULL + COMMENT 'PU数字码;按字符串保存以保留前导零' AFTER actual_warehouse_arrival_at; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() + AND table_name='fl_container_booking' AND column_name='pickup_code_updated_by') THEN + ALTER TABLE fl_container_booking ADD COLUMN pickup_code_updated_by BIGINT UNSIGNED NULL + COMMENT 'PU码最后填写人ID' AFTER pickup_code; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() + AND table_name='fl_container_booking' AND column_name='pickup_code_updated_by_name') THEN + ALTER TABLE fl_container_booking ADD COLUMN pickup_code_updated_by_name VARCHAR(64) NULL + COMMENT 'PU码最后填写人名称快照' AFTER pickup_code_updated_by; + END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() + AND table_name='fl_container_booking' AND column_name='pickup_code_updated_at') THEN + ALTER TABLE fl_container_booking ADD COLUMN pickup_code_updated_at DATETIME(3) NULL + COMMENT 'PU码最后填写时间' AFTER pickup_code_updated_by_name; + END IF; IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='fl_ocean_booking') THEN UPDATE fl_container_booking container_booking @@ -5146,6 +5172,11 @@ BEGIN ALTER TABLE fl_container_booking ADD CONSTRAINT chk_container_booking_iso6346 CHECK (container_no IS NULL OR container_no REGEXP '^[A-Z]{3}[UJZ][0-9]{7}$'); END IF; + IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_schema=DATABASE() + AND table_name='fl_container_booking' AND constraint_name='chk_container_booking_pickup_code') THEN + ALTER TABLE fl_container_booking ADD CONSTRAINT chk_container_booking_pickup_code + CHECK (pickup_code IS NULL OR pickup_code REGEXP '^[0-9]{1,64}$'); + END IF; END$$ DELIMITER ; CALL phase3_container_real_unit_columns(); diff --git a/firstleg/src/test/java/com/baiyue/firstleg/repository/SmartLoadingSqlContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/repository/SmartLoadingSqlContractTest.java index fc7e30a40..909474e2d 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/repository/SmartLoadingSqlContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/repository/SmartLoadingSqlContractTest.java @@ -170,6 +170,13 @@ class SmartLoadingSqlContractTest { .contains("file_hash VARCHAR(64) NULL") .contains("completed_by BIGINT UNSIGNED NULL") .contains("completed_at DATETIME(3) NULL"); + assertThat(unifiedMigration()) + .contains("pickup_code VARCHAR(64) NULL") + .contains("pickup_code_updated_by BIGINT UNSIGNED NULL") + .contains("pickup_code_updated_by_name VARCHAR(64) NULL") + .contains("pickup_code_updated_at DATETIME(3) NULL") + .contains("chk_container_booking_pickup_code") + .contains("CHECK (pickup_code IS NULL OR pickup_code REGEXP '^[0-9]{1,64}$')"); } @Test