派车提交
This commit is contained in:
+258
-2
@@ -101,7 +101,7 @@ CREATE TABLE IF NOT EXISTS wh_pallet (
|
||||
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID',
|
||||
warehouse_id BIGINT UNSIGNED NOT NULL COMMENT '所属仓库ID',
|
||||
location_id BIGINT UNSIGNED NULL COMMENT '同仓库内绑定的库位ID,可为空',
|
||||
pallet_code VARCHAR(64) NOT NULL COMMENT '仓库内唯一托盘编码',
|
||||
pallet_code VARCHAR(128) NOT NULL COMMENT '仓库内唯一托盘编码',
|
||||
pallet_type VARCHAR(32) NOT NULL COMMENT '托盘类型',
|
||||
capacity_cbm DECIMAL(18,4) NOT NULL DEFAULT 2.0000 COMMENT '托盘容量(立方米)',
|
||||
unit_price DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '托盘单价',
|
||||
@@ -165,7 +165,7 @@ ALTER TABLE wh_pallet
|
||||
MODIFY COLUMN tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT UNSIGNED NOT NULL COMMENT '所属仓库ID',
|
||||
MODIFY COLUMN location_id BIGINT UNSIGNED NULL COMMENT '同仓库内绑定的库位ID,可为空',
|
||||
MODIFY COLUMN pallet_code VARCHAR(64) NOT NULL COMMENT '仓库内唯一托盘编码',
|
||||
MODIFY COLUMN pallet_code VARCHAR(128) NOT NULL COMMENT '仓库内唯一托盘编码',
|
||||
MODIFY COLUMN pallet_type VARCHAR(32) NOT NULL COMMENT '托盘类型',
|
||||
MODIFY COLUMN capacity_cbm DECIMAL(18,4) NOT NULL DEFAULT 2.0000 COMMENT '托盘容量(立方米)',
|
||||
MODIFY COLUMN unit_price DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '托盘单价',
|
||||
@@ -611,3 +611,259 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.statistics WHERE
|
||||
PREPARE migration_stmt FROM @ddl; EXECUTE migration_stmt; DEALLOCATE PREPARE migration_stmt;
|
||||
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='wh_service_capability' AND index_name='idx_capability_query'), 'SELECT 1', 'CREATE INDEX idx_capability_query ON wh_service_capability(tenant_id,warehouse_id,enabled,deleted)'));
|
||||
PREPARE migration_stmt FROM @ddl; EXECUTE migration_stmt; DEALLOCATE PREPARE migration_stmt;
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 007
|
||||
-- Last-leg batch FBA appointments
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
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'));
|
||||
PREPARE migration_stmt FROM @ddl; EXECUTE migration_stmt; DEALLOCATE PREPARE migration_stmt;
|
||||
UPDATE ll_inbound_plan_line l JOIN ll_order o ON o.id=l.order_id
|
||||
SET l.fba_warehouse_code=o.fba_warehouse_code
|
||||
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,
|
||||
appointment_no VARCHAR(64) NOT NULL,
|
||||
appointment_at DATETIME(3) NOT NULL,
|
||||
appointment_status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
|
||||
appointment_remark VARCHAR(1000) NULL,
|
||||
fba_warehouse_code VARCHAR(128) NOT NULL,
|
||||
selected_count INT NOT NULL DEFAULT 0,
|
||||
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_fba_appointment_no (tenant_id, appointment_no),
|
||||
KEY idx_ll_fba_appointment_list (tenant_id, appointment_status, fba_warehouse_code, created_at)
|
||||
) ENGINE=InnoDB COMMENT='Batch FBA appointment';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_fba_appointment_item (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID',
|
||||
appointment_id BIGINT NOT NULL,
|
||||
plan_id BIGINT NOT NULL,
|
||||
line_id BIGINT NOT NULL,
|
||||
order_id BIGINT NOT NULL,
|
||||
inbound_code VARCHAR(128) NOT NULL,
|
||||
fba_warehouse_code VARCHAR(128) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_ll_fba_appointment_item_line (appointment_id, line_id),
|
||||
KEY idx_ll_fba_appointment_item_plan (plan_id),
|
||||
KEY idx_ll_fba_appointment_item_order (order_id)
|
||||
) ENGINE=InnoDB COMMENT='FBA appointment line snapshot';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 008
|
||||
-- Last-leg SKU/package inventory balances, positions and immutable ledger
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_balance (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL, customer_name VARCHAR(255) NULL,
|
||||
overseas_warehouse_id VARCHAR(128) NOT NULL, overseas_warehouse_code VARCHAR(128) NULL,
|
||||
overseas_warehouse_name VARCHAR(255) NULL, destination_warehouse_id VARCHAR(128) NULL,
|
||||
destination_warehouse_code VARCHAR(128) NOT NULL DEFAULT '', destination_warehouse_name VARCHAR(255) NULL,
|
||||
sku_code VARCHAR(128) NOT NULL, sku_name_zh VARCHAR(255) NULL,
|
||||
available_packages BIGINT NOT NULL DEFAULT 0, hold_packages BIGINT NOT NULL DEFAULT 0,
|
||||
allocated_packages BIGINT NOT NULL DEFAULT 0, picked_packages BIGINT NOT NULL DEFAULT 0,
|
||||
in_transit_packages BIGINT NOT NULL DEFAULT 0, receiving_packages BIGINT NOT NULL DEFAULT 0,
|
||||
procurement_packages BIGINT NOT NULL DEFAULT 0,
|
||||
available_quantity BIGINT NOT NULL DEFAULT 0, hold_quantity BIGINT NOT NULL DEFAULT 0,
|
||||
allocated_quantity BIGINT NOT NULL DEFAULT 0, picked_quantity BIGINT NOT NULL DEFAULT 0,
|
||||
in_transit_quantity BIGINT NOT NULL DEFAULT 0, receiving_quantity BIGINT NOT NULL DEFAULT 0,
|
||||
procurement_quantity BIGINT NOT NULL DEFAULT 0, 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_inventory_dimension (tenant_id,overseas_warehouse_id,destination_warehouse_code,sku_code),
|
||||
KEY idx_ll_inventory_list (tenant_id,overseas_warehouse_id,updated_at),
|
||||
KEY idx_ll_inventory_sku (tenant_id,sku_code)
|
||||
) ENGINE=InnoDB COMMENT='Real-time SKU 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,
|
||||
overseas_warehouse_id VARCHAR(128) NOT NULL, destination_warehouse_code VARCHAR(128) NOT NULL DEFAULT '',
|
||||
sku_code VARCHAR(128) NOT NULL, pallet_id BIGINT NOT NULL, pallet_no VARCHAR(64) NOT NULL,
|
||||
batch_no VARCHAR(128) NOT NULL DEFAULT '', warehouse_location_id BIGINT NULL,
|
||||
warehouse_location_code VARCHAR(128) NOT NULL,
|
||||
available_packages BIGINT NOT NULL DEFAULT 0, hold_packages BIGINT NOT NULL DEFAULT 0,
|
||||
allocated_packages BIGINT NOT NULL DEFAULT 0, picked_packages BIGINT NOT NULL DEFAULT 0,
|
||||
receiving_packages BIGINT NOT NULL DEFAULT 0, product_quantity BIGINT NOT NULL DEFAULT 0,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', 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_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)
|
||||
) ENGINE=InnoDB COMMENT='SKU 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,
|
||||
balance_id BIGINT NOT NULL, position_id BIGINT NULL, overseas_warehouse_id VARCHAR(128) NOT NULL,
|
||||
destination_warehouse_code VARCHAR(128) NOT NULL DEFAULT '', sku_code VARCHAR(128) 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,
|
||||
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,
|
||||
status_from VARCHAR(32) NULL, status_to VARCHAR(32) NULL,
|
||||
before_packages BIGINT NOT NULL, delta_packages BIGINT NOT NULL, after_packages BIGINT NOT NULL,
|
||||
before_quantity BIGINT NOT NULL, delta_quantity BIGINT NOT NULL, after_quantity 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_sku (tenant_id,sku_code,occurred_at),
|
||||
KEY idx_ll_inventory_ledger_business (tenant_id,business_type,business_order_no)
|
||||
) ENGINE=InnoDB COMMENT='Immutable inventory package and quantity ledger';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inventory_operation (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_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)
|
||||
) ENGINE=InnoDB COMMENT='Inventory command idempotency record';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 009
|
||||
-- PDA SKU/pallet receipt snapshots for stock-in closure
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_inbound_stock_receipt (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_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,
|
||||
sku_code VARCHAR(128) NOT NULL, sku_name_zh VARCHAR(255) NULL, source_detail_ids VARCHAR(2000) NULL,
|
||||
warehouse_pallet_id BIGINT NOT NULL, pallet_no VARCHAR(64) NOT NULL,
|
||||
warehouse_location_id BIGINT NULL, warehouse_location_code VARCHAR(128) NULL,
|
||||
batch_no VARCHAR(128) NOT NULL, received_packages BIGINT NOT NULL, received_quantity BIGINT NOT NULL,
|
||||
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_sku (tenant_id,task_id,allocation_id,sku_code),
|
||||
KEY idx_ll_stock_receipt_plan (tenant_id,plan_id,line_id), KEY idx_ll_stock_receipt_inventory (inventory_balance_id,inventory_position_id)
|
||||
) ENGINE=InnoDB COMMENT='Immutable SKU-pallet PDA stock-in receipt snapshot';
|
||||
|
||||
-- 2026-08-17 warehouse virtual location and generated pallet code support.
|
||||
USE baiyue_lastlag_warehouse;
|
||||
|
||||
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
|
||||
AND table_name='wh_pallet' AND column_name='pallet_code'),
|
||||
'ALTER TABLE wh_pallet MODIFY COLUMN pallet_code VARCHAR(128) NOT NULL COMMENT ''Warehouse pallet code''', 'SELECT 1'));
|
||||
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
INSERT INTO wh_location (id, tenant_id, warehouse_id, zone_code, location_code, location_type,
|
||||
max_load_kg, status, remark)
|
||||
SELECT UUID_SHORT(), w.tenant_id, w.id, 'DEFAULT', CONCAT('LOC-', w.warehouse_code, '-DEFAULT'),
|
||||
'VIRTUAL', 999999999.000, 'ACTIVE', 'System default virtual location'
|
||||
FROM wh_warehouse w
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location l
|
||||
WHERE l.tenant_id = w.tenant_id AND l.warehouse_id = w.id
|
||||
AND l.location_code = CONCAT('LOC-', w.warehouse_code, '-DEFAULT') AND l.deleted = 0
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 010
|
||||
-- Last-leg pre-dispatch orders and pallet locks
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_dispatch_order (
|
||||
id BIGINT NOT NULL COMMENT 'Snowflake ID', tenant_id VARCHAR(128) NOT NULL,
|
||||
dispatch_no VARCHAR(64) NOT NULL, vehicle_plate VARCHAR(64) NULL, driver_name VARCHAR(128) NULL,
|
||||
driver_phone VARCHAR(64) NULL, carrier_name VARCHAR(255) NULL, route VARCHAR(255) NULL,
|
||||
depart_at DATETIME(3) NULL, fba_appointment_no VARCHAR(64) NULL,
|
||||
fba_appointment_status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
|
||||
vehicle_appointment_status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
|
||||
estimated_arrival_at DATETIME(3) NULL, status VARCHAR(32) NOT NULL DEFAULT 'PENDING_DEPARTURE',
|
||||
item_count INT NOT NULL DEFAULT 0, pallet_count INT NOT NULL DEFAULT 0, package_count INT NOT NULL DEFAULT 0,
|
||||
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_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)
|
||||
) 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,
|
||||
plan_id BIGINT NULL, plan_pallet_id BIGINT NULL, warehouse_pallet_id BIGINT NULL,
|
||||
order_id BIGINT NULL, order_no VARCHAR(64) NULL, order_refs VARCHAR(2000) NULL, inbound_code VARCHAR(128) 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, fba_warehouse_code VARCHAR(128) NULL,
|
||||
package_count INT NOT NULL DEFAULT 0, volume_cbm DECIMAL(18,4) NOT NULL DEFAULT 0,
|
||||
source_stage VARCHAR(32) NOT NULL, 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)
|
||||
) 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,
|
||||
source_pallet_key VARCHAR(160) NOT NULL, active_key VARCHAR(160) NULL,
|
||||
plan_id BIGINT NULL, plan_pallet_id BIGINT NULL, warehouse_pallet_id BIGINT NULL,
|
||||
dispatch_order_id BIGINT NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
|
||||
locked_at DATETIME(3) NOT NULL, released_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_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)
|
||||
) ENGINE=InnoDB COMMENT='Active dispatch pallet exclusion lock';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 011
|
||||
-- Dispatch PDA task and immutable pallet pick operations
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
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,
|
||||
task_no VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, operator_id VARCHAR(128) NULL,
|
||||
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)
|
||||
) 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,
|
||||
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)
|
||||
) 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,
|
||||
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)
|
||||
) ENGINE=InnoDB COMMENT='Idempotent dispatch PDA operations';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2026-08-17 / 012
|
||||
-- Preserve all tail-leg orders included in one merged dispatch pallet
|
||||
-- ============================================================================
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
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 migration_stmt FROM @ddl; EXECUTE migration_stmt; DEALLOCATE PREPARE migration_stmt;
|
||||
|
||||
Reference in New Issue
Block a user