506 lines
42 KiB
SQL
506 lines
42 KiB
SQL
CREATE DATABASE IF NOT EXISTS baiyue_lastleg DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
|
USE baiyue_lastleg;
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_loading_event_inbox (
|
|||
|
|
event_id VARCHAR(128) NOT NULL COMMENT '事件全局唯一标识',
|
|||
|
|
tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
event_type VARCHAR(64) NOT NULL COMMENT '事件类型',
|
|||
|
|
event_version INT NOT NULL COMMENT '事件契约版本',
|
|||
|
|
payload_hash VARCHAR(71) NOT NULL COMMENT '规范化事件负载 SHA-256 摘要',
|
|||
|
|
payload_json JSON NOT NULL COMMENT '事件冻结负载 JSON',
|
|||
|
|
status VARCHAR(32) NOT NULL DEFAULT 'RECEIVED' COMMENT '消费状态:RECEIVED/PROCESSED',
|
|||
|
|
received_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '接收时间',
|
|||
|
|
processed_at DATETIME(3) NULL COMMENT '处理完成时间',
|
|||
|
|
last_error VARCHAR(1000) NULL COMMENT '最近一次处理错误',
|
|||
|
|
PRIMARY KEY(event_id),
|
|||
|
|
UNIQUE KEY uk_ll_loading_inbox_tenant_key (tenant_id,event_type,event_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='头程装柜完成事件接收幂等箱';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_order (
|
|||
|
|
id BIGINT NOT NULL COMMENT '雪花 ID',
|
|||
|
|
order_no VARCHAR(32) NOT NULL COMMENT '尾程单号',
|
|||
|
|
tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
order_type VARCHAR(32) NOT NULL DEFAULT 'FIRST_LEG' COMMENT '订单类型',
|
|||
|
|
inbound_code VARCHAR(128) NOT NULL COMMENT '入仓码',
|
|||
|
|
source_region VARCHAR(32) NOT NULL COMMENT '来源区域/系统',
|
|||
|
|
source_inbound_id VARCHAR(128) NOT NULL COMMENT '最终实装 LOADED 分片 ID,建单幂等键',
|
|||
|
|
root_inbound_id VARCHAR(128) COMMENT '根入仓单 ID',
|
|||
|
|
source_order_id VARCHAR(128) COMMENT '来源订单 ID',
|
|||
|
|
source_order_no VARCHAR(128) COMMENT '来源订单号',
|
|||
|
|
root_order_id VARCHAR(128) COMMENT '根订单 ID',
|
|||
|
|
customer_name VARCHAR(255) COMMENT '货主名称',
|
|||
|
|
overseas_warehouse_id VARCHAR(128) COMMENT '海外仓 ID',
|
|||
|
|
overseas_warehouse_name VARCHAR(255) COMMENT '海外仓名称',
|
|||
|
|
transfer_warehouse_id VARCHAR(128) COMMENT '转入目的仓 ID',
|
|||
|
|
transfer_warehouse_code VARCHAR(128) COMMENT '转入目的仓编码',
|
|||
|
|
transfer_warehouse_name VARCHAR(255) COMMENT '转入目的仓名称',
|
|||
|
|
fba_warehouse_code VARCHAR(128) COMMENT 'FBA 仓库编码',
|
|||
|
|
container_no VARCHAR(64) COMMENT '集装箱号',
|
|||
|
|
container_status VARCHAR(32) DEFAULT '待转柜' COMMENT '货柜状态',
|
|||
|
|
abnormal TINYINT NOT NULL DEFAULT 0 COMMENT '是否异常:0否1是',
|
|||
|
|
detained TINYINT NOT NULL DEFAULT 0 COMMENT '是否暂扣:0否1是',
|
|||
|
|
pallet_count INT NOT NULL DEFAULT 0 COMMENT '托数',
|
|||
|
|
package_count INT NOT NULL DEFAULT 0 COMMENT '箱数',
|
|||
|
|
volume_cbm DECIMAL(18,4) COMMENT '体积(立方米)',
|
|||
|
|
product_quantity INT COMMENT '货物数量',
|
|||
|
|
volume_weight_kg DECIMAL(18,4) COMMENT '体积重量(千克)',
|
|||
|
|
estimated_arrival_at DATETIME(3) COMMENT '预计到港时间',
|
|||
|
|
actual_arrival_at DATETIME(3) COMMENT '实际到港时间',
|
|||
|
|
estimated_warehouse_at DATETIME(3) COMMENT '预计到仓时间',
|
|||
|
|
inbound_order_no VARCHAR(128) COMMENT '入库单号',
|
|||
|
|
outbound_order_no VARCHAR(128) COMMENT '出库单号',
|
|||
|
|
delivery_order_no VARCHAR(128) COMMENT '派送单号',
|
|||
|
|
relabel_order_no VARCHAR(128) COMMENT '换标单号',
|
|||
|
|
relabel_status VARCHAR(32) COMMENT '换标状态',
|
|||
|
|
pallet_merge_flag VARCHAR(32) COMMENT '合托标记',
|
|||
|
|
current_status VARCHAR(32) NOT NULL DEFAULT 'PENDING_ASSIGNMENT' COMMENT '当前业务状态',
|
|||
|
|
private_remark VARCHAR(1000) COMMENT '备注(仅自己)',
|
|||
|
|
customer_remark VARCHAR(1000) COMMENT '备注(客户)',
|
|||
|
|
warehouse_remark VARCHAR(1000) COMMENT '备注(仓库)',
|
|||
|
|
source_event_id VARCHAR(128) NOT NULL COMMENT '来源事件 ID',
|
|||
|
|
source_loading_plan_id VARCHAR(128) NOT NULL COMMENT '来源装柜计划 ID',
|
|||
|
|
source_loading_plan_version BIGINT COMMENT '来源装柜计划版本',
|
|||
|
|
source_handover_version BIGINT COMMENT '交接版本',
|
|||
|
|
source_payload_hash VARCHAR(71) NOT NULL COMMENT '来源事件负载摘要',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|||
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY(id),
|
|||
|
|
UNIQUE KEY uk_ll_order_source (tenant_id,source_region,source_inbound_id),
|
|||
|
|
KEY idx_ll_order_group(tenant_id,order_no),
|
|||
|
|
KEY idx_ll_order_list(tenant_id,current_status,created_at)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程订单主表';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_order_detail (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单明细主键',
|
|||
|
|
order_id BIGINT NOT NULL COMMENT '尾程订单 ID',
|
|||
|
|
source_inbound_detail_id VARCHAR(128) NOT NULL COMMENT '来源入仓明细 ID',
|
|||
|
|
sku_code VARCHAR(128) COMMENT 'SKU 编码',
|
|||
|
|
product_name_zh VARCHAR(255) COMMENT '中文品名',
|
|||
|
|
product_name_en VARCHAR(255) COMMENT '英文品名',
|
|||
|
|
package_count INT NOT NULL DEFAULT 0 COMMENT '箱数',
|
|||
|
|
product_quantity INT COMMENT '数量',
|
|||
|
|
pallet_count INT COMMENT '托数',
|
|||
|
|
gross_weight_kg DECIMAL(18,4) COMMENT '毛重(千克)',
|
|||
|
|
net_weight_kg DECIMAL(18,4) COMMENT '净重(千克)',
|
|||
|
|
dimensional_weight_kg DECIMAL(18,4) COMMENT '体积重量(千克)',
|
|||
|
|
volume_cbm DECIMAL(18,4) COMMENT '体积(立方米)',
|
|||
|
|
destination_warehouse_id VARCHAR(128) COMMENT '目的仓 ID',
|
|||
|
|
destination_warehouse_code VARCHAR(128) COMMENT '目的仓编码',
|
|||
|
|
destination_warehouse_name VARCHAR(255) COMMENT '目的仓名称',
|
|||
|
|
fba_tracking_no VARCHAR(255) COMMENT 'FBA跟踪号',
|
|||
|
|
shipment_no VARCHAR(255) COMMENT '货件编号',
|
|||
|
|
shipping_mark VARCHAR(255) COMMENT '唛头',
|
|||
|
|
PRIMARY KEY(id),
|
|||
|
|
UNIQUE KEY uk_ll_detail_source(order_id,source_inbound_detail_id),
|
|||
|
|
KEY idx_ll_detail_order(order_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程订单实装商品冻结明细';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_loading_order_status_history (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '状态历史主键',
|
|||
|
|
order_id BIGINT NOT NULL COMMENT '尾程订单 ID',
|
|||
|
|
from_status VARCHAR(32) COMMENT '变更前状态',
|
|||
|
|
to_status VARCHAR(32) NOT NULL COMMENT '变更后状态',
|
|||
|
|
event_id VARCHAR(128) COMMENT '触发事件 ID',
|
|||
|
|
remark VARCHAR(500) COMMENT '状态变更备注',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录时间',
|
|||
|
|
PRIMARY KEY(id),
|
|||
|
|
KEY idx_ll_loading_history_order(order_id,created_at)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程订单状态变更历史';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_event_conflict (
|
|||
|
|
id BIGINT NOT NULL COMMENT '冲突记录主键', event_id VARCHAR(128) NOT NULL COMMENT '冲突事件 ID',
|
|||
|
|
tenant_id BIGINT NOT NULL COMMENT '租户 ID', conflict_type VARCHAR(64) NOT NULL COMMENT '冲突类型',
|
|||
|
|
conflict_message VARCHAR(512) NOT NULL COMMENT '冲突说明', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|||
|
|
PRIMARY KEY(id), KEY idx_ll_conflict_event(event_id,tenant_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='事件冲突记录';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_event_inbox (
|
|||
|
|
id BIGINT NOT NULL COMMENT '事件接收记录主键', event_id VARCHAR(128) NOT NULL COMMENT '事件全局唯一 ID',
|
|||
|
|
tenant_id BIGINT NOT NULL COMMENT '租户 ID', event_type VARCHAR(128) NOT NULL COMMENT '事件类型',
|
|||
|
|
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型', aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合 ID',
|
|||
|
|
aggregate_version BIGINT NOT NULL COMMENT '聚合版本', payload_hash VARCHAR(71) NOT NULL COMMENT '负载摘要',
|
|||
|
|
status VARCHAR(32) NOT NULL COMMENT '消费状态', error_message VARCHAR(512) NULL COMMENT '错误信息',
|
|||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|||
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY(id), UNIQUE KEY uk_ll_inbox_event(event_id), KEY idx_ll_inbox_source(tenant_id,aggregate_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='通用事件接收幂等箱';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_order (
|
|||
|
|
id BIGINT NOT NULL COMMENT '入仓单主键', tenant_id BIGINT NOT NULL COMMENT '租户 ID', source_region VARCHAR(32) NOT NULL COMMENT '来源区域',
|
|||
|
|
source_inbound_id VARCHAR(128) NOT NULL COMMENT '来源入仓分片 ID', root_inbound_id VARCHAR(128) NULL COMMENT '根入仓单 ID',
|
|||
|
|
source_order_id VARCHAR(128) NULL COMMENT '来源订单 ID', source_order_no VARCHAR(128) NULL COMMENT '来源订单号', root_order_id VARCHAR(128) NULL COMMENT '根订单 ID',
|
|||
|
|
inbound_code VARCHAR(128) NULL COMMENT '入仓码', destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓 ID',
|
|||
|
|
destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码', destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称',
|
|||
|
|
package_count INT NOT NULL DEFAULT 0 COMMENT '箱数', product_quantity INT NULL COMMENT '数量', pallet_count INT NULL COMMENT '托数',
|
|||
|
|
gross_weight_kg DECIMAL(18,3) NULL COMMENT '毛重(千克)', net_weight_kg DECIMAL(18,3) NULL COMMENT '净重(千克)', volume_cbm DECIMAL(18,6) NULL COMMENT '体积(立方米)',
|
|||
|
|
source_event_id VARCHAR(128) NOT NULL COMMENT '来源事件 ID', source_loading_plan_id VARCHAR(128) NOT NULL COMMENT '装柜计划 ID',
|
|||
|
|
source_loading_plan_version BIGINT NOT NULL COMMENT '装柜计划版本', handover_version BIGINT NOT NULL COMMENT '交接版本', payload_hash VARCHAR(71) NOT NULL COMMENT '负载摘要',
|
|||
|
|
status VARCHAR(32) NOT NULL COMMENT '入仓单状态', exception_flag VARCHAR(32) NOT NULL DEFAULT 'NONE' COMMENT '异常标记',
|
|||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY(id), UNIQUE KEY uk_ll_order_source(tenant_id,source_region,source_inbound_id), UNIQUE KEY uk_ll_order_event(source_event_id,source_inbound_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入仓单快照';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_order_item (
|
|||
|
|
id BIGINT NOT NULL COMMENT '入仓明细主键', tenant_id BIGINT NOT NULL COMMENT '租户 ID', order_id BIGINT NOT NULL COMMENT '入仓单 ID',
|
|||
|
|
source_inbound_detail_id VARCHAR(128) NOT NULL COMMENT '来源入仓明细 ID', package_count INT NOT NULL COMMENT '箱数', product_quantity INT NULL COMMENT '数量', pallet_count INT NULL COMMENT '托数',
|
|||
|
|
gross_weight_kg DECIMAL(18,3) NULL COMMENT '毛重(千克)', net_weight_kg DECIMAL(18,3) NULL COMMENT '净重(千克)', dimensional_weight_kg DECIMAL(18,3) NULL COMMENT '体积重量(千克)', volume_cbm DECIMAL(18,6) NULL COMMENT '体积(立方米)',
|
|||
|
|
destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓 ID', destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码', destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称',
|
|||
|
|
fba_tracking_no VARCHAR(128) NULL COMMENT 'FBA跟踪号', shipment_no VARCHAR(128) NULL COMMENT '货件编号', shipping_mark VARCHAR(255) NULL COMMENT '唛头',
|
|||
|
|
sku_code VARCHAR(128) NULL COMMENT 'SKU 编码', product_name_zh VARCHAR(255) NULL COMMENT '中文品名', product_name_en VARCHAR(255) NULL COMMENT '英文品名',
|
|||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY(id), KEY idx_ll_item_order(tenant_id,order_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入仓商品明细快照';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_order_status_history (
|
|||
|
|
id BIGINT NOT NULL COMMENT '订单状态历史主键', tenant_id BIGINT NOT NULL COMMENT '租户 ID', order_id BIGINT NOT NULL COMMENT '订单 ID',
|
|||
|
|
from_status VARCHAR(32) NULL COMMENT '变更前状态', to_status VARCHAR(32) NOT NULL COMMENT '变更后状态', reason VARCHAR(255) NULL COMMENT '变更原因',
|
|||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间', PRIMARY KEY(id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程订单状态历史';
|
|||
|
|
|
|||
|
|
-- 幂等注释迁移:CREATE TABLE IF NOT EXISTS 对已有表不会更新表/字段注释。
|
|||
|
|
ALTER TABLE ll_loading_event_inbox COMMENT='头程装柜完成事件接收幂等箱';
|
|||
|
|
ALTER TABLE ll_order COMMENT='尾程订单主表';
|
|||
|
|
ALTER TABLE ll_order_detail COMMENT='尾程订单实装商品冻结明细';
|
|||
|
|
ALTER TABLE ll_loading_order_status_history COMMENT='尾程订单状态变更历史';
|
|||
|
|
ALTER TABLE ll_event_conflict COMMENT='事件冲突记录';
|
|||
|
|
ALTER TABLE ll_event_inbox COMMENT='通用事件接收幂等箱';
|
|||
|
|
ALTER TABLE ll_inbound_order COMMENT='尾程入仓单快照';
|
|||
|
|
ALTER TABLE ll_inbound_order_item COMMENT='尾程入仓商品明细快照';
|
|||
|
|
ALTER TABLE ll_order_status_history COMMENT='尾程订单状态历史';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_event_conflict
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '冲突记录主键', MODIFY COLUMN event_id VARCHAR(128) NOT NULL COMMENT '冲突事件 ID',
|
|||
|
|
MODIFY COLUMN tenant_id BIGINT NOT NULL COMMENT '租户 ID', MODIFY COLUMN conflict_type VARCHAR(64) NOT NULL COMMENT '冲突类型',
|
|||
|
|
MODIFY COLUMN conflict_message VARCHAR(512) NOT NULL COMMENT '冲突说明', MODIFY COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
|
|||
|
|
ALTER TABLE ll_event_inbox
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '事件接收记录主键', MODIFY COLUMN event_id VARCHAR(128) NOT NULL COMMENT '事件全局唯一 ID', MODIFY COLUMN tenant_id BIGINT NOT NULL COMMENT '租户 ID',
|
|||
|
|
MODIFY COLUMN event_type VARCHAR(128) NOT NULL COMMENT '事件类型', MODIFY COLUMN aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型', MODIFY COLUMN aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合 ID', MODIFY COLUMN aggregate_version BIGINT NOT NULL COMMENT '聚合版本', MODIFY COLUMN payload_hash VARCHAR(71) NOT NULL COMMENT '负载摘要', MODIFY COLUMN status VARCHAR(32) NOT NULL COMMENT '消费状态', MODIFY COLUMN error_message VARCHAR(512) NULL COMMENT '错误信息', MODIFY COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', MODIFY COLUMN updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
|||
|
|
ALTER TABLE ll_inbound_order
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入仓单主键', MODIFY COLUMN tenant_id BIGINT NOT NULL COMMENT '租户 ID', MODIFY COLUMN source_region VARCHAR(32) NOT NULL COMMENT '来源区域', MODIFY COLUMN source_inbound_id VARCHAR(128) NOT NULL COMMENT '来源入仓分片 ID', MODIFY COLUMN root_inbound_id VARCHAR(128) NULL COMMENT '根入仓单 ID', MODIFY COLUMN source_order_id VARCHAR(128) NULL COMMENT '来源订单 ID', MODIFY COLUMN source_order_no VARCHAR(128) NULL COMMENT '来源订单号', MODIFY COLUMN root_order_id VARCHAR(128) NULL COMMENT '根订单 ID', MODIFY COLUMN inbound_code VARCHAR(128) NULL COMMENT '入仓码', MODIFY COLUMN destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓 ID', MODIFY COLUMN destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码', MODIFY COLUMN destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称', MODIFY COLUMN package_count INT NOT NULL DEFAULT 0 COMMENT '箱数', MODIFY COLUMN product_quantity INT NULL COMMENT '数量', MODIFY COLUMN pallet_count INT NULL COMMENT '托数', MODIFY COLUMN gross_weight_kg DECIMAL(18,3) NULL COMMENT '毛重(千克)', MODIFY COLUMN net_weight_kg DECIMAL(18,3) NULL COMMENT '净重(千克)', MODIFY COLUMN volume_cbm DECIMAL(18,6) NULL COMMENT '体积(立方米)', MODIFY COLUMN source_event_id VARCHAR(128) NOT NULL COMMENT '来源事件 ID', MODIFY COLUMN source_loading_plan_id VARCHAR(128) NOT NULL COMMENT '装柜计划 ID', MODIFY COLUMN source_loading_plan_version BIGINT NOT NULL COMMENT '装柜计划版本', MODIFY COLUMN handover_version BIGINT NOT NULL COMMENT '交接版本', MODIFY COLUMN payload_hash VARCHAR(71) NOT NULL COMMENT '负载摘要', MODIFY COLUMN status VARCHAR(32) NOT NULL COMMENT '入仓单状态', MODIFY COLUMN exception_flag VARCHAR(32) NOT NULL DEFAULT 'NONE' COMMENT '异常标记', MODIFY COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', MODIFY COLUMN updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
|||
|
|
ALTER TABLE ll_inbound_order_item
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入仓明细主键', MODIFY COLUMN tenant_id BIGINT NOT NULL COMMENT '租户ID', MODIFY COLUMN order_id BIGINT NOT NULL COMMENT '入仓单ID', MODIFY COLUMN source_inbound_detail_id VARCHAR(128) NOT NULL COMMENT '来源入仓明细ID', MODIFY COLUMN package_count INT NOT NULL COMMENT '箱数', MODIFY COLUMN product_quantity INT NULL COMMENT '数量', MODIFY COLUMN pallet_count INT NULL COMMENT '托数', MODIFY COLUMN gross_weight_kg DECIMAL(18,3) NULL COMMENT '毛重(千克)', MODIFY COLUMN net_weight_kg DECIMAL(18,3) NULL COMMENT '净重(千克)', MODIFY COLUMN dimensional_weight_kg DECIMAL(18,3) NULL COMMENT '体积重量(千克)', MODIFY COLUMN volume_cbm DECIMAL(18,6) NULL COMMENT '体积(立方米)', MODIFY COLUMN destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓ID', MODIFY COLUMN destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码', MODIFY COLUMN destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称', MODIFY COLUMN fba_tracking_no VARCHAR(128) NULL COMMENT 'FBA跟踪号', MODIFY COLUMN shipment_no VARCHAR(128) NULL COMMENT '货件编号', MODIFY COLUMN shipping_mark VARCHAR(255) NULL COMMENT '唛头', MODIFY COLUMN sku_code VARCHAR(128) NULL COMMENT 'SKU编码', MODIFY COLUMN product_name_zh VARCHAR(255) NULL COMMENT '中文品名', MODIFY COLUMN product_name_en VARCHAR(255) NULL COMMENT '英文品名', MODIFY COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
|
|||
|
|
ALTER TABLE ll_order_status_history
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '订单状态历史主键', MODIFY COLUMN tenant_id BIGINT NOT NULL COMMENT '租户 ID', MODIFY COLUMN order_id BIGINT NOT NULL COMMENT '订单 ID', MODIFY COLUMN from_status VARCHAR(32) NULL COMMENT '变更前状态', MODIFY COLUMN to_status VARCHAR(32) NOT NULL COMMENT '变更后状态', MODIFY COLUMN reason VARCHAR(255) NULL COMMENT '变更原因', MODIFY COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_loading_event_inbox
|
|||
|
|
MODIFY COLUMN event_id VARCHAR(128) NOT NULL COMMENT '事件全局唯一标识',
|
|||
|
|
MODIFY COLUMN tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
MODIFY COLUMN event_type VARCHAR(64) NOT NULL COMMENT '事件类型',
|
|||
|
|
MODIFY COLUMN event_version INT NOT NULL COMMENT '事件契约版本',
|
|||
|
|
MODIFY COLUMN payload_hash VARCHAR(71) NOT NULL COMMENT '规范化事件负载 SHA-256 摘要',
|
|||
|
|
MODIFY COLUMN payload_json JSON NOT NULL COMMENT '事件冻结负载 JSON',
|
|||
|
|
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'RECEIVED' COMMENT '消费状态:RECEIVED/PROCESSED',
|
|||
|
|
MODIFY COLUMN received_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '接收时间',
|
|||
|
|
MODIFY COLUMN processed_at DATETIME(3) NULL COMMENT '处理完成时间',
|
|||
|
|
MODIFY COLUMN last_error VARCHAR(1000) NULL COMMENT '最近一次处理错误';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_order
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '雪花 ID',
|
|||
|
|
MODIFY COLUMN order_no VARCHAR(32) NOT NULL COMMENT '尾程单号',
|
|||
|
|
MODIFY COLUMN tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
MODIFY COLUMN order_type VARCHAR(32) NOT NULL DEFAULT 'FIRST_LEG' COMMENT '订单类型',
|
|||
|
|
MODIFY COLUMN inbound_code VARCHAR(128) NOT NULL COMMENT '入仓码',
|
|||
|
|
MODIFY COLUMN source_region VARCHAR(32) NOT NULL COMMENT '来源区域/系统',
|
|||
|
|
MODIFY COLUMN source_inbound_id VARCHAR(128) NOT NULL COMMENT '最终实装 LOADED 分片 ID,建单幂等键',
|
|||
|
|
MODIFY COLUMN root_inbound_id VARCHAR(128) NULL COMMENT '根入仓单 ID',
|
|||
|
|
MODIFY COLUMN source_order_id VARCHAR(128) NULL COMMENT '来源订单 ID',
|
|||
|
|
MODIFY COLUMN source_order_no VARCHAR(128) NULL COMMENT '来源订单号',
|
|||
|
|
MODIFY COLUMN root_order_id VARCHAR(128) NULL COMMENT '根订单 ID',
|
|||
|
|
MODIFY COLUMN customer_name VARCHAR(255) NULL COMMENT '货主名称',
|
|||
|
|
MODIFY COLUMN overseas_warehouse_id VARCHAR(128) NULL COMMENT '海外仓 ID',
|
|||
|
|
MODIFY COLUMN overseas_warehouse_name VARCHAR(255) NULL COMMENT '海外仓名称',
|
|||
|
|
MODIFY COLUMN fba_warehouse_code VARCHAR(128) NULL COMMENT 'FBA 仓库编码',
|
|||
|
|
MODIFY COLUMN container_no VARCHAR(64) NULL COMMENT '集装箱号',
|
|||
|
|
MODIFY COLUMN container_status VARCHAR(32) NULL DEFAULT '待转柜' COMMENT '货柜状态',
|
|||
|
|
MODIFY COLUMN abnormal TINYINT NOT NULL DEFAULT 0 COMMENT '是否异常:0否1是',
|
|||
|
|
MODIFY COLUMN detained TINYINT NOT NULL DEFAULT 0 COMMENT '是否暂扣:0否1是',
|
|||
|
|
MODIFY COLUMN pallet_count INT NOT NULL DEFAULT 0 COMMENT '托数',
|
|||
|
|
MODIFY COLUMN package_count INT NOT NULL DEFAULT 0 COMMENT '箱数',
|
|||
|
|
MODIFY COLUMN volume_cbm DECIMAL(18,4) NULL COMMENT '体积(立方米)',
|
|||
|
|
MODIFY COLUMN product_quantity INT NULL COMMENT '货物数量',
|
|||
|
|
MODIFY COLUMN volume_weight_kg DECIMAL(18,4) NULL COMMENT '体积重量(千克)',
|
|||
|
|
MODIFY COLUMN estimated_arrival_at DATETIME(3) NULL COMMENT '预计到港时间',
|
|||
|
|
MODIFY COLUMN actual_arrival_at DATETIME(3) NULL COMMENT '实际到港时间',
|
|||
|
|
MODIFY COLUMN estimated_warehouse_at DATETIME(3) NULL COMMENT '预计到仓时间',
|
|||
|
|
MODIFY COLUMN inbound_order_no VARCHAR(128) NULL COMMENT '入库单号',
|
|||
|
|
MODIFY COLUMN outbound_order_no VARCHAR(128) NULL COMMENT '出库单号',
|
|||
|
|
MODIFY COLUMN delivery_order_no VARCHAR(128) NULL COMMENT '派送单号',
|
|||
|
|
MODIFY COLUMN relabel_order_no VARCHAR(128) NULL COMMENT '换标单号',
|
|||
|
|
MODIFY COLUMN relabel_status VARCHAR(32) NULL COMMENT '换标状态',
|
|||
|
|
MODIFY COLUMN pallet_merge_flag VARCHAR(32) NULL COMMENT '合托标记',
|
|||
|
|
MODIFY COLUMN current_status VARCHAR(32) NOT NULL DEFAULT 'PENDING_ASSIGNMENT' COMMENT '当前业务状态',
|
|||
|
|
MODIFY COLUMN private_remark VARCHAR(1000) NULL COMMENT '备注(仅自己)',
|
|||
|
|
MODIFY COLUMN customer_remark VARCHAR(1000) NULL COMMENT '备注(客户)',
|
|||
|
|
MODIFY COLUMN warehouse_remark VARCHAR(1000) NULL COMMENT '备注(仓库)',
|
|||
|
|
MODIFY COLUMN source_event_id VARCHAR(128) NOT NULL COMMENT '来源事件 ID',
|
|||
|
|
MODIFY COLUMN source_loading_plan_id VARCHAR(128) NOT NULL COMMENT '来源装柜计划 ID',
|
|||
|
|
MODIFY COLUMN source_loading_plan_version BIGINT NULL COMMENT '来源装柜计划版本',
|
|||
|
|
MODIFY COLUMN source_handover_version BIGINT NULL COMMENT '交接版本',
|
|||
|
|
MODIFY COLUMN source_payload_hash VARCHAR(71) NOT NULL COMMENT '来源事件负载摘要',
|
|||
|
|
MODIFY COLUMN created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|||
|
|
MODIFY COLUMN updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间';
|
|||
|
|
|
|||
|
|
-- Existing installations: convert the row identity to an assigned Snowflake ID and
|
|||
|
|
-- make order_no a container/loading-plan grouping number rather than a row-unique key.
|
|||
|
|
SET @ll_add_transfer_warehouse_id = (
|
|||
|
|
SELECT IF(COUNT(*) = 0,
|
|||
|
|
'ALTER TABLE ll_order ADD COLUMN transfer_warehouse_id VARCHAR(128) NULL COMMENT ''转入目的仓ID'' AFTER overseas_warehouse_name',
|
|||
|
|
'SELECT 1')
|
|||
|
|
FROM information_schema.columns
|
|||
|
|
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
|||
|
|
AND column_name = 'transfer_warehouse_id'
|
|||
|
|
);
|
|||
|
|
PREPARE ll_add_transfer_warehouse_id_stmt FROM @ll_add_transfer_warehouse_id;
|
|||
|
|
EXECUTE ll_add_transfer_warehouse_id_stmt;
|
|||
|
|
DEALLOCATE PREPARE ll_add_transfer_warehouse_id_stmt;
|
|||
|
|
|
|||
|
|
SET @ll_add_transfer_warehouse_code = (
|
|||
|
|
SELECT IF(COUNT(*) = 0,
|
|||
|
|
'ALTER TABLE ll_order ADD COLUMN transfer_warehouse_code VARCHAR(128) NULL COMMENT ''转入目的仓编码'' AFTER transfer_warehouse_id',
|
|||
|
|
'SELECT 1')
|
|||
|
|
FROM information_schema.columns
|
|||
|
|
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
|||
|
|
AND column_name = 'transfer_warehouse_code'
|
|||
|
|
);
|
|||
|
|
PREPARE ll_add_transfer_warehouse_code_stmt FROM @ll_add_transfer_warehouse_code;
|
|||
|
|
EXECUTE ll_add_transfer_warehouse_code_stmt;
|
|||
|
|
DEALLOCATE PREPARE ll_add_transfer_warehouse_code_stmt;
|
|||
|
|
|
|||
|
|
SET @ll_add_transfer_warehouse_name = (
|
|||
|
|
SELECT IF(COUNT(*) = 0,
|
|||
|
|
'ALTER TABLE ll_order ADD COLUMN transfer_warehouse_name VARCHAR(255) NULL COMMENT ''转入目的仓名称'' AFTER transfer_warehouse_code',
|
|||
|
|
'SELECT 1')
|
|||
|
|
FROM information_schema.columns
|
|||
|
|
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
|||
|
|
AND column_name = 'transfer_warehouse_name'
|
|||
|
|
);
|
|||
|
|
PREPARE ll_add_transfer_warehouse_name_stmt FROM @ll_add_transfer_warehouse_name;
|
|||
|
|
EXECUTE ll_add_transfer_warehouse_name_stmt;
|
|||
|
|
DEALLOCATE PREPARE ll_add_transfer_warehouse_name_stmt;
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_order
|
|||
|
|
MODIFY COLUMN transfer_warehouse_id VARCHAR(128) NULL COMMENT '转入目的仓ID',
|
|||
|
|
MODIFY COLUMN transfer_warehouse_code VARCHAR(128) NULL COMMENT '转入目的仓编码',
|
|||
|
|
MODIFY COLUMN transfer_warehouse_name VARCHAR(255) NULL COMMENT '转入目的仓名称';
|
|||
|
|
|
|||
|
|
SET @ll_drop_order_no_unique = (
|
|||
|
|
SELECT IF(COUNT(*) > 0,
|
|||
|
|
'ALTER TABLE ll_order DROP INDEX uk_ll_order_no',
|
|||
|
|
'SELECT 1')
|
|||
|
|
FROM information_schema.statistics
|
|||
|
|
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
|||
|
|
AND index_name = 'uk_ll_order_no' AND non_unique = 0
|
|||
|
|
);
|
|||
|
|
PREPARE ll_drop_order_no_unique_stmt FROM @ll_drop_order_no_unique;
|
|||
|
|
EXECUTE ll_drop_order_no_unique_stmt;
|
|||
|
|
DEALLOCATE PREPARE ll_drop_order_no_unique_stmt;
|
|||
|
|
|
|||
|
|
SET @ll_add_order_group_index = (
|
|||
|
|
SELECT IF(COUNT(*) = 0,
|
|||
|
|
'CREATE INDEX idx_ll_order_group ON ll_order(tenant_id,order_no)',
|
|||
|
|
'SELECT 1')
|
|||
|
|
FROM information_schema.statistics
|
|||
|
|
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
|||
|
|
AND index_name = 'idx_ll_order_group'
|
|||
|
|
);
|
|||
|
|
PREPARE ll_add_order_group_index_stmt FROM @ll_add_order_group_index;
|
|||
|
|
EXECUTE ll_add_order_group_index_stmt;
|
|||
|
|
DEALLOCATE PREPARE ll_add_order_group_index_stmt;
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_order_detail
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单明细主键',
|
|||
|
|
MODIFY COLUMN order_id BIGINT NOT NULL COMMENT '尾程订单 ID',
|
|||
|
|
MODIFY COLUMN source_inbound_detail_id VARCHAR(128) NOT NULL COMMENT '来源入仓明细 ID',
|
|||
|
|
MODIFY COLUMN sku_code VARCHAR(128) NULL COMMENT 'SKU 编码',
|
|||
|
|
MODIFY COLUMN product_name_zh VARCHAR(255) NULL COMMENT '中文品名',
|
|||
|
|
MODIFY COLUMN product_name_en VARCHAR(255) NULL COMMENT '英文品名',
|
|||
|
|
MODIFY COLUMN package_count INT NOT NULL DEFAULT 0 COMMENT '箱数',
|
|||
|
|
MODIFY COLUMN product_quantity INT NULL COMMENT '数量',
|
|||
|
|
MODIFY COLUMN pallet_count INT NULL COMMENT '托数',
|
|||
|
|
MODIFY COLUMN gross_weight_kg DECIMAL(18,4) NULL COMMENT '毛重(千克)',
|
|||
|
|
MODIFY COLUMN net_weight_kg DECIMAL(18,4) NULL COMMENT '净重(千克)',
|
|||
|
|
MODIFY COLUMN dimensional_weight_kg DECIMAL(18,4) NULL COMMENT '体积重量(千克)',
|
|||
|
|
MODIFY COLUMN volume_cbm DECIMAL(18,4) NULL COMMENT '体积(立方米)',
|
|||
|
|
MODIFY COLUMN destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓 ID',
|
|||
|
|
MODIFY COLUMN destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码',
|
|||
|
|
MODIFY COLUMN destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称',
|
|||
|
|
MODIFY COLUMN fba_tracking_no VARCHAR(255) NULL COMMENT 'FBA跟踪号',
|
|||
|
|
MODIFY COLUMN shipment_no VARCHAR(255) NULL COMMENT '货件编号',
|
|||
|
|
MODIFY COLUMN shipping_mark VARCHAR(255) NULL COMMENT '唛头';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_plan (
|
|||
|
|
id BIGINT NOT NULL COMMENT '入库计划ID(雪花ID)',
|
|||
|
|
plan_no VARCHAR(32) NOT NULL COMMENT '入库单号',
|
|||
|
|
tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
container_no VARCHAR(64) NOT NULL COMMENT '集装箱号',
|
|||
|
|
status VARCHAR(32) NOT NULL DEFAULT 'PLANNED' COMMENT '入库计划状态',
|
|||
|
|
line_count INT NOT NULL DEFAULT 0 COMMENT '入仓码明细数量',
|
|||
|
|
pallet_count INT NOT NULL DEFAULT 0 COMMENT '系统自动分配托盘数量',
|
|||
|
|
total_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '集装箱总体积(立方米)',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|||
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_plan_no (plan_no),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_plan_container (tenant_id, container_no)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入库计划表:每个租户的每个集装箱生成一张入库单';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_plan_line (
|
|||
|
|
id BIGINT NOT NULL COMMENT '入库计划明细ID(雪花ID)',
|
|||
|
|
plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
order_id BIGINT NOT NULL COMMENT '尾程订单ID',
|
|||
|
|
inbound_code VARCHAR(128) NOT NULL COMMENT '头程入仓码快照',
|
|||
|
|
destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓ID快照',
|
|||
|
|
destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码快照',
|
|||
|
|
destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称快照',
|
|||
|
|
volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '入仓码体积(立方米)',
|
|||
|
|
planned_pallet_count INT NOT NULL DEFAULT 0 COMMENT '该明细分配的托盘数量',
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_line_order (plan_id, order_id),
|
|||
|
|
KEY idx_ll_inbound_line_plan (plan_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入库计划明细表:按入仓码和尾程订单维度记录';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_plan_pallet (
|
|||
|
|
id BIGINT NOT NULL COMMENT '计划托盘ID(雪花ID)',
|
|||
|
|
plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
pallet_no VARCHAR(64) NOT NULL COMMENT '计划托盘编号',
|
|||
|
|
destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓ID快照',
|
|||
|
|
destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码快照',
|
|||
|
|
destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称快照',
|
|||
|
|
capacity_cbm DECIMAL(18,4) NOT NULL DEFAULT 2.0000 COMMENT '托盘容量,固定为2立方米',
|
|||
|
|
allocated_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '已分配体积(立方米)',
|
|||
|
|
sequence_no INT NOT NULL COMMENT '计划内托盘序号',
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_pallet_no (pallet_no),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_pallet_sequence (plan_id, sequence_no),
|
|||
|
|
KEY idx_ll_inbound_pallet_plan (plan_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入库计划托盘表:按目的仓隔离合托';
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_plan_pallet_allocation (
|
|||
|
|
id BIGINT NOT NULL COMMENT '托盘分配记录ID(雪花ID)',
|
|||
|
|
plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
line_id BIGINT NOT NULL COMMENT '入库计划明细ID',
|
|||
|
|
pallet_id BIGINT NOT NULL COMMENT '计划托盘ID',
|
|||
|
|
allocated_volume_cbm DECIMAL(18,4) NOT NULL COMMENT '该明细分配到托盘的体积(立方米)',
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_allocation (line_id, pallet_id),
|
|||
|
|
KEY idx_ll_inbound_allocation_plan (plan_id),
|
|||
|
|
KEY idx_ll_inbound_allocation_pallet (pallet_id)
|
|||
|
|
) ENGINE=InnoDB COMMENT='尾程入库计划托盘分配表:记录入仓码明细与计划托盘的分配关系';
|
|||
|
|
|
|||
|
|
-- 修复既有入库计划表中的英文注释。
|
|||
|
|
ALTER TABLE ll_inbound_plan COMMENT='尾程入库计划表:每个租户的每个集装箱生成一张入库单';
|
|||
|
|
ALTER TABLE ll_inbound_plan
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入库计划ID(雪花ID)',
|
|||
|
|
MODIFY COLUMN plan_no VARCHAR(32) NOT NULL COMMENT '入库单号',
|
|||
|
|
MODIFY COLUMN tenant_id VARCHAR(128) NOT NULL COMMENT '租户/客户账号标识',
|
|||
|
|
MODIFY COLUMN container_no VARCHAR(64) NOT NULL COMMENT '集装箱号',
|
|||
|
|
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'PLANNED' COMMENT '入库计划状态',
|
|||
|
|
MODIFY COLUMN line_count INT NOT NULL DEFAULT 0 COMMENT '入仓码明细数量',
|
|||
|
|
MODIFY COLUMN pallet_count INT NOT NULL DEFAULT 0 COMMENT '系统自动分配托盘数量',
|
|||
|
|
MODIFY COLUMN total_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '集装箱总体积(立方米)',
|
|||
|
|
MODIFY COLUMN created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|||
|
|
MODIFY COLUMN updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_inbound_plan_line COMMENT='尾程入库计划明细表:按入仓码和尾程订单维度记录';
|
|||
|
|
ALTER TABLE ll_inbound_plan_line
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入库计划明细ID(雪花ID)',
|
|||
|
|
MODIFY COLUMN plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
MODIFY COLUMN order_id BIGINT NOT NULL COMMENT '尾程订单ID',
|
|||
|
|
MODIFY COLUMN inbound_code VARCHAR(128) NOT NULL COMMENT '头程入仓码快照',
|
|||
|
|
MODIFY COLUMN destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓ID快照',
|
|||
|
|
MODIFY COLUMN destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码快照',
|
|||
|
|
MODIFY COLUMN destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称快照',
|
|||
|
|
MODIFY COLUMN volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '入仓码体积(立方米)',
|
|||
|
|
MODIFY COLUMN planned_pallet_count INT NOT NULL DEFAULT 0 COMMENT '该明细分配的托盘数量';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_inbound_plan_pallet COMMENT='尾程入库计划托盘表:按目的仓隔离合托';
|
|||
|
|
ALTER TABLE ll_inbound_plan_pallet
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '计划托盘ID(雪花ID)',
|
|||
|
|
MODIFY COLUMN plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
MODIFY COLUMN pallet_no VARCHAR(64) NOT NULL COMMENT '计划托盘编号',
|
|||
|
|
MODIFY COLUMN destination_warehouse_id VARCHAR(128) NULL COMMENT '目的仓ID快照',
|
|||
|
|
MODIFY COLUMN destination_warehouse_code VARCHAR(128) NULL COMMENT '目的仓编码快照',
|
|||
|
|
MODIFY COLUMN destination_warehouse_name VARCHAR(255) NULL COMMENT '目的仓名称快照',
|
|||
|
|
MODIFY COLUMN capacity_cbm DECIMAL(18,4) NOT NULL DEFAULT 2.0000 COMMENT '托盘容量,固定为2立方米',
|
|||
|
|
MODIFY COLUMN allocated_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '已分配体积(立方米)',
|
|||
|
|
MODIFY COLUMN sequence_no INT NOT NULL COMMENT '计划内托盘序号';
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_inbound_plan_pallet_allocation COMMENT='尾程入库计划托盘分配表:记录入仓码明细与计划托盘的分配关系';
|
|||
|
|
ALTER TABLE ll_inbound_plan_pallet_allocation
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL COMMENT '托盘分配记录ID(雪花ID)',
|
|||
|
|
MODIFY COLUMN plan_id BIGINT NOT NULL COMMENT '入库计划ID',
|
|||
|
|
MODIFY COLUMN line_id BIGINT NOT NULL COMMENT '入库计划明细ID',
|
|||
|
|
MODIFY COLUMN pallet_id BIGINT NOT NULL COMMENT '计划托盘ID',
|
|||
|
|
MODIFY COLUMN allocated_volume_cbm DECIMAL(18,4) NOT NULL COMMENT '该明细分配到托盘的体积(立方米)';
|
|||
|
|
|
|||
|
|
-- Additive inbound picking schema. Guarded statements preserve existing rows on restart.
|
|||
|
|
ALTER TABLE ll_inbound_plan MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'PENDING_ASSIGNMENT';
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_line' AND column_name='required_package_count'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_line ADD COLUMN required_package_count INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='warehouse_pallet_id'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN warehouse_pallet_id BIGINT NULL'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='warehouse_location_id'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN warehouse_location_id BIGINT NULL'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='warehouse_resource_lock_id'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN warehouse_resource_lock_id BIGINT NULL'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='assignment_status'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN assignment_status VARCHAR(32) NOT NULL DEFAULT ''UNASSIGNED'''));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='locked_at'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN locked_at DATETIME(3) NULL'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='actual_volume_cbm'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN actual_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='actual_package_count'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN actual_package_count INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='planned_package_count'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN planned_package_count INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='counted_package_count'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN counted_package_count INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='picked_package_count'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN picked_package_count INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='actual_volume_cbm'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN actual_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='status'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN status VARCHAR(32) NOT NULL DEFAULT ''PENDING_COUNT'''));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet_allocation' AND column_name='version'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet_allocation ADD COLUMN version INT NOT NULL DEFAULT 0'));
|
|||
|
|
PREPARE inbound_schema_stmt FROM @ddl; EXECUTE inbound_schema_stmt; DEALLOCATE PREPARE inbound_schema_stmt;
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_pda_task (
|
|||
|
|
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, plan_id BIGINT NOT NULL,
|
|||
|
|
task_no VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
|
|||
|
|
operator_id VARCHAR(128) NULL, operator_name VARCHAR(255) NULL,
|
|||
|
|
pushed_at DATETIME(3) NULL, started_at DATETIME(3) NULL, completed_at DATETIME(3) NULL,
|
|||
|
|
version INT NOT NULL DEFAULT 0, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id), UNIQUE KEY uk_ll_inbound_pda_task_plan (tenant_id, plan_id),
|
|||
|
|
UNIQUE KEY uk_ll_inbound_pda_task_no (task_no)
|
|||
|
|
) ENGINE=InnoDB;
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_pda_operation (
|
|||
|
|
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, task_id BIGINT NOT NULL,
|
|||
|
|
allocation_id BIGINT NULL, action VARCHAR(32) NOT NULL, idempotency_key VARCHAR(255) NOT NULL,
|
|||
|
|
request_hash VARCHAR(128) NOT NULL, request_json LONGTEXT NOT NULL, result_json LONGTEXT NOT NULL,
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id), UNIQUE KEY uk_ll_inbound_pda_operation_key (tenant_id, idempotency_key),
|
|||
|
|
KEY idx_ll_inbound_pda_operation_task (task_id), KEY idx_ll_inbound_pda_operation_allocation (allocation_id)
|
|||
|
|
) ENGINE=InnoDB;
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS ll_inbound_pallet_merge (
|
|||
|
|
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, task_id BIGINT NOT NULL,
|
|||
|
|
merge_group_no VARCHAR(64) NOT NULL, source_pallet_id BIGINT NOT NULL, target_pallet_id BIGINT NOT NULL,
|
|||
|
|
source_allocation_id BIGINT NOT NULL, target_allocation_id BIGINT NOT NULL,
|
|||
|
|
source_line_id BIGINT NOT NULL, target_line_id BIGINT NOT NULL,
|
|||
|
|
source_order_id BIGINT NOT NULL, target_order_id BIGINT NOT NULL,
|
|||
|
|
moved_package_count INT NOT NULL, moved_volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0,
|
|||
|
|
source_pallet_scrapped TINYINT NOT NULL DEFAULT 0, status VARCHAR(32) NOT NULL,
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id),
|
|||
|
|
KEY idx_ll_inbound_merge_task (tenant_id, task_id), KEY idx_ll_inbound_merge_group (merge_group_no)
|
|||
|
|
) ENGINE=InnoDB;
|
|||
|
|
|
|||
|
|
ALTER TABLE ll_loading_order_status_history
|
|||
|
|
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '状态历史主键',
|
|||
|
|
MODIFY COLUMN order_id BIGINT NOT NULL COMMENT '尾程订单 ID',
|
|||
|
|
MODIFY COLUMN from_status VARCHAR(32) NULL COMMENT '变更前状态',
|
|||
|
|
MODIFY COLUMN to_status VARCHAR(32) NOT NULL COMMENT '变更后状态',
|
|||
|
|
MODIFY COLUMN event_id VARCHAR(128) NULL COMMENT '触发事件 ID',
|
|||
|
|
MODIFY COLUMN remark VARCHAR(500) NULL COMMENT '状态变更备注',
|
|||
|
|
MODIFY COLUMN created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录时间';
|