提交
This commit is contained in:
@@ -3,7 +3,7 @@ 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 '租户/客户账号标识',
|
||||
customer_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 摘要',
|
||||
@@ -13,13 +13,13 @@ CREATE TABLE IF NOT EXISTS ll_loading_event_inbox (
|
||||
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)
|
||||
UNIQUE KEY uk_ll_loading_inbox_tenant_key (customer_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 '租户/客户账号标识',
|
||||
customer_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 '来源区域/系统',
|
||||
@@ -67,9 +67,10 @@ CREATE TABLE IF NOT EXISTS ll_order (
|
||||
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)
|
||||
UNIQUE KEY uk_ll_order_source (customer_id,source_region,source_inbound_id),
|
||||
KEY idx_ll_order_group(customer_id,order_no),
|
||||
KEY idx_ll_order_container(customer_id,container_no),
|
||||
KEY idx_ll_order_list(customer_id,current_status,created_at)
|
||||
) ENGINE=InnoDB COMMENT='尾程订单主表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_order_detail (
|
||||
@@ -111,24 +112,24 @@ CREATE TABLE IF NOT EXISTS ll_loading_order_status_history (
|
||||
|
||||
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 '冲突类型',
|
||||
customer_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)
|
||||
PRIMARY KEY(id), KEY idx_ll_conflict_event(event_id,customer_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 '事件类型',
|
||||
customer_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)
|
||||
PRIMARY KEY(id), UNIQUE KEY uk_ll_inbox_event(event_id), KEY idx_ll_inbox_source(customer_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 '来源区域',
|
||||
id BIGINT NOT NULL COMMENT '入仓单主键', customer_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',
|
||||
@@ -139,21 +140,21 @@ CREATE TABLE IF NOT EXISTS ll_inbound_order (
|
||||
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)
|
||||
PRIMARY KEY(id), UNIQUE KEY uk_ll_order_source(customer_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',
|
||||
id BIGINT NOT NULL COMMENT '入仓明细主键', customer_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)
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY(id), KEY idx_ll_item_order(customer_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',
|
||||
id BIGINT NOT NULL COMMENT '订单状态历史主键', customer_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='尾程订单状态历史';
|
||||
@@ -171,21 +172,21 @@ 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 customer_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 id BIGINT NOT NULL COMMENT '事件接收记录主键', MODIFY COLUMN event_id VARCHAR(128) NOT NULL COMMENT '事件全局唯一 ID', MODIFY COLUMN customer_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 '更新时间';
|
||||
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入仓单主键', MODIFY COLUMN customer_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 '创建时间';
|
||||
MODIFY COLUMN id BIGINT NOT NULL COMMENT '入仓明细主键', MODIFY COLUMN customer_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 '记录时间';
|
||||
MODIFY COLUMN id BIGINT NOT NULL COMMENT '订单状态历史主键', MODIFY COLUMN customer_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 customer_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 摘要',
|
||||
@@ -198,7 +199,7 @@ ALTER TABLE ll_loading_event_inbox
|
||||
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 customer_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 '来源区域/系统',
|
||||
@@ -298,7 +299,7 @@ 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)',
|
||||
'CREATE INDEX idx_ll_order_group ON ll_order(customer_id,order_no)',
|
||||
'SELECT 1')
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE() AND table_name = 'll_order'
|
||||
@@ -332,7 +333,7 @@ ALTER TABLE ll_order_detail
|
||||
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 '租户/客户账号标识',
|
||||
customer_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 '入仓码明细数量',
|
||||
@@ -342,7 +343,7 @@ CREATE TABLE IF NOT EXISTS ll_inbound_plan (
|
||||
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)
|
||||
UNIQUE KEY uk_ll_inbound_plan_container (customer_id, container_no)
|
||||
) ENGINE=InnoDB COMMENT='尾程入库计划表:每个租户的每个集装箱生成一张入库单';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_plan_line (
|
||||
@@ -393,7 +394,7 @@ 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 customer_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 '入仓码明细数量',
|
||||
@@ -466,27 +467,27 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE tab
|
||||
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,
|
||||
id BIGINT NOT NULL, customer_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),
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_inbound_pda_task_plan (customer_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,
|
||||
id BIGINT NOT NULL, customer_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),
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_inbound_pda_operation_key (customer_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,
|
||||
id BIGINT NOT NULL, customer_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,
|
||||
@@ -494,7 +495,7 @@ CREATE TABLE IF NOT EXISTS ll_inbound_pallet_merge (
|
||||
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)
|
||||
KEY idx_ll_inbound_merge_task (customer_id, task_id), KEY idx_ll_inbound_merge_group (merge_group_no)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
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='fba_warehouse_code'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_line ADD COLUMN fba_warehouse_code VARCHAR(128) NULL AFTER inbound_code'));
|
||||
@@ -505,7 +506,7 @@ WHERE l.fba_warehouse_code IS NULL AND o.fba_warehouse_code IS NOT NULL;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_fba_appointment (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
appointment_no VARCHAR(64) NOT NULL,
|
||||
appointment_at DATETIME(3) NOT NULL,
|
||||
appointment_status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
|
||||
@@ -516,8 +517,8 @@ CREATE TABLE IF NOT EXISTS ll_inbound_fba_appointment (
|
||||
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_fba_appointment_no (tenant_id, appointment_no),
|
||||
KEY idx_ll_fba_appointment_list (tenant_id, appointment_status, fba_warehouse_code, created_at)
|
||||
UNIQUE KEY uk_ll_fba_appointment_no (customer_id, appointment_no),
|
||||
KEY idx_ll_fba_appointment_list (customer_id, appointment_status, fba_warehouse_code, created_at)
|
||||
) ENGINE=InnoDB COMMENT='Batch FBA appointment';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_fba_appointment_item (
|
||||
@@ -546,7 +547,7 @@ ALTER TABLE ll_loading_order_status_history
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_balance (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL COMMENT 'Customer tenant', customer_name VARCHAR(255) NULL COMMENT 'Customer name snapshot',
|
||||
customer_id VARCHAR(128) NOT NULL COMMENT 'Customer tenant', customer_name VARCHAR(255) NULL COMMENT 'Customer name snapshot',
|
||||
overseas_warehouse_id VARCHAR(128) NOT NULL COMMENT 'Actual overseas warehouse ID',
|
||||
overseas_warehouse_code VARCHAR(128) NULL COMMENT 'Actual overseas warehouse code snapshot',
|
||||
overseas_warehouse_name VARCHAR(255) NULL COMMENT 'Actual overseas warehouse name snapshot',
|
||||
@@ -564,13 +565,13 @@ CREATE TABLE IF NOT EXISTS ll_inventory_balance (
|
||||
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_inventory_dimension (tenant_id,overseas_warehouse_id,destination_warehouse_code,inbound_order_id,inbound_code),
|
||||
KEY idx_ll_inventory_list (tenant_id,overseas_warehouse_id,updated_at),
|
||||
KEY idx_ll_inventory_inbound (tenant_id,inbound_code)
|
||||
UNIQUE KEY uk_ll_inventory_dimension (customer_id,overseas_warehouse_id,destination_warehouse_code,inbound_order_id,inbound_code),
|
||||
KEY idx_ll_inventory_list (customer_id,overseas_warehouse_id,updated_at),
|
||||
KEY idx_ll_inventory_inbound (customer_id,inbound_code)
|
||||
) ENGINE=InnoDB COMMENT='Real-time inbound-order package inventory balance';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_position (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL, balance_id BIGINT NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL, balance_id BIGINT NOT NULL,
|
||||
overseas_warehouse_id VARCHAR(128) NOT NULL, destination_warehouse_code VARCHAR(128) NOT NULL DEFAULT '',
|
||||
pallet_id BIGINT NOT NULL, pallet_no VARCHAR(64) NOT NULL,
|
||||
batch_no VARCHAR(128) NOT NULL DEFAULT '', warehouse_location_id BIGINT NULL,
|
||||
@@ -582,16 +583,17 @@ CREATE TABLE IF NOT EXISTS ll_inventory_position (
|
||||
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_inventory_position (balance_id,pallet_id,batch_no),
|
||||
KEY idx_ll_inventory_position_pallet (tenant_id,pallet_id),
|
||||
KEY idx_ll_inventory_position_location (tenant_id,overseas_warehouse_id,warehouse_location_code)
|
||||
KEY idx_ll_inventory_position_pallet (customer_id,pallet_id),
|
||||
KEY idx_ll_inventory_position_location (customer_id,overseas_warehouse_id,warehouse_location_code)
|
||||
) ENGINE=InnoDB COMMENT='Inbound-order package stock by pallet, default location and batch';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_ledger (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
balance_id BIGINT NOT NULL, position_id BIGINT NULL, overseas_warehouse_id VARCHAR(128) NOT NULL,
|
||||
destination_warehouse_code VARCHAR(128) NOT NULL DEFAULT '', inbound_order_id BIGINT NOT NULL,
|
||||
pallet_id BIGINT NULL, pallet_no VARCHAR(64) NULL, batch_no VARCHAR(128) NULL,
|
||||
warehouse_location_code VARCHAR(128) NULL, business_type VARCHAR(32) NOT NULL,
|
||||
warehouse_location_code VARCHAR(128) NULL, sku_code VARCHAR(128) NULL, carton_mark VARCHAR(128) NULL, carton_packages BIGINT NULL,
|
||||
business_type VARCHAR(32) NOT NULL,
|
||||
business_order_id BIGINT NULL, business_order_no VARCHAR(128) NULL, inbound_code VARCHAR(128) NULL,
|
||||
inbound_order_no VARCHAR(128) NULL, outbound_order_no VARCHAR(128) NULL,
|
||||
source_event_id VARCHAR(128) NULL, idempotency_key VARCHAR(255) NOT NULL,
|
||||
@@ -599,25 +601,25 @@ CREATE TABLE IF NOT EXISTS ll_inventory_ledger (
|
||||
before_packages BIGINT NOT NULL, delta_packages BIGINT NOT NULL, after_packages BIGINT NOT NULL,
|
||||
operator_id VARCHAR(128) NULL, remark VARCHAR(1000) NULL,
|
||||
occurred_at DATETIME(3) NOT NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_inventory_ledger_idempotency (tenant_id,idempotency_key),
|
||||
KEY idx_ll_inventory_ledger_query (tenant_id,overseas_warehouse_id,occurred_at),
|
||||
KEY idx_ll_inventory_ledger_inbound (tenant_id,inbound_code,occurred_at),
|
||||
KEY idx_ll_inventory_ledger_business (tenant_id,business_type,business_order_no)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_inventory_ledger_idempotency (customer_id,idempotency_key),
|
||||
KEY idx_ll_inventory_ledger_query (customer_id,overseas_warehouse_id,occurred_at),
|
||||
KEY idx_ll_inventory_ledger_inbound (customer_id,inbound_code,occurred_at),
|
||||
KEY idx_ll_inventory_ledger_business (customer_id,business_type,business_order_no)
|
||||
) ENGINE=InnoDB COMMENT='Immutable inbound-order package inventory ledger';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_operation (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
idempotency_key VARCHAR(255) NOT NULL, operation_type VARCHAR(32) NOT NULL,
|
||||
request_hash VARCHAR(128) NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'PROCESSING',
|
||||
result_json LONGTEXT NULL, last_error VARCHAR(2000) NULL,
|
||||
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_inventory_operation_key (tenant_id,idempotency_key),
|
||||
KEY idx_ll_inventory_operation_status (tenant_id,status,updated_at)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_inventory_operation_key (customer_id,idempotency_key),
|
||||
KEY idx_ll_inventory_operation_status (customer_id,status,updated_at)
|
||||
) ENGINE=InnoDB COMMENT='Inventory command idempotency record';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_stock_receipt (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
plan_id BIGINT NOT NULL, task_id BIGINT NOT NULL, allocation_id BIGINT NOT NULL,
|
||||
line_id BIGINT NOT NULL, order_id BIGINT NOT NULL, inbound_code VARCHAR(128) NOT NULL,
|
||||
warehouse_pallet_id BIGINT NOT NULL, pallet_no VARCHAR(64) NOT NULL,
|
||||
@@ -626,13 +628,13 @@ CREATE TABLE IF NOT EXISTS ll_inbound_stock_receipt (
|
||||
inventory_balance_id BIGINT NOT NULL, inventory_position_id BIGINT NOT NULL,
|
||||
inventory_operation_key VARCHAR(255) NOT NULL, received_at DATETIME(3) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_stock_receipt_task_allocation (tenant_id,task_id,allocation_id),
|
||||
KEY idx_ll_stock_receipt_plan (tenant_id,plan_id,line_id), KEY idx_ll_stock_receipt_inventory (inventory_balance_id,inventory_position_id)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_stock_receipt_task_allocation (customer_id,task_id,allocation_id),
|
||||
KEY idx_ll_stock_receipt_plan (customer_id,plan_id,line_id), KEY idx_ll_stock_receipt_inventory (inventory_balance_id,inventory_position_id)
|
||||
) ENGINE=InnoDB COMMENT='Immutable inbound-order pallet package receipt snapshot';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
dispatch_no VARCHAR(64) NOT NULL COMMENT 'Dispatch order number',
|
||||
overseas_warehouse_id VARCHAR(128) NULL COMMENT 'Overseas warehouse scope for PDA operations',
|
||||
overseas_warehouse_name VARCHAR(255) NULL,
|
||||
@@ -657,15 +659,15 @@ CREATE TABLE IF NOT EXISTS ll_dispatch_order (
|
||||
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_dispatch_order_no (tenant_id,dispatch_no),
|
||||
KEY idx_ll_dispatch_order_list (tenant_id,status,depart_at),
|
||||
KEY idx_ll_dispatch_order_vehicle (tenant_id,vehicle_plate)
|
||||
UNIQUE KEY uk_ll_dispatch_order_no (customer_id,dispatch_no),
|
||||
KEY idx_ll_dispatch_order_list (customer_id,status,depart_at),
|
||||
KEY idx_ll_dispatch_order_vehicle (customer_id,vehicle_plate)
|
||||
) ENGINE=InnoDB COMMENT='Last-leg pre-dispatch order';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_item (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
dispatch_order_id BIGINT NOT NULL,
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
plan_id BIGINT NULL,
|
||||
plan_pallet_id BIGINT NULL,
|
||||
warehouse_pallet_id BIGINT NULL,
|
||||
@@ -686,14 +688,14 @@ CREATE TABLE IF NOT EXISTS ll_dispatch_item (
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ll_dispatch_item_source (dispatch_order_id,plan_pallet_id,warehouse_pallet_id),
|
||||
KEY idx_ll_dispatch_item_order (tenant_id,order_id),
|
||||
KEY idx_ll_dispatch_item_inbound (tenant_id,inbound_code),
|
||||
KEY idx_ll_dispatch_item_pallet (tenant_id,plan_pallet_id,warehouse_pallet_id)
|
||||
KEY idx_ll_dispatch_item_order (customer_id,order_id),
|
||||
KEY idx_ll_dispatch_item_inbound (customer_id,inbound_code),
|
||||
KEY idx_ll_dispatch_item_pallet (customer_id,plan_pallet_id,warehouse_pallet_id)
|
||||
) ENGINE=InnoDB COMMENT='Frozen pallet and cargo snapshot for a dispatch order';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_pallet_lock (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
source_pallet_key VARCHAR(160) NOT NULL COMMENT 'PLAN:{planPalletId} or RECEIVED:{warehousePalletId}',
|
||||
active_key VARCHAR(160) NULL COMMENT 'Equals source key only while lock is active',
|
||||
plan_id BIGINT NULL,
|
||||
@@ -706,90 +708,127 @@ CREATE TABLE IF NOT EXISTS ll_dispatch_pallet_lock (
|
||||
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_dispatch_active_pallet (tenant_id,active_key),
|
||||
KEY idx_ll_dispatch_pallet_lock_order (tenant_id,dispatch_order_id,status),
|
||||
KEY idx_ll_dispatch_pallet_lock_source (tenant_id,source_pallet_key,status)
|
||||
UNIQUE KEY uk_ll_dispatch_active_pallet (customer_id,active_key),
|
||||
KEY idx_ll_dispatch_pallet_lock_order (customer_id,dispatch_order_id,status),
|
||||
KEY idx_ll_dispatch_pallet_lock_source (customer_id,source_pallet_key,status)
|
||||
) ENGINE=InnoDB COMMENT='Active dispatch pallet exclusion lock';
|
||||
|
||||
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_dispatch_item' AND column_name='order_refs'), 'SELECT 1', 'ALTER TABLE ll_dispatch_item ADD COLUMN order_refs VARCHAR(2000) NULL AFTER order_no'));
|
||||
PREPARE dispatch_schema_stmt FROM @ddl; EXECUTE dispatch_schema_stmt; DEALLOCATE PREPARE dispatch_schema_stmt;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_pda_task (
|
||||
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, dispatch_order_id BIGINT NOT NULL,
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, dispatch_order_id BIGINT NOT NULL,
|
||||
task_no VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, operator_id VARCHAR(128) NULL,
|
||||
warehouse_id VARCHAR(128) NULL COMMENT 'Selected overseas warehouse for PDA operation',
|
||||
operator_name VARCHAR(128) NULL, pushed_at DATETIME(3) NOT NULL, completed_at DATETIME(3) NULL,
|
||||
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_dispatch_pda_task_dispatch (tenant_id,dispatch_order_id),
|
||||
UNIQUE KEY uk_ll_dispatch_pda_task_no (tenant_id,task_no)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_dispatch_pda_task_dispatch (customer_id,dispatch_order_id),
|
||||
UNIQUE KEY uk_ll_dispatch_pda_task_no (customer_id,task_no)
|
||||
) ENGINE=InnoDB COMMENT='PDA task for a pre-arranged dispatch';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_pda_pick (
|
||||
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, task_id BIGINT NOT NULL,
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, task_id BIGINT NOT NULL,
|
||||
dispatch_item_id BIGINT NOT NULL, inventory_position_id BIGINT NOT NULL,
|
||||
packages BIGINT NOT NULL, product_quantity BIGINT NOT NULL DEFAULT 0, idempotency_key VARCHAR(255) NOT NULL,
|
||||
picked_at DATETIME(3) NOT NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_dispatch_pda_pick_key (tenant_id,idempotency_key),
|
||||
KEY idx_ll_dispatch_pda_pick_item (tenant_id,task_id,dispatch_item_id)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_dispatch_pda_pick_key (customer_id,idempotency_key),
|
||||
KEY idx_ll_dispatch_pda_pick_item (customer_id,task_id,dispatch_item_id)
|
||||
) ENGINE=InnoDB COMMENT='Immutable dispatch PDA pallet package picks';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_pda_operation (
|
||||
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, task_id BIGINT NULL,
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, task_id BIGINT NULL,
|
||||
operation_type VARCHAR(32) NOT NULL, idempotency_key VARCHAR(255) NOT NULL, request_hash CHAR(64) NOT NULL,
|
||||
result_json LONGTEXT NULL, status VARCHAR(32) NOT NULL,
|
||||
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_dispatch_pda_operation_key (tenant_id,idempotency_key)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_dispatch_pda_operation_key (customer_id,idempotency_key)
|
||||
) ENGINE=InnoDB COMMENT='Idempotent dispatch PDA operations';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_pda_pick_order (
|
||||
id BIGINT NOT NULL, tenant_id VARCHAR(128) NOT NULL, pick_id BIGINT NOT NULL,
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, pick_id BIGINT NOT NULL,
|
||||
receipt_id BIGINT NOT NULL, order_id BIGINT NOT NULL, packages BIGINT NOT NULL,
|
||||
product_quantity BIGINT NOT NULL DEFAULT 0, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id), KEY idx_ll_dispatch_pick_order_pick (tenant_id,pick_id),
|
||||
KEY idx_ll_dispatch_pick_order_receipt (tenant_id,receipt_id)
|
||||
PRIMARY KEY (id), KEY idx_ll_dispatch_pick_order_pick (customer_id,pick_id),
|
||||
KEY idx_ll_dispatch_pick_order_receipt (customer_id,receipt_id)
|
||||
) ENGINE=InnoDB COMMENT='PDA pick attribution to frozen inbound receipt and tail order';
|
||||
|
||||
-- Transfer a dispatch to delivery: one outbound header, many pallet rows, one delivery header.
|
||||
CREATE TABLE IF NOT EXISTS ll_outbound_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
outbound_no VARCHAR(64) NOT NULL, dispatch_order_id BIGINT NOT NULL, dispatch_no VARCHAR(64) NOT NULL,
|
||||
overseas_warehouse_id VARCHAR(128) NULL, status VARCHAR(32) NOT NULL DEFAULT 'WAIT_OUTBOUND',
|
||||
package_count INT NOT NULL DEFAULT 0, pallet_count INT NOT NULL DEFAULT 0,
|
||||
idempotency_key VARCHAR(255) NOT NULL, created_by VARCHAR(128) NULL,
|
||||
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_outbound_no (tenant_id,outbound_no),
|
||||
UNIQUE KEY uk_ll_outbound_idempotency (tenant_id,idempotency_key), UNIQUE KEY uk_ll_outbound_dispatch (tenant_id,dispatch_order_id),
|
||||
KEY idx_ll_outbound_list (tenant_id,status,created_at)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_outbound_no (customer_id,outbound_no),
|
||||
UNIQUE KEY uk_ll_outbound_idempotency (customer_id,idempotency_key), UNIQUE KEY uk_ll_outbound_dispatch (customer_id,dispatch_order_id),
|
||||
KEY idx_ll_outbound_list (customer_id,status,created_at)
|
||||
) ENGINE=InnoDB COMMENT='Outbound document generated from a dispatch';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_outbound_pallet_item (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL, outbound_order_id BIGINT NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL, outbound_order_id BIGINT NOT NULL,
|
||||
warehouse_pallet_id BIGINT NOT NULL, pallet_no VARCHAR(128) NOT NULL,
|
||||
destination_warehouse_id VARCHAR(128) NULL, destination_warehouse_code VARCHAR(128) NULL, destination_warehouse_name VARCHAR(255) NULL,
|
||||
package_count INT NOT NULL DEFAULT 0, order_refs VARCHAR(2000) NULL, inbound_code VARCHAR(128) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ll_outbound_pallet (tenant_id,outbound_order_id,warehouse_pallet_id),
|
||||
KEY idx_ll_outbound_pallet_list (tenant_id,outbound_order_id), KEY idx_ll_outbound_pallet_destination (tenant_id,destination_warehouse_code)
|
||||
UNIQUE KEY uk_ll_outbound_pallet (customer_id,outbound_order_id,warehouse_pallet_id),
|
||||
KEY idx_ll_outbound_pallet_list (customer_id,outbound_order_id), KEY idx_ll_outbound_pallet_destination (customer_id,destination_warehouse_code)
|
||||
) ENGINE=InnoDB COMMENT='Pallet detail snapshot for an outbound document';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_delivery_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
delivery_no VARCHAR(64) NOT NULL, outbound_order_id BIGINT NOT NULL, outbound_no VARCHAR(64) NOT NULL,
|
||||
dispatch_order_id BIGINT NOT NULL, dispatch_no VARCHAR(64) NOT NULL, overseas_warehouse_id VARCHAR(128) NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'WAIT_DELIVERY', package_count INT NOT NULL DEFAULT 0, pallet_count INT NOT NULL DEFAULT 0,
|
||||
idempotency_key VARCHAR(255) NOT NULL, created_by VARCHAR(128) NULL,
|
||||
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_delivery_no (tenant_id,delivery_no),
|
||||
UNIQUE KEY uk_ll_delivery_idempotency (tenant_id,idempotency_key), UNIQUE KEY uk_ll_delivery_outbound (tenant_id,outbound_order_id),
|
||||
KEY idx_ll_delivery_list (tenant_id,status,created_at)
|
||||
PRIMARY KEY (id), UNIQUE KEY uk_ll_delivery_no (customer_id,delivery_no),
|
||||
UNIQUE KEY uk_ll_delivery_idempotency (customer_id,idempotency_key), UNIQUE KEY uk_ll_delivery_outbound (customer_id,outbound_order_id),
|
||||
KEY idx_ll_delivery_list (customer_id,status,created_at)
|
||||
) ENGINE=InnoDB COMMENT='Delivery document linked to an outbound document';
|
||||
|
||||
-- Customer warehouse transfer: generated tail order plus selected historical order/inbound bindings.
|
||||
CREATE TABLE IF NOT EXISTS ll_warehouse_transfer_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', customer_id VARCHAR(128) NOT NULL,
|
||||
transfer_no VARCHAR(64) NOT NULL, inbound_order_id BIGINT NOT NULL, inbound_code VARCHAR(128) NOT NULL,
|
||||
lastleg_order_id BIGINT NOT NULL, lastleg_order_no VARCHAR(32) NOT NULL,
|
||||
operating_warehouse_id VARCHAR(128) NOT NULL, fba_warehouse_code VARCHAR(128) NOT NULL,
|
||||
delivery_address VARCHAR(1000) NOT NULL, package_count INT NOT NULL, delivery_method VARCHAR(64) NOT NULL,
|
||||
estimated_arrival_at DATETIME(3) NOT NULL, fba_shipment_no VARCHAR(128) NOT NULL,
|
||||
tracking_no VARCHAR(255) NULL, fba_box_nos VARCHAR(2000) NULL, remark VARCHAR(1000) NULL,
|
||||
need_relabel TINYINT NOT NULL DEFAULT 0, relabel_application_id BIGINT NULL, relabel_no VARCHAR(64) NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'PENDING_REVIEW', idempotency_key VARCHAR(255) NOT NULL,
|
||||
request_hash CHAR(64) NOT NULL, created_by VARCHAR(128) NULL,
|
||||
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_wh_transfer_no (customer_id,transfer_no),
|
||||
UNIQUE KEY uk_ll_wh_transfer_key (customer_id,idempotency_key),
|
||||
UNIQUE KEY uk_ll_wh_transfer_tail_order (lastleg_order_id),
|
||||
KEY idx_ll_wh_transfer_list (customer_id,status,created_at), KEY idx_ll_wh_transfer_inbound (customer_id,inbound_code)
|
||||
) ENGINE=InnoDB COMMENT='Customer warehouse transfer order';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_warehouse_transfer_source_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', transfer_order_id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL,
|
||||
source_lastleg_order_id BIGINT NOT NULL, source_lastleg_order_no VARCHAR(32) NOT NULL,
|
||||
inbound_order_id BIGINT NOT NULL, inbound_code VARCHAR(128) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ll_wh_transfer_source (transfer_order_id,source_lastleg_order_id),
|
||||
KEY idx_ll_wh_transfer_source_list (customer_id,transfer_order_id)
|
||||
) ENGINE=InnoDB COMMENT='Selected historical customer orders and inbound bindings';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_warehouse_transfer_item (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', transfer_order_id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL,
|
||||
sku_code VARCHAR(128) NOT NULL, product_name_zh VARCHAR(255) NOT NULL,
|
||||
package_count INT NOT NULL, shipping_mark VARCHAR(255) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id),
|
||||
KEY idx_ll_wh_transfer_item_list (customer_id,transfer_order_id), KEY idx_ll_wh_transfer_item_sku (customer_id,sku_code)
|
||||
) ENGINE=InnoDB COMMENT='Frozen warehouse transfer cargo items';
|
||||
|
||||
-- Customer relabel application: header, item snapshots, and immutable process history.
|
||||
CREATE TABLE IF NOT EXISTS ll_relabel_application (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
relabel_no VARCHAR(64) NOT NULL,
|
||||
lastleg_order_id BIGINT NOT NULL,
|
||||
customer_order_no VARCHAR(128) NOT NULL,
|
||||
@@ -808,18 +847,18 @@ CREATE TABLE IF NOT EXISTS ll_relabel_application (
|
||||
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_relabel_application_no (tenant_id,relabel_no),
|
||||
UNIQUE KEY uk_ll_relabel_application_idempotency (tenant_id,idempotency_key),
|
||||
UNIQUE KEY uk_ll_relabel_application_no (customer_id,relabel_no),
|
||||
UNIQUE KEY uk_ll_relabel_application_idempotency (customer_id,idempotency_key),
|
||||
UNIQUE KEY uk_ll_relabel_application_order (lastleg_order_id),
|
||||
KEY idx_ll_relabel_application_list (tenant_id,status,created_at),
|
||||
KEY idx_ll_relabel_application_customer (tenant_id,customer_order_no),
|
||||
KEY idx_ll_relabel_application_warehouse (tenant_id,overseas_warehouse_id)
|
||||
KEY idx_ll_relabel_application_list (customer_id,status,created_at),
|
||||
KEY idx_ll_relabel_application_customer (customer_id,customer_order_no),
|
||||
KEY idx_ll_relabel_application_warehouse (customer_id,overseas_warehouse_id)
|
||||
) ENGINE=InnoDB COMMENT='Customer relabel application header';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_relabel_item (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
application_id BIGINT NOT NULL,
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
sku_code VARCHAR(128) NOT NULL,
|
||||
product_image_file_id VARCHAR(128) NULL,
|
||||
product_image_file_name VARCHAR(255) NULL,
|
||||
@@ -836,13 +875,13 @@ CREATE TABLE IF NOT EXISTS ll_relabel_item (
|
||||
relabel_file_url VARCHAR(1000) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_ll_relabel_item_application (tenant_id,application_id),
|
||||
KEY idx_ll_relabel_item_sku (tenant_id,sku_code)
|
||||
KEY idx_ll_relabel_item_application (customer_id,application_id),
|
||||
KEY idx_ll_relabel_item_sku (customer_id,sku_code)
|
||||
) ENGINE=InnoDB COMMENT='Frozen customer relabel cargo items';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_relabel_status_history (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
tenant_id VARCHAR(128) NOT NULL,
|
||||
customer_id VARCHAR(128) NOT NULL,
|
||||
application_id BIGINT NOT NULL,
|
||||
from_status VARCHAR(32) NULL,
|
||||
to_status VARCHAR(32) NOT NULL,
|
||||
@@ -850,5 +889,42 @@ CREATE TABLE IF NOT EXISTS ll_relabel_status_history (
|
||||
remark VARCHAR(1000) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_ll_relabel_status_history_application (tenant_id,application_id,created_at)
|
||||
KEY idx_ll_relabel_status_history_application (customer_id,application_id,created_at)
|
||||
) ENGINE=InnoDB COMMENT='Immutable customer relabel process history';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dropship_order_profile (
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, order_id BIGINT NOT NULL,
|
||||
warehouse_pallet_id BIGINT NOT NULL, pallet_no VARCHAR(128) NOT NULL,
|
||||
source_pallet_no VARCHAR(128) NOT NULL COMMENT 'Pallet number snapshot supplied by first-leg handover',
|
||||
inventory_position_id BIGINT NULL, status VARCHAR(32) NOT NULL DEFAULT 'RECEIVED',
|
||||
idempotency_key VARCHAR(255) NOT NULL, version BIGINT 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_dropship_profile_order_pallet(customer_id,order_id,source_pallet_no),
|
||||
UNIQUE KEY uk_ll_dropship_profile_key(customer_id,idempotency_key), KEY idx_ll_dropship_profile_order(customer_id,order_id)
|
||||
) ENGINE=InnoDB COMMENT='One-click dropship pallet profile; one order may own multiple pallets';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dropship_carton (
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, order_id BIGINT NOT NULL, profile_id BIGINT NOT NULL,
|
||||
warehouse_pallet_id BIGINT NOT NULL, pallet_no VARCHAR(128) NOT NULL, sku_code VARCHAR(128) NOT NULL, carton_mark VARCHAR(128) NOT NULL,
|
||||
carton_sequence INT NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'AVAILABLE', outbound_order_no VARCHAR(128) NULL,
|
||||
version BIGINT 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_dropship_carton(customer_id,order_id,carton_mark),
|
||||
KEY idx_ll_dropship_carton_status(customer_id,status), KEY idx_ll_dropship_carton_sku(customer_id,sku_code,status)
|
||||
) ENGINE=InnoDB COMMENT='One-click dropship carton-mark identity for one SKU box';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dropship_sku_inventory (
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, order_id BIGINT NOT NULL, profile_id BIGINT NOT NULL,
|
||||
sku_code VARCHAR(128) NOT NULL, product_name VARCHAR(255) NULL, package_count BIGINT NOT NULL, product_quantity BIGINT NOT NULL,
|
||||
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_dropship_sku_inventory(profile_id,sku_code),
|
||||
KEY idx_ll_dropship_sku_order(customer_id,order_id,sku_code)
|
||||
) ENGINE=InnoDB COMMENT='One-click dropship pallet-level SKU package-count and product-quantity inventory summary';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dropship_carton_ledger (
|
||||
id BIGINT NOT NULL, customer_id VARCHAR(128) NOT NULL, order_id BIGINT NOT NULL, carton_id BIGINT NOT NULL,
|
||||
carton_mark VARCHAR(128) NOT NULL, sku_code VARCHAR(128) NOT NULL, operation_type VARCHAR(32) NOT NULL,
|
||||
before_packages BIGINT NOT NULL, delta_packages BIGINT NOT NULL, after_packages BIGINT NOT NULL,
|
||||
business_order_no VARCHAR(128) NULL, idempotency_key VARCHAR(255) NOT NULL, remark VARCHAR(1000) NULL,
|
||||
occurred_at DATETIME(3) NOT NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id),
|
||||
UNIQUE KEY uk_ll_dropship_ledger_key(customer_id,idempotency_key), KEY idx_ll_dropship_ledger_sku(customer_id,sku_code,carton_mark)
|
||||
) ENGINE=InnoDB COMMENT='Immutable dropship SKU/carton-mark package ledger';
|
||||
|
||||
Reference in New Issue
Block a user