This commit is contained in:
2026-08-17 20:21:44 +08:00
parent b8c7f9fea2
commit 092c003e3a
6 changed files with 44 additions and 10 deletions
@@ -2528,14 +2528,38 @@ CREATE TABLE IF NOT EXISTS fl_inbound_order (
) ENGINE=InnoDB COMMENT='二期头程入库单聚合根和列表查询快照';
UPDATE baiyue_order.ord_order o
LEFT JOIN baiyue_firstleg.fl_inbound_order i
JOIN baiyue_firstleg.fl_inbound_order i
ON i.tenant_id = o.tenant_id AND i.order_id = o.id AND i.deleted = 0
SET o.inbound_code = COALESCE(i.inbound_code, CONCAT('RK-', o.id))
SET o.inbound_code = i.inbound_code
WHERE o.deleted = 0
AND o.status <> 'DRAFT'
AND (o.submitted_at IS NOT NULL
OR o.status IN ('SUBMITTED', 'APPROVED', 'ACCEPTED', 'PROCESSING', 'COMPLETED'))
AND o.inbound_code IS NULL;
AND o.inbound_code IS NULL
AND i.inbound_code IS NOT NULL
AND TRIM(i.inbound_code) <> '';
-- 非草稿订单若既无订单入仓码也无 Firstleg 权威入仓码,禁止用内部 ID 伪造业务键。
DROP PROCEDURE IF EXISTS assert_submitted_order_inbound_code;
DELIMITER $$
CREATE PROCEDURE assert_submitted_order_inbound_code()
BEGIN
IF EXISTS (
SELECT 1
FROM baiyue_order.ord_order o
WHERE o.deleted = 0
AND o.status <> 'DRAFT'
AND (o.submitted_at IS NOT NULL
OR o.status IN ('SUBMITTED', 'APPROVED', 'ACCEPTED', 'PROCESSING', 'COMPLETED'))
AND (o.inbound_code IS NULL OR TRIM(o.inbound_code) = '')
) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = '存在已提交订单缺少权威入仓码,请先修复订单/Firstleg业务事实后重跑';
END IF;
END$$
DELIMITER ;
CALL assert_submitted_order_inbound_code();
DROP PROCEDURE IF EXISTS assert_submitted_order_inbound_code;
-- 从未提交的草稿或由草稿直接取消的订单不应拥有入仓码。
UPDATE baiyue_order.ord_order