优化
This commit is contained in:
@@ -799,7 +799,7 @@ CREATE TABLE IF NOT EXISTS wh_partner (
|
|||||||
id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID(雪花ID)', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID(雪花ID)', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
||||||
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围',
|
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围',
|
||||||
partner_code VARCHAR(50) NOT NULL COMMENT '平台内唯一往来单位编码', partner_name VARCHAR(128) NOT NULL COMMENT '往来单位名称',
|
partner_code VARCHAR(50) NOT NULL COMMENT '平台内唯一往来单位编码', partner_name VARCHAR(128) NOT NULL COMMENT '往来单位名称',
|
||||||
partner_type VARCHAR(20) NOT NULL COMMENT '往来单位类型:CUSTOMER、CARRIER、SHIPPER或CONSIGNEE',
|
partner_type VARCHAR(20) NOT NULL COMMENT '往来单位类型:CARRIER、SHIPPER或CONSIGNEE',
|
||||||
contact_name VARCHAR(64) NOT NULL COMMENT '联系人姓名', contact_phone VARCHAR(32) NOT NULL COMMENT '联系电话',
|
contact_name VARCHAR(64) NOT NULL COMMENT '联系人姓名', contact_phone VARCHAR(32) NOT NULL COMMENT '联系电话',
|
||||||
contact_email VARCHAR(128) NULL COMMENT '联系邮箱', country_code CHAR(2) NOT NULL COMMENT '国家二字码',
|
contact_email VARCHAR(128) NULL COMMENT '联系邮箱', country_code CHAR(2) NOT NULL COMMENT '国家二字码',
|
||||||
province VARCHAR(64) NULL COMMENT '省或州', city VARCHAR(64) NOT NULL COMMENT '城市', district VARCHAR(64) NULL COMMENT '区县',
|
province VARCHAR(64) NULL COMMENT '省或州', city VARCHAR(64) NOT NULL COMMENT '城市', district VARCHAR(64) NULL COMMENT '区县',
|
||||||
@@ -811,21 +811,21 @@ CREATE TABLE IF NOT EXISTS wh_partner (
|
|||||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除', version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除', version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
PRIMARY KEY(id), UNIQUE KEY uk_wh_partner_tenant_code(tenant_id,partner_code,deleted),
|
PRIMARY KEY(id), UNIQUE KEY uk_wh_partner_tenant_code(tenant_id,partner_code,deleted),
|
||||||
KEY idx_wh_partner_tenant_status(tenant_id,status,deleted),
|
KEY idx_wh_partner_tenant_status(tenant_id,status,deleted),
|
||||||
CONSTRAINT chk_wh_partner_type CHECK (partner_type IN ('CUSTOMER','CARRIER','SHIPPER','CONSIGNEE'))
|
CONSTRAINT chk_wh_partner_type CHECK (partner_type IN ('CARRIER','SHIPPER','CONSIGNEE'))
|
||||||
) ENGINE=InnoDB COMMENT='平台统一维护、供全部客户共享的往来单位主数据';
|
) ENGINE=InnoDB COMMENT='平台统一维护、供全部客户共享的往来单位主数据';
|
||||||
CREATE TABLE IF NOT EXISTS wh_partner_type (
|
CREATE TABLE IF NOT EXISTS wh_partner_type (
|
||||||
partner_id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
partner_id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
||||||
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围,平台公共数据为0', partner_type VARCHAR(32) NOT NULL COMMENT '稳定业务类型:CUSTOMER客户、SHIPPER发货方等',
|
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围,平台公共数据为0', partner_type VARCHAR(32) NOT NULL COMMENT '稳定业务类型:CARRIER船公司、SHIPPER发货方、CONSIGNEE收货方',
|
||||||
PRIMARY KEY(partner_id,partner_type),
|
PRIMARY KEY(partner_id,partner_type),
|
||||||
KEY idx_wh_partner_type_scope(tenant_id,data_scope_id,partner_type,partner_id),
|
KEY idx_wh_partner_type_scope(tenant_id,data_scope_id,partner_type,partner_id),
|
||||||
CONSTRAINT chk_wh_partner_type_value CHECK (partner_type IN ('CUSTOMER','CARRIER','SHIPPER','CONSIGNEE'))
|
CONSTRAINT chk_wh_partner_type_value CHECK (partner_type IN ('CARRIER','SHIPPER','CONSIGNEE'))
|
||||||
) ENGINE=InnoDB COMMENT='平台共享往来单位稳定业务类型';
|
) ENGINE=InnoDB COMMENT='平台共享往来单位稳定业务类型';
|
||||||
INSERT INTO wh_partner(id,tenant_id,data_scope_id,partner_code,partner_name,partner_type,contact_name,contact_phone,contact_email,country_code,province,city,district,address_line,postal_code,status)
|
INSERT INTO wh_partner(id,tenant_id,data_scope_id,partner_code,partner_name,partner_type,contact_name,contact_phone,contact_email,country_code,province,city,district,address_line,postal_code,status)
|
||||||
VALUES(191000000000000001,0,0,'CUS-001','深圳示例贸易有限公司','CUSTOMER','张三','13800138000','contact@example.com','CN','广东省','深圳市','宝安区','航城街道示例路1号','518000','ACTIVE')
|
VALUES(191000000000000001,0,0,'CAR-001','示例船公司','CARRIER','张三','13800138000','contact@example.com','CN','广东省','深圳市','宝安区','航城街道示例路1号','518000','ACTIVE')
|
||||||
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id),partner_name=VALUES(partner_name),status='ACTIVE';
|
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id),partner_name=VALUES(partner_name),status='ACTIVE';
|
||||||
INSERT INTO wh_partner_type(partner_id,tenant_id,data_scope_id,partner_type)
|
INSERT INTO wh_partner_type(partner_id,tenant_id,data_scope_id,partner_type)
|
||||||
VALUES
|
VALUES
|
||||||
(191000000000000001,0,0,'CUSTOMER'),
|
(191000000000000001,0,0,'CARRIER'),
|
||||||
(191000000000000001,0,0,'SHIPPER')
|
(191000000000000001,0,0,'SHIPPER')
|
||||||
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id);
|
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id);
|
||||||
|
|
||||||
@@ -4815,6 +4815,22 @@ CREATE TABLE IF NOT EXISTS fl_container_booking (
|
|||||||
CONSTRAINT chk_container_booking_weight CHECK (max_weight_kg IS NULL OR max_weight_kg > 0)
|
CONSTRAINT chk_container_booking_weight CHECK (max_weight_kg IS NULL OR max_weight_kg > 0)
|
||||||
) ENGINE=InnoDB COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划';
|
) ENGINE=InnoDB COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划';
|
||||||
|
|
||||||
|
-- 触发器创建前先收敛旧库货柜供应商ID列;历史名称无法反推ID,保持NULL。
|
||||||
|
DROP PROCEDURE IF EXISTS phase3_container_supplier_snapshot_add_column;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE phase3_container_supplier_snapshot_add_column()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema=DATABASE() AND table_name='fl_container_booking'
|
||||||
|
AND column_name='terminal_trucking_company_id') THEN
|
||||||
|
ALTER TABLE fl_container_booking
|
||||||
|
ADD COLUMN terminal_trucking_company_id BIGINT UNSIGNED NULL COMMENT '码头拖车Supplier逻辑ID快照;历史数据无法推导时为空' AFTER max_weight_kg;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL phase3_container_supplier_snapshot_add_column();
|
||||||
|
DROP PROCEDURE phase3_container_supplier_snapshot_add_column;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS fl_loading_plan (
|
CREATE TABLE IF NOT EXISTS fl_loading_plan (
|
||||||
id BIGINT UNSIGNED NOT NULL COMMENT '智能装柜计划ID(雪花ID)',
|
id BIGINT UNSIGNED NOT NULL COMMENT '智能装柜计划ID(雪花ID)',
|
||||||
plan_no VARCHAR(40) NOT NULL COMMENT '平台唯一装柜计划号',
|
plan_no VARCHAR(40) NOT NULL COMMENT '平台唯一装柜计划号',
|
||||||
@@ -5350,6 +5366,7 @@ BEGIN
|
|||||||
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
||||||
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm)
|
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm)
|
||||||
OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
||||||
|
OR NOT (OLD.terminal_trucking_company_id <=> NEW.terminal_trucking_company_id)
|
||||||
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company)
|
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company)
|
||||||
OR NOT (OLD.loading_at <=> NEW.loading_at)
|
OR NOT (OLD.loading_at <=> NEW.loading_at)
|
||||||
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
||||||
@@ -5849,7 +5866,7 @@ BEGIN
|
|||||||
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
||||||
AND column_name IN ('booking_no', 'cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
AND column_name IN ('booking_no', 'cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
||||||
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
||||||
'max_weight_kg', 'terminal_trucking_company')) <> 10 THEN
|
'max_weight_kg', 'terminal_trucking_company_id', 'terminal_trucking_company')) <> 11 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||||
@@ -9517,25 +9534,21 @@ CREATE TABLE IF NOT EXISTS fl_customs_submission_batch (
|
|||||||
CONSTRAINT chk_customs_batch_status CHECK (status IN ('SUBMITTED','ACKNOWLEDGED','REJECTED','COMPLETED'))
|
CONSTRAINT chk_customs_batch_status CHECK (status IN ('SUBMITTED','ACKNOWLEDGED','REJECTED','COMPLETED'))
|
||||||
) ENGINE=InnoDB COMMENT='报关代理提交批次及冻结文件版本';
|
) ENGINE=InnoDB COMMENT='报关代理提交批次及冻结文件版本';
|
||||||
|
|
||||||
-- 供应商引用快照收敛:历史名称无法反推Supplier ID,保留为空;新写入由Firstleg服务校验并持久化。
|
-- 历史代理名称无法安全反推Supplier ID,旧行保持NULL;新写入由服务端校验并持久化。
|
||||||
DROP PROCEDURE IF EXISTS phase3_supplier_snapshot_add_columns;
|
DROP PROCEDURE IF EXISTS phase3_customs_supplier_snapshot_add_column;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE phase3_supplier_snapshot_add_columns()
|
CREATE PROCEDURE phase3_customs_supplier_snapshot_add_column()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='fl_container_booking')
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||||
AND NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='fl_container_booking' AND column_name='terminal_trucking_company_id') THEN
|
WHERE table_schema=DATABASE() AND table_name='fl_customs_submission_batch'
|
||||||
ALTER TABLE fl_container_booking
|
AND column_name='customs_agent_id') THEN
|
||||||
ADD COLUMN terminal_trucking_company_id BIGINT UNSIGNED NULL COMMENT '码头拖车Supplier逻辑ID快照;历史数据无法推导时为空' AFTER max_weight_kg;
|
|
||||||
END IF;
|
|
||||||
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='fl_customs_submission_batch')
|
|
||||||
AND NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='fl_customs_submission_batch' AND column_name='customs_agent_id') THEN
|
|
||||||
ALTER TABLE fl_customs_submission_batch
|
ALTER TABLE fl_customs_submission_batch
|
||||||
ADD COLUMN customs_agent_id BIGINT UNSIGNED NULL COMMENT '本批次报关代理Supplier逻辑ID快照;历史数据无法推导时为空' AFTER batch_version;
|
ADD COLUMN customs_agent_id BIGINT UNSIGNED NULL COMMENT '本批次报关代理Supplier逻辑ID快照;历史数据无法推导时为空' AFTER batch_version;
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
CALL phase3_supplier_snapshot_add_columns();
|
CALL phase3_customs_supplier_snapshot_add_column();
|
||||||
DROP PROCEDURE phase3_supplier_snapshot_add_columns;
|
DROP PROCEDURE phase3_customs_supplier_snapshot_add_column;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS fl_customs_receipt (
|
CREATE TABLE IF NOT EXISTS fl_customs_receipt (
|
||||||
id BIGINT UNSIGNED NOT NULL COMMENT '报关回执文件版本逻辑ID', customs_case_id BIGINT UNSIGNED NOT NULL COMMENT '所属报关协同单ID', submission_batch_id BIGINT UNSIGNED NOT NULL COMMENT '产生本回执的报关代理提交批次ID',
|
id BIGINT UNSIGNED NOT NULL COMMENT '报关回执文件版本逻辑ID', customs_case_id BIGINT UNSIGNED NOT NULL COMMENT '所属报关协同单ID', submission_batch_id BIGINT UNSIGNED NOT NULL COMMENT '产生本回执的报关代理提交批次ID',
|
||||||
@@ -14628,6 +14641,7 @@ BEGIN
|
|||||||
OR NOT (OLD.destination_port_code <=> NEW.destination_port_code) OR NOT (OLD.destination_port_name <=> NEW.destination_port_name)
|
OR NOT (OLD.destination_port_code <=> NEW.destination_port_code) OR NOT (OLD.destination_port_name <=> NEW.destination_port_name)
|
||||||
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code) OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code) OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
||||||
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
||||||
|
OR NOT (OLD.terminal_trucking_company_id <=> NEW.terminal_trucking_company_id)
|
||||||
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
||||||
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
||||||
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at) OR NOT (OLD.actual_port_arrival_at <=> NEW.actual_port_arrival_at)
|
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at) OR NOT (OLD.actual_port_arrival_at <=> NEW.actual_port_arrival_at)
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ BEGIN
|
|||||||
OR NOT (OLD.destination_port_code <=> NEW.destination_port_code) OR NOT (OLD.destination_port_name <=> NEW.destination_port_name)
|
OR NOT (OLD.destination_port_code <=> NEW.destination_port_code) OR NOT (OLD.destination_port_name <=> NEW.destination_port_name)
|
||||||
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code) OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code) OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
||||||
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
||||||
|
OR NOT (OLD.terminal_trucking_company_id <=> NEW.terminal_trucking_company_id)
|
||||||
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
||||||
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
||||||
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at) OR NOT (OLD.actual_port_arrival_at <=> NEW.actual_port_arrival_at)
|
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at) OR NOT (OLD.actual_port_arrival_at <=> NEW.actual_port_arrival_at)
|
||||||
|
|||||||
@@ -116,6 +116,22 @@ CREATE TABLE IF NOT EXISTS fl_customs_submission_batch (
|
|||||||
CONSTRAINT chk_customs_batch_status CHECK (status IN ('SUBMITTED','ACKNOWLEDGED','REJECTED','COMPLETED'))
|
CONSTRAINT chk_customs_batch_status CHECK (status IN ('SUBMITTED','ACKNOWLEDGED','REJECTED','COMPLETED'))
|
||||||
) ENGINE=InnoDB COMMENT='报关代理提交批次及冻结文件版本';
|
) ENGINE=InnoDB COMMENT='报关代理提交批次及冻结文件版本';
|
||||||
|
|
||||||
|
-- 历史代理名称无法安全反推Supplier ID,旧行保持NULL;新写入由服务端校验并持久化。
|
||||||
|
DROP PROCEDURE IF EXISTS phase3_customs_supplier_snapshot_add_column;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE phase3_customs_supplier_snapshot_add_column()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema=DATABASE() AND table_name='fl_customs_submission_batch'
|
||||||
|
AND column_name='customs_agent_id') THEN
|
||||||
|
ALTER TABLE fl_customs_submission_batch
|
||||||
|
ADD COLUMN customs_agent_id BIGINT UNSIGNED NULL COMMENT '本批次报关代理Supplier逻辑ID快照;历史数据无法推导时为空' AFTER batch_version;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL phase3_customs_supplier_snapshot_add_column();
|
||||||
|
DROP PROCEDURE phase3_customs_supplier_snapshot_add_column;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS fl_customs_receipt (
|
CREATE TABLE IF NOT EXISTS fl_customs_receipt (
|
||||||
id BIGINT UNSIGNED NOT NULL COMMENT '报关回执文件版本逻辑ID',
|
id BIGINT UNSIGNED NOT NULL COMMENT '报关回执文件版本逻辑ID',
|
||||||
customs_case_id BIGINT UNSIGNED NOT NULL COMMENT '所属报关协同单ID',
|
customs_case_id BIGINT UNSIGNED NOT NULL COMMENT '所属报关协同单ID',
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ BEGIN
|
|||||||
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code)
|
OR NOT (OLD.destination_warehouse_code <=> NEW.destination_warehouse_code)
|
||||||
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
||||||
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm) OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
||||||
|
OR NOT (OLD.terminal_trucking_company_id <=> NEW.terminal_trucking_company_id)
|
||||||
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company) OR NOT (OLD.loading_at <=> NEW.loading_at)
|
||||||
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
||||||
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at)
|
OR NOT (OLD.estimated_port_arrival_at <=> NEW.estimated_port_arrival_at)
|
||||||
|
|||||||
@@ -80,6 +80,22 @@ CREATE TABLE IF NOT EXISTS fl_container_booking (
|
|||||||
CONSTRAINT chk_container_booking_weight CHECK (max_weight_kg IS NULL OR max_weight_kg > 0)
|
CONSTRAINT chk_container_booking_weight CHECK (max_weight_kg IS NULL OR max_weight_kg > 0)
|
||||||
) ENGINE=InnoDB COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划';
|
) ENGINE=InnoDB COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划';
|
||||||
|
|
||||||
|
-- 触发器创建前先收敛旧库货柜供应商ID列;历史名称无法反推ID,保持NULL。
|
||||||
|
DROP PROCEDURE IF EXISTS phase3_container_supplier_snapshot_add_column;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE phase3_container_supplier_snapshot_add_column()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema=DATABASE() AND table_name='fl_container_booking'
|
||||||
|
AND column_name='terminal_trucking_company_id') THEN
|
||||||
|
ALTER TABLE fl_container_booking
|
||||||
|
ADD COLUMN terminal_trucking_company_id BIGINT UNSIGNED NULL COMMENT '码头拖车Supplier逻辑ID快照;历史数据无法推导时为空' AFTER max_weight_kg;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL phase3_container_supplier_snapshot_add_column();
|
||||||
|
DROP PROCEDURE phase3_container_supplier_snapshot_add_column;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS fl_loading_plan (
|
CREATE TABLE IF NOT EXISTS fl_loading_plan (
|
||||||
id BIGINT UNSIGNED NOT NULL COMMENT '智能装柜计划ID(雪花ID)',
|
id BIGINT UNSIGNED NOT NULL COMMENT '智能装柜计划ID(雪花ID)',
|
||||||
plan_no VARCHAR(40) NOT NULL COMMENT '平台唯一装柜计划号',
|
plan_no VARCHAR(40) NOT NULL COMMENT '平台唯一装柜计划号',
|
||||||
@@ -607,6 +623,7 @@ BEGIN
|
|||||||
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
OR NOT (OLD.destination_warehouse_name <=> NEW.destination_warehouse_name)
|
||||||
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm)
|
OR NOT (OLD.capacity_cbm <=> NEW.capacity_cbm)
|
||||||
OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
OR NOT (OLD.max_weight_kg <=> NEW.max_weight_kg)
|
||||||
|
OR NOT (OLD.terminal_trucking_company_id <=> NEW.terminal_trucking_company_id)
|
||||||
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company)
|
OR NOT (OLD.terminal_trucking_company <=> NEW.terminal_trucking_company)
|
||||||
OR NOT (OLD.loading_at <=> NEW.loading_at)
|
OR NOT (OLD.loading_at <=> NEW.loading_at)
|
||||||
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
OR NOT (OLD.actual_sailing_at <=> NEW.actual_sailing_at)
|
||||||
@@ -1206,7 +1223,7 @@ BEGIN
|
|||||||
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
||||||
AND column_name IN ('booking_no', 'cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
AND column_name IN ('booking_no', 'cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
||||||
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
||||||
'max_weight_kg', 'terminal_trucking_company')) <> 10 THEN
|
'max_weight_kg', 'terminal_trucking_company_id', 'terminal_trucking_company')) <> 11 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
|||||||
+2
-1
@@ -32,7 +32,8 @@ class Phase3FinalUnifiedSqlContractTest {
|
|||||||
.contains("CREATE TABLE IF NOT EXISTS fl_customs_submission_batch")
|
.contains("CREATE TABLE IF NOT EXISTS fl_customs_submission_batch")
|
||||||
.contains("customs_agent_id BIGINT UNSIGNED NULL")
|
.contains("customs_agent_id BIGINT UNSIGNED NULL")
|
||||||
.contains("terminal_trucking_company_id BIGINT UNSIGNED NULL")
|
.contains("terminal_trucking_company_id BIGINT UNSIGNED NULL")
|
||||||
.contains("phase3_supplier_snapshot_add_columns")
|
.contains("phase3_container_supplier_snapshot_add_column")
|
||||||
|
.contains("phase3_customs_supplier_snapshot_add_column")
|
||||||
.contains("CREATE TABLE IF NOT EXISTS fl_customs_receipt")
|
.contains("CREATE TABLE IF NOT EXISTS fl_customs_receipt")
|
||||||
.contains("CREATE TABLE IF NOT EXISTS fl_port_schedule")
|
.contains("CREATE TABLE IF NOT EXISTS fl_port_schedule")
|
||||||
.contains("CREATE TABLE IF NOT EXISTS fl_port_schedule_history")
|
.contains("CREATE TABLE IF NOT EXISTS fl_port_schedule_history")
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ public final class MasterDataQueries {
|
|||||||
@Schema(description = "编码、名称、联系人或联系电话关键字", example = "示例客户")
|
@Schema(description = "编码、名称、联系人或联系电话关键字", example = "示例客户")
|
||||||
@Size(max = 128) String keyword,
|
@Size(max = 128) String keyword,
|
||||||
@Schema(description = "往来单位类型", allowableValues = {
|
@Schema(description = "往来单位类型", allowableValues = {
|
||||||
"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
@Pattern(regexp = "^(CUSTOMER|CARRIER|SHIPPER|CONSIGNEE)$") String type,
|
@Pattern(regexp = "^(CARRIER|SHIPPER|CONSIGNEE)$") String type,
|
||||||
@Schema(description = "状态", allowableValues = {"ACTIVE", "INACTIVE"})
|
@Schema(description = "状态", allowableValues = {"ACTIVE", "INACTIVE"})
|
||||||
@Pattern(regexp = "^(ACTIVE|INACTIVE)$") String status,
|
@Pattern(regexp = "^(ACTIVE|INACTIVE)$") String status,
|
||||||
@Schema(description = "往来单位类型集合(可重复传参)", allowableValues = {
|
@Schema(description = "往来单位类型集合(可重复传参)", allowableValues = {
|
||||||
"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
@Size(max = 4) List<@Pattern(regexp = "^(CUSTOMER|CARRIER|SHIPPER|CONSIGNEE)$") String> types
|
@Size(max = 3) List<@Pattern(regexp = "^(CARRIER|SHIPPER|CONSIGNEE)$") String> types
|
||||||
) {
|
) {
|
||||||
public PartnerPageQuery {
|
public PartnerPageQuery {
|
||||||
if (page == 0) {
|
if (page == 0) {
|
||||||
@@ -69,8 +69,8 @@ public final class MasterDataQueries {
|
|||||||
@NotBlank @Size(max = 50) String partnerCode,
|
@NotBlank @Size(max = 50) String partnerCode,
|
||||||
@Schema(description = "往来单位名称", example = "深圳示例贸易有限公司")
|
@Schema(description = "往来单位名称", example = "深圳示例贸易有限公司")
|
||||||
@NotBlank @Size(max = 128) String partnerName,
|
@NotBlank @Size(max = 128) String partnerName,
|
||||||
@Schema(description = "单值单位类型", allowableValues = {"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
@Schema(description = "单值单位类型", allowableValues = {"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
@Pattern(regexp = "^(CUSTOMER|CARRIER|SHIPPER|CONSIGNEE)$") String partnerType,
|
@Pattern(regexp = "^(CARRIER|SHIPPER|CONSIGNEE)$") String partnerType,
|
||||||
@Schema(description = "联系人", example = "张三")
|
@Schema(description = "联系人", example = "张三")
|
||||||
@NotBlank @Size(max = 64) String contactName,
|
@NotBlank @Size(max = 64) String contactName,
|
||||||
@Schema(description = "联系电话", example = "13800138000")
|
@Schema(description = "联系电话", example = "13800138000")
|
||||||
@@ -91,8 +91,8 @@ public final class MasterDataQueries {
|
|||||||
@Size(max = 20) String postalCode,
|
@Size(max = 20) String postalCode,
|
||||||
@Schema(description = "状态", allowableValues = {"ACTIVE", "INACTIVE"})
|
@Schema(description = "状态", allowableValues = {"ACTIVE", "INACTIVE"})
|
||||||
@NotBlank @Pattern(regexp = "^(ACTIVE|INACTIVE)$") String status,
|
@NotBlank @Pattern(regexp = "^(ACTIVE|INACTIVE)$") String status,
|
||||||
@Schema(description = "单位类型集合", allowableValues = {"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
@Schema(description = "单位类型集合", allowableValues = {"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
@Size(max = 4) List<@Pattern(regexp = "^(CUSTOMER|CARRIER|SHIPPER|CONSIGNEE)$") String> types,
|
@Size(max = 3) List<@Pattern(regexp = "^(CARRIER|SHIPPER|CONSIGNEE)$") String> types,
|
||||||
@Schema(description = "备注") @Size(max = 500) String remark
|
@Schema(description = "备注") @Size(max = 500) String remark
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ public class PartnerEntity extends BaseEntity {
|
|||||||
private String partnerCode;
|
private String partnerCode;
|
||||||
@Schema(description = "往来单位名称", example = "深圳示例贸易有限公司")
|
@Schema(description = "往来单位名称", example = "深圳示例贸易有限公司")
|
||||||
private String partnerName;
|
private String partnerName;
|
||||||
@Schema(description = "类型", example = "CUSTOMER", allowableValues = {"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
@Schema(description = "类型", example = "CARRIER", allowableValues = {"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
private String partnerType;
|
private String partnerType;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
@Schema(description = "单位类型集合", allowableValues = {"CUSTOMER", "CARRIER", "SHIPPER", "CONSIGNEE"})
|
@Schema(description = "单位类型集合", allowableValues = {"CARRIER", "SHIPPER", "CONSIGNEE"})
|
||||||
private List<String> types;
|
private List<String> types;
|
||||||
@Schema(description = "联系人")
|
@Schema(description = "联系人")
|
||||||
private String contactName;
|
private String contactName;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS wh_partner (
|
|||||||
id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID(雪花ID)', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID(雪花ID)', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
||||||
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围',
|
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围',
|
||||||
partner_code VARCHAR(50) NOT NULL COMMENT '平台内唯一往来单位编码', partner_name VARCHAR(128) NOT NULL COMMENT '往来单位名称',
|
partner_code VARCHAR(50) NOT NULL COMMENT '平台内唯一往来单位编码', partner_name VARCHAR(128) NOT NULL COMMENT '往来单位名称',
|
||||||
partner_type VARCHAR(20) NOT NULL COMMENT '往来单位类型:CUSTOMER、CARRIER、SHIPPER或CONSIGNEE',
|
partner_type VARCHAR(20) NOT NULL COMMENT '往来单位类型:CARRIER、SHIPPER或CONSIGNEE',
|
||||||
contact_name VARCHAR(64) NOT NULL COMMENT '联系人姓名', contact_phone VARCHAR(32) NOT NULL COMMENT '联系电话',
|
contact_name VARCHAR(64) NOT NULL COMMENT '联系人姓名', contact_phone VARCHAR(32) NOT NULL COMMENT '联系电话',
|
||||||
contact_email VARCHAR(128) NULL COMMENT '联系邮箱', country_code CHAR(2) NOT NULL COMMENT '国家二字码',
|
contact_email VARCHAR(128) NULL COMMENT '联系邮箱', country_code CHAR(2) NOT NULL COMMENT '国家二字码',
|
||||||
province VARCHAR(64) NULL COMMENT '省或州', city VARCHAR(64) NOT NULL COMMENT '城市', district VARCHAR(64) NULL COMMENT '区县',
|
province VARCHAR(64) NULL COMMENT '省或州', city VARCHAR(64) NOT NULL COMMENT '城市', district VARCHAR(64) NULL COMMENT '区县',
|
||||||
@@ -16,20 +16,20 @@ CREATE TABLE IF NOT EXISTS wh_partner (
|
|||||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除', version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除', version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
PRIMARY KEY(id), UNIQUE KEY uk_wh_partner_tenant_code(tenant_id,partner_code,deleted),
|
PRIMARY KEY(id), UNIQUE KEY uk_wh_partner_tenant_code(tenant_id,partner_code,deleted),
|
||||||
KEY idx_wh_partner_tenant_status(tenant_id,status,deleted),
|
KEY idx_wh_partner_tenant_status(tenant_id,status,deleted),
|
||||||
CONSTRAINT chk_wh_partner_type CHECK (partner_type IN ('CUSTOMER','CARRIER','SHIPPER','CONSIGNEE'))
|
CONSTRAINT chk_wh_partner_type CHECK (partner_type IN ('CARRIER','SHIPPER','CONSIGNEE'))
|
||||||
) ENGINE=InnoDB COMMENT='平台统一维护、供全部客户共享的往来单位主数据';
|
) ENGINE=InnoDB COMMENT='平台统一维护、供全部客户共享的往来单位主数据';
|
||||||
CREATE TABLE IF NOT EXISTS wh_partner_type (
|
CREATE TABLE IF NOT EXISTS wh_partner_type (
|
||||||
partner_id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
partner_id BIGINT UNSIGNED NOT NULL COMMENT '往来单位ID', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '平台公共往来单位固定使用 tenant_id=0',
|
||||||
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围,平台公共数据为0', partner_type VARCHAR(32) NOT NULL COMMENT '稳定业务类型:CUSTOMER客户、SHIPPER发货方等',
|
data_scope_id BIGINT UNSIGNED NOT NULL COMMENT '所属业务数据范围,平台公共数据为0', partner_type VARCHAR(32) NOT NULL COMMENT '稳定业务类型:CARRIER船公司、SHIPPER发货方、CONSIGNEE收货方',
|
||||||
PRIMARY KEY(partner_id,partner_type),
|
PRIMARY KEY(partner_id,partner_type),
|
||||||
KEY idx_wh_partner_type_scope(tenant_id,data_scope_id,partner_type,partner_id),
|
KEY idx_wh_partner_type_scope(tenant_id,data_scope_id,partner_type,partner_id),
|
||||||
CONSTRAINT chk_wh_partner_type_value CHECK (partner_type IN ('CUSTOMER','CARRIER','SHIPPER','CONSIGNEE'))
|
CONSTRAINT chk_wh_partner_type_value CHECK (partner_type IN ('CARRIER','SHIPPER','CONSIGNEE'))
|
||||||
) ENGINE=InnoDB COMMENT='平台共享往来单位稳定业务类型';
|
) ENGINE=InnoDB COMMENT='平台共享往来单位稳定业务类型';
|
||||||
INSERT INTO wh_partner(id,tenant_id,data_scope_id,partner_code,partner_name,partner_type,contact_name,contact_phone,contact_email,country_code,province,city,district,address_line,postal_code,status)
|
INSERT INTO wh_partner(id,tenant_id,data_scope_id,partner_code,partner_name,partner_type,contact_name,contact_phone,contact_email,country_code,province,city,district,address_line,postal_code,status)
|
||||||
VALUES(191000000000000001,0,0,'CUS-001','深圳示例贸易有限公司','CUSTOMER','张三','13800138000','contact@example.com','CN','广东省','深圳市','宝安区','航城街道示例路1号','518000','ACTIVE')
|
VALUES(191000000000000001,0,0,'CAR-001','示例船公司','CARRIER','张三','13800138000','contact@example.com','CN','广东省','深圳市','宝安区','航城街道示例路1号','518000','ACTIVE')
|
||||||
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id),partner_name=VALUES(partner_name),status='ACTIVE';
|
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id),partner_name=VALUES(partner_name),status='ACTIVE';
|
||||||
INSERT INTO wh_partner_type(partner_id,tenant_id,data_scope_id,partner_type)
|
INSERT INTO wh_partner_type(partner_id,tenant_id,data_scope_id,partner_type)
|
||||||
VALUES
|
VALUES
|
||||||
(191000000000000001,0,0,'CUSTOMER'),
|
(191000000000000001,0,0,'CARRIER'),
|
||||||
(191000000000000001,0,0,'SHIPPER')
|
(191000000000000001,0,0,'SHIPPER')
|
||||||
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id);
|
ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id),data_scope_id=VALUES(data_scope_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user