This commit is contained in:
2026-08-10 09:11:57 +08:00
67 changed files with 3329 additions and 208 deletions
@@ -646,6 +646,7 @@ CREATE TABLE IF NOT EXISTS fl_inbound_pallet_allocation (
allocated_package_count INT UNSIGNED NULL COMMENT '本托盘分配箱数',
location_id BIGINT UNSIGNED NOT NULL COMMENT '仓库服务库位ID',
location_code VARCHAR(50) NOT NULL COMMENT '库位编码快照',
reservation_id BIGINT UNSIGNED NULL COMMENT '仓库预占资源唯一ID,A0共享场景用于区分托盘',
reservation_no VARCHAR(64) NOT NULL COMMENT '仓库库位预占单号',
allocation_status VARCHAR(24) NOT NULL DEFAULT 'RESERVED' COMMENT '分配状态',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
@@ -654,6 +655,7 @@ CREATE TABLE IF NOT EXISTS fl_inbound_pallet_allocation (
UNIQUE KEY uk_pallet_allocation_no (tenant_id, inbound_id, allocation_no),
UNIQUE KEY uk_pallet_allocation_pallet (tenant_id, inbound_id, pallet_id),
KEY idx_allocation_location (tenant_id, warehouse_id, location_id, allocation_status),
KEY idx_allocation_reservation (reservation_id),
CONSTRAINT fk_allocation_inbound FOREIGN KEY (inbound_id) REFERENCES fl_inbound_order (id)
) ENGINE=InnoDB COMMENT='头程侧托盘、库位和仓库预占结果引用';
@@ -1,9 +1,10 @@
-- WAIT_SPLIT 是二期当前有效终点。本脚本仅校验兼容结构,禁止改写主表或历史状态。
-- 二、三期对外统一使用 INBOUNDED。历史 WAIT_SPLIT 仅由查询适配为 INBOUNDED,
-- 本脚本不改写业务主表或历史状态,避免影响既有审计记录。
USE baiyue_firstleg;
DROP PROCEDURE IF EXISTS assert_wait_split_compatibility;
DROP PROCEDURE IF EXISTS assert_inbounded_compatibility;
DELIMITER $$
CREATE PROCEDURE assert_wait_split_compatibility()
CREATE PROCEDURE assert_inbounded_compatibility()
BEGIN
IF (SELECT COUNT(*) FROM information_schema.columns
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_inbound_order'
@@ -12,9 +13,9 @@ BEGIN
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_inbound_status_history'
AND column_name IN ('from_status', 'to_status')) <> 2 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'WAIT_SPLIT 兼容校验失败:入库状态字段不完整';
SET MESSAGE_TEXT = 'INBOUNDED 兼容校验失败:入库状态字段不完整';
END IF;
END$$
DELIMITER ;
CALL assert_wait_split_compatibility();
DROP PROCEDURE assert_wait_split_compatibility;
CALL assert_inbounded_compatibility();
DROP PROCEDURE assert_inbounded_compatibility;
@@ -0,0 +1,37 @@
-- 三期 PDA 部分拣货释放策略与 A0 共享资源唯一标识。
SET NAMES utf8mb4;
DROP PROCEDURE IF EXISTS phase3_pda_add_column;
DELIMITER $$
CREATE PROCEDURE phase3_pda_add_column(IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_ddl TEXT)
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_column
) THEN
SET @phase3_pda_ddl = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN ', p_ddl);
PREPARE phase3_pda_stmt FROM @phase3_pda_ddl;
EXECUTE phase3_pda_stmt;
DEALLOCATE PREPARE phase3_pda_stmt;
END IF;
END$$
DELIMITER ;
CALL phase3_pda_add_column('fl_loading_pick_item', 'release_mode',
'`release_mode` VARCHAR(10) NULL COMMENT ''AUTO按比例释放,MANUAL按人工选择释放'' AFTER `item_status`');
CALL phase3_pda_add_column('fl_loading_pick_item', 'release_location_ids',
'`release_location_ids` JSON NULL COMMENT ''人工选择释放库位ID;空数组表示明确释放0个'' AFTER `release_mode`');
CALL phase3_pda_add_column('fl_inbound_pallet_allocation', 'reservation_id',
'`reservation_id` BIGINT UNSIGNED NULL COMMENT ''仓库预占资源唯一ID,A0共享场景用于区分托盘'' AFTER `location_code`');
SET @phase3_pda_index_ddl = IF(
EXISTS (SELECT 1 FROM information_schema.statistics
WHERE table_schema = DATABASE() AND table_name = 'fl_inbound_pallet_allocation'
AND index_name = 'idx_allocation_reservation'),
'SELECT 1',
'ALTER TABLE fl_inbound_pallet_allocation ADD INDEX idx_allocation_reservation (reservation_id)');
PREPARE phase3_pda_index_stmt FROM @phase3_pda_index_ddl;
EXECUTE phase3_pda_index_stmt;
DEALLOCATE PREPARE phase3_pda_index_stmt;
DROP PROCEDURE IF EXISTS phase3_pda_add_column;
@@ -429,6 +429,8 @@ CREATE TABLE IF NOT EXISTS fl_loading_pick_item (
planned_package_count INT UNSIGNED NOT NULL COMMENT '计划拣货箱数;上层拆分按业务规则向上取整',
picked_package_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '已拣货箱数',
item_status VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING、PICKING、PICKED、PARTIAL、SKIPPED',
release_mode VARCHAR(10) NULL COMMENT 'AUTO按比例释放,MANUAL按人工选择释放',
release_location_ids JSON NULL COMMENT '人工选择释放库位ID;空数组表示明确释放0个',
version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
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),