优化
This commit is contained in:
@@ -2,42 +2,42 @@ SET NAMES utf8mb4;
|
||||
USE baiyue_firstleg;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
booking_no VARCHAR(40) NOT NULL,
|
||||
status VARCHAR(24) NOT NULL DEFAULT 'DRAFT',
|
||||
customer_id BIGINT UNSIGNED NOT NULL COMMENT '当前产品客户ID',
|
||||
customer_name VARCHAR(128) NOT NULL,
|
||||
bill_of_lading_no VARCHAR(128) NULL,
|
||||
shipping_company_id BIGINT UNSIGNED NULL,
|
||||
shipping_company_name VARCHAR(128) NULL,
|
||||
booking_agent_id BIGINT UNSIGNED NULL,
|
||||
booking_agent_name VARCHAR(128) NULL,
|
||||
vessel_name VARCHAR(128) NULL,
|
||||
voyage_no VARCHAR(64) NULL,
|
||||
departure_port_code VARCHAR(32) NULL,
|
||||
departure_port_name VARCHAR(128) NULL,
|
||||
destination_port_code VARCHAR(32) NULL,
|
||||
destination_port_name VARCHAR(128) NULL,
|
||||
place_of_delivery VARCHAR(128) NULL,
|
||||
service_term VARCHAR(32) NULL,
|
||||
freight_term VARCHAR(32) NULL,
|
||||
estimated_sailing_at DATETIME(3) NULL,
|
||||
estimated_arrival_at DATETIME(3) NULL,
|
||||
pending_vessel_name VARCHAR(128) NULL,
|
||||
pending_voyage_no VARCHAR(64) NULL,
|
||||
pending_estimated_sailing_at DATETIME(3) NULL,
|
||||
pending_estimated_arrival_at DATETIME(3) NULL,
|
||||
change_reason VARCHAR(1000) NULL,
|
||||
failure_reason VARCHAR(1000) NULL,
|
||||
cancellation_reason VARCHAR(1000) NULL,
|
||||
remark VARCHAR(1000) NULL,
|
||||
created_by BIGINT UNSIGNED NOT NULL,
|
||||
created_by_name VARCHAR(64) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_by BIGINT UNSIGNED NOT NULL,
|
||||
updated_by_name VARCHAR(64) NULL,
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
version INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '海运订舱ID',
|
||||
booking_no VARCHAR(40) NOT NULL COMMENT '平台海运订舱编号',
|
||||
status VARCHAR(24) NOT NULL DEFAULT 'DRAFT' COMMENT '订舱状态:DRAFT草稿、SUBMITTED已提交、CONFIRMED已确认、RELEASED已放舱、FAILED失败、CHANGE_PENDING船期待变更、CANCELLED已取消',
|
||||
customer_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID和数据隔离键',
|
||||
customer_name VARCHAR(128) NOT NULL COMMENT '客户名称快照',
|
||||
bill_of_lading_no VARCHAR(128) NULL COMMENT '提单号',
|
||||
shipping_company_id BIGINT UNSIGNED NULL COMMENT '船公司逻辑ID快照',
|
||||
shipping_company_name VARCHAR(128) NULL COMMENT '船公司名称快照',
|
||||
booking_agent_id BIGINT UNSIGNED NULL COMMENT '订舱代理逻辑ID快照',
|
||||
booking_agent_name VARCHAR(128) NULL COMMENT '订舱代理名称快照',
|
||||
vessel_name VARCHAR(128) NULL COMMENT '当前确认船名快照',
|
||||
voyage_no VARCHAR(64) NULL COMMENT '当前确认航次号快照',
|
||||
departure_port_code VARCHAR(32) NULL COMMENT '起运港编码快照',
|
||||
departure_port_name VARCHAR(128) NULL COMMENT '起运港名称快照',
|
||||
destination_port_code VARCHAR(32) NULL COMMENT '目的港编码快照',
|
||||
destination_port_name VARCHAR(128) NULL COMMENT '目的港名称快照',
|
||||
place_of_delivery VARCHAR(128) NULL COMMENT '最终交货地快照',
|
||||
service_term VARCHAR(32) NULL COMMENT '运输服务条款快照',
|
||||
freight_term VARCHAR(32) NULL COMMENT '海运费支付条款快照',
|
||||
estimated_sailing_at DATETIME(3) NULL COMMENT '当前确认预计开船时间',
|
||||
estimated_arrival_at DATETIME(3) NULL COMMENT '当前确认预计到港时间',
|
||||
pending_vessel_name VARCHAR(128) NULL COMMENT '待确认变更船名',
|
||||
pending_voyage_no VARCHAR(64) NULL COMMENT '待确认变更航次号',
|
||||
pending_estimated_sailing_at DATETIME(3) NULL COMMENT '待确认变更预计开船时间',
|
||||
pending_estimated_arrival_at DATETIME(3) NULL COMMENT '待确认变更预计到港时间',
|
||||
change_reason VARCHAR(1000) NULL COMMENT '船期变更原因',
|
||||
failure_reason VARCHAR(1000) NULL COMMENT '订舱失败原因',
|
||||
cancellation_reason VARCHAR(1000) NULL COMMENT '取消订舱原因',
|
||||
remark VARCHAR(1000) NULL COMMENT '平台内部备注',
|
||||
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 '订舱记录创建时间',
|
||||
updated_by BIGINT UNSIGNED NOT NULL COMMENT '最后修改操作人ID',
|
||||
updated_by_name VARCHAR(64) NULL COMMENT '最后修改操作人姓名快照',
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '订舱记录最后更新时间',
|
||||
version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ocean_booking_no (booking_no),
|
||||
KEY idx_ocean_booking_customer (customer_id,status,updated_at,id),
|
||||
@@ -53,13 +53,13 @@ CREATE TABLE IF NOT EXISTS fl_ocean_booking (
|
||||
) ENGINE=InnoDB COMMENT='独立海运订舱聚合;柜次仍由fl_container_booking承载';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking_party (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL,
|
||||
party_type VARCHAR(24) NOT NULL COMMENT 'SHIPPER/CONSIGNEE/NOTIFY_PARTY',
|
||||
party_name VARCHAR(255) NOT NULL,
|
||||
address VARCHAR(1000) NULL,
|
||||
contact_name VARCHAR(128) NULL,
|
||||
contact_phone VARCHAR(64) NULL,
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '订舱提单关系方ID',
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL COMMENT '所属海运订舱ID',
|
||||
party_type VARCHAR(24) NOT NULL COMMENT '关系方类型:SHIPPER发货人、CONSIGNEE收货人、NOTIFY_PARTY通知人',
|
||||
party_name VARCHAR(255) NOT NULL COMMENT '关系方名称快照',
|
||||
address VARCHAR(1000) NULL COMMENT '关系方地址快照',
|
||||
contact_name VARCHAR(128) NULL COMMENT '关系方联系人快照',
|
||||
contact_phone VARCHAR(64) NULL COMMENT '关系方联系电话快照',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ocean_booking_party (ocean_booking_id,party_type),
|
||||
CONSTRAINT fk_ocean_booking_party FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id),
|
||||
@@ -67,12 +67,12 @@ CREATE TABLE IF NOT EXISTS fl_ocean_booking_party (
|
||||
) ENGINE=InnoDB COMMENT='订舱提单关系方快照';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_requirement (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL,
|
||||
container_type VARCHAR(32) NOT NULL,
|
||||
container_kind VARCHAR(32) NOT NULL,
|
||||
quantity INT UNSIGNED NOT NULL,
|
||||
sort_no INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '订舱箱型需求ID',
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL COMMENT '所属海运订舱ID',
|
||||
container_type VARCHAR(32) NOT NULL COMMENT '所需集装箱尺寸类型编码',
|
||||
container_kind VARCHAR(32) NOT NULL COMMENT '所需集装箱箱种编码',
|
||||
quantity INT UNSIGNED NOT NULL COMMENT '该箱型箱种所需柜数',
|
||||
sort_no INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '订舱需求展示顺序',
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_ocean_requirement_booking (ocean_booking_id,sort_no,id),
|
||||
CONSTRAINT fk_ocean_requirement_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id),
|
||||
@@ -80,13 +80,13 @@ CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_requirement (
|
||||
) ENGINE=InnoDB COMMENT='订舱箱型箱种及数量需求';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_allocation (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL,
|
||||
requirement_id BIGINT UNSIGNED NOT NULL,
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '订舱柜次分配关系ID',
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL COMMENT '所属海运订舱ID',
|
||||
requirement_id BIGINT UNSIGNED NOT NULL COMMENT '对应订舱箱型需求ID',
|
||||
container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '明确引用现有柜次ID',
|
||||
allocated_by BIGINT UNSIGNED NOT NULL,
|
||||
allocated_by_name VARCHAR(64) NULL,
|
||||
allocated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
allocated_by BIGINT UNSIGNED NOT NULL COMMENT '分配操作人ID',
|
||||
allocated_by_name VARCHAR(64) NULL COMMENT '分配操作人姓名快照',
|
||||
allocated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '柜次分配时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ocean_allocation_container (container_booking_id),
|
||||
KEY idx_ocean_allocation_booking (ocean_booking_id,requirement_id,allocated_at),
|
||||
@@ -97,33 +97,33 @@ CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_allocation (
|
||||
) ENGINE=InnoDB COMMENT='订舱需求与现有柜次的唯一分配关系';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking_status_history (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL,
|
||||
from_status VARCHAR(24) NULL,
|
||||
to_status VARCHAR(24) NOT NULL,
|
||||
action VARCHAR(40) NOT NULL,
|
||||
reason VARCHAR(1000) NULL,
|
||||
before_snapshot JSON NULL,
|
||||
after_snapshot JSON NOT NULL,
|
||||
operator_id BIGINT UNSIGNED NOT NULL,
|
||||
operator_name VARCHAR(64) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '订舱状态历史ID',
|
||||
ocean_booking_id BIGINT UNSIGNED NOT NULL COMMENT '所属海运订舱ID',
|
||||
from_status VARCHAR(24) NULL COMMENT '变更前订舱状态;创建时为空',
|
||||
to_status VARCHAR(24) NOT NULL COMMENT '变更后订舱状态',
|
||||
action VARCHAR(40) NOT NULL COMMENT '触发状态变更的业务动作',
|
||||
reason VARCHAR(1000) NULL COMMENT '状态变更原因',
|
||||
before_snapshot JSON NULL COMMENT '状态变更前订舱数据快照;创建时为空',
|
||||
after_snapshot JSON NOT NULL COMMENT '状态变更后订舱数据快照',
|
||||
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
|
||||
operator_name VARCHAR(64) NULL COMMENT '操作人姓名快照',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '状态历史创建时间',
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_ocean_history_booking (ocean_booking_id,created_at,id),
|
||||
CONSTRAINT fk_ocean_history_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id)
|
||||
) ENGINE=InnoDB COMMENT='海运订舱不可变状态历史';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_ocean_booking_operation (
|
||||
id BIGINT UNSIGNED NOT NULL,
|
||||
ocean_booking_id BIGINT UNSIGNED NULL COMMENT '创建请求完成前允许为空',
|
||||
operator_id BIGINT UNSIGNED NOT NULL,
|
||||
operation VARCHAR(40) NOT NULL,
|
||||
idempotency_key VARCHAR(128) NOT NULL,
|
||||
request_hash CHAR(64) NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'PROCESSING',
|
||||
result_json JSON NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
completed_at DATETIME(3) NULL,
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '订舱写操作幂等记录ID',
|
||||
ocean_booking_id BIGINT UNSIGNED NULL COMMENT '关联海运订舱ID;创建请求完成前允许为空',
|
||||
operator_id BIGINT UNSIGNED NOT NULL COMMENT '发起写操作的平台操作人ID',
|
||||
operation VARCHAR(40) NOT NULL COMMENT '幂等写操作类型',
|
||||
idempotency_key VARCHAR(128) NOT NULL COMMENT '客户端写操作幂等键',
|
||||
request_hash CHAR(64) NOT NULL COMMENT '规范化请求内容SHA-256摘要;用于识别同键不同请求',
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'PROCESSING' COMMENT '处理状态:PROCESSING处理中、SUCCESS成功',
|
||||
result_json JSON NULL COMMENT '成功结果JSON快照;供幂等重放返回',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间',
|
||||
completed_at DATETIME(3) NULL COMMENT '写操作成功完成时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ocean_operation (operator_id,operation,idempotency_key),
|
||||
KEY idx_ocean_operation_booking (ocean_booking_id,created_at),
|
||||
|
||||
Reference in New Issue
Block a user