fix: order dropship schema convergence before assertions

This commit is contained in:
2026-09-08 18:02:47 +08:00
parent 13d8640b4c
commit 3aaba2d6a3
2 changed files with 66 additions and 4 deletions
@@ -8000,6 +8000,57 @@ SELECT role.id, permission.id, role.tenant_id
)
WHERE role.tenant_id = 0 AND role.role_code IN ('PLATFORM_ADMIN', 'ORDER_OPERATOR');
-- 已存在库必须先把装柜分配唯一键收敛到“普通明细或封托托盘”,再执行三期断言。
USE baiyue_firstleg;
DROP PROCEDURE IF EXISTS converge_loading_assignment_schema;
DELIMITER $$
CREATE PROCEDURE converge_loading_assignment_schema()
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND column_name='unit_type') THEN
ALTER TABLE fl_loading_plan_item
ADD COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE'
COMMENT '分配单元:PACKAGE普通箱、SEALED_PALLET一件代发封托' AFTER product_quantity,
ADD COLUMN pallet_id BIGINT UNSIGNED NULL COMMENT '一件代发封托ID;普通箱为空' AFTER unit_type,
ADD COLUMN pallet_no VARCHAR(32) NULL COMMENT '一件代发系统托盘码快照' AFTER pallet_id,
ADD COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为不可拆整托单元' AFTER pallet_no;
END IF;
ALTER TABLE fl_loading_plan_item
MODIFY COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE'
COMMENT '分配单元:PACKAGE普通箱、SEALED_PALLET一件代发封托',
MODIFY COLUMN pallet_id BIGINT UNSIGNED NULL COMMENT '一件代发封托ID;普通箱为空',
MODIFY COLUMN pallet_no VARCHAR(32) NULL COMMENT '一件代发系统托盘码快照',
MODIFY COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为不可拆整托单元';
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND column_name='active_assignment_key') THEN
ALTER TABLE fl_loading_plan_item
ADD COLUMN active_assignment_key VARCHAR(96)
GENERATED ALWAYS AS (CASE WHEN deleted=0 THEN CONCAT(CASE WHEN pallet_id IS NULL THEN 'D:0' ELSE CONCAT('P:',pallet_id) END,':',inbound_detail_id) ELSE NULL END) STORED
COMMENT '普通明细或已封托托盘明细的有效唯一锁' AFTER active_inbound_detail_id;
END IF;
IF EXISTS (SELECT 1 FROM information_schema.statistics
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND index_name='uk_loading_item_plan_detail') THEN
ALTER TABLE fl_loading_plan_item DROP INDEX uk_loading_item_plan_detail;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND index_name='uk_loading_item_plan_assignment') THEN
ALTER TABLE fl_loading_plan_item
ADD UNIQUE KEY uk_loading_item_plan_assignment (loading_plan_id,active_assignment_key);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND index_name='idx_loading_item_pallet') THEN
ALTER TABLE fl_loading_plan_item ADD KEY idx_loading_item_pallet (pallet_id,deleted);
END IF;
END$$
DELIMITER ;
CALL converge_loading_assignment_schema();
DROP PROCEDURE IF EXISTS converge_loading_assignment_schema;
-- 污染存量库必须先完成旧入库权限搬迁和两类授权恢复,再校验智能装柜权限。
USE baiyue_firstleg;
CALL assert_phase3_smart_loading_schema();
@@ -17572,8 +17623,11 @@ BEGIN
MODIFY COLUMN expected_sku_quantity INT UNSIGNED NOT NULL COMMENT '箱唛冻结的应收SKU数量',
MODIFY COLUMN actual_sku_quantity INT UNSIGNED NOT NULL COMMENT 'PDA确认的实收SKU数量',
MODIFY COLUMN discrepancy_status VARCHAR(24) NOT NULL COMMENT '差异状态:MATCH或ACCEPTED_VARIANCE',
MODIFY COLUMN discrepancy_remark VARCHAR(500) NULL COMMENT '差异接受说明',
MODIFY COLUMN bind_operation_id VARCHAR(128) NULL COMMENT '批量绑托幂等操作ID',
MODIFY COLUMN last_operation_id VARCHAR(128) NOT NULL COMMENT '最后一次绑托或换托操作幂等号',
MODIFY COLUMN counted_by BIGINT UNSIGNED NOT NULL COMMENT '清点操作人ID',
MODIFY COLUMN counted_by_name VARCHAR(64) NULL COMMENT '清点操作人姓名快照',
MODIFY COLUMN counted_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '清点时间',
MODIFY COLUMN bound_by BIGINT UNSIGNED NULL COMMENT '上托操作人ID',
MODIFY COLUMN bound_at DATETIME(3) NULL COMMENT '上托时间';
@@ -17594,11 +17648,18 @@ BEGIN
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND column_name='unit_type') THEN
ALTER TABLE fl_loading_plan_item
ADD COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE' AFTER product_quantity,
ADD COLUMN pallet_id BIGINT UNSIGNED NULL AFTER unit_type,
ADD COLUMN pallet_no VARCHAR(32) NULL AFTER pallet_id,
ADD COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 AFTER pallet_no;
ADD COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE'
COMMENT '分配单元:PACKAGE普通箱、SEALED_PALLET一件代发封托' AFTER product_quantity,
ADD COLUMN pallet_id BIGINT UNSIGNED NULL COMMENT '一件代发封托ID;普通箱为空' AFTER unit_type,
ADD COLUMN pallet_no VARCHAR(32) NULL COMMENT '一件代发系统托盘码快照' AFTER pallet_id,
ADD COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为不可拆整托单元' AFTER pallet_no;
END IF;
ALTER TABLE fl_loading_plan_item
MODIFY COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE'
COMMENT '分配单元:PACKAGE普通箱、SEALED_PALLET一件代发封托',
MODIFY COLUMN pallet_id BIGINT UNSIGNED NULL COMMENT '一件代发封托ID;普通箱为空',
MODIFY COLUMN pallet_no VARCHAR(32) NULL COMMENT '一件代发系统托盘码快照',
MODIFY COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为不可拆整托单元';
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
AND column_name='active_assignment_key') THEN