- 仓库新增stock_lock_mode开关(1-下单冻结 2-分配库存冻结默认),查询/独立切换接口+在途冻结单切换守卫 - WMS新增out_order_freeze_record冻结记录表:下单冻结/编辑原子重锁/取消解冻/分配承接/交接扣减/反审还原全状态机,条件更新防并发超卖 - OMS下单即冻结(失败阻断+落库失败补偿解冻)、已下发禁编辑、cancelIssueOrder补调WMS清理(修存量不同步)、cancelAuditState镜像还原修复 - 达梦SQL脚本3个(WAREHOUSE加列/冻结记录建表/主键列名修复),测试库已执行并全流程实测通过
34 lines
1.9 KiB
SQL
34 lines
1.9 KiB
SQL
-- ============================================================
|
||
-- 功能:仓库表新增"库存锁定模式"字段(OMS下单冻结库存/防超卖功能开关)
|
||
-- 数据库:达梦(DM8),兼容 Oracle 语法,表名/字段名统一大写
|
||
-- 模式:NGWL_TEST_SYSTEM(mhd-system 服务对应业务库;生产环境按实际模式名替换)
|
||
-- 表名:WAREHOUSE
|
||
-- 日期:2026-09-12
|
||
-- 说明:
|
||
-- 1-下单冻结:OMS出库业务单「下单」即冻结WMS库存(可用-、冻结+,库存数量不变)
|
||
-- 2-分配库存冻结:现有模式,WMS「分配库存」时才冻结(默认值,存量仓库行为零变化)
|
||
-- 不变式:库存数量 = 可用数量 + 冻结数量(出库交接前全程成立)
|
||
-- NULL 视为 2(代码侧 isOrderFreezeWarehouse 仅 =1 才走下单冻结,兜底降级安全)
|
||
-- ============================================================
|
||
|
||
-- 0. 执行前检查(确认列是否已存在,已存在则跳过本脚本)
|
||
-- SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE
|
||
-- FROM ALL_TAB_COLUMNS
|
||
-- WHERE OWNER = 'NGWL_TEST_SYSTEM'
|
||
-- AND TABLE_NAME = 'WAREHOUSE'
|
||
-- AND COLUMN_NAME = 'STOCK_LOCK_MODE';
|
||
|
||
-- 1. 添加字段(达梦 ADD COLUMN 不支持 AFTER,列追加在表尾;带 DEFAULT 时存量行自动填默认值)
|
||
ALTER TABLE NGWL_TEST_SYSTEM.WAREHOUSE ADD STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||
|
||
-- 2. 添加注释(达梦必须单独写)
|
||
COMMENT ON COLUMN NGWL_TEST_SYSTEM.WAREHOUSE.STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结';
|
||
|
||
-- 3. 验证
|
||
-- SELECT WAREHOUSE_ID, WAREHOUSE_CODE, STOCK_LOCK_MODE FROM NGWL_TEST_SYSTEM.WAREHOUSE WHERE ROWNUM <= 10;
|
||
|
||
-- ----------------------------
|
||
-- 回滚脚本(按需,须确认无 status∈(1,2) 的在途冻结单后再执行)
|
||
-- ALTER TABLE NGWL_TEST_SYSTEM.WAREHOUSE DROP COLUMN STOCK_LOCK_MODE;
|
||
-- ----------------------------
|