feat(oms,wms): 出库全链路物料明细/单头增加库存锁定模式字段(存储+回显)
- 出库业务单明细/执行单明细/WMS出库明细/拣货明细/复核明细新增stockLockMode; 业务单单头新增JSON数组字段、执行单单头新增单值字段 - 下单/编辑时按明细行仓库实时判定(1-下单冻结 2-分配库存冻结默认), 下发后沿 执行单→WMS推单→拣货→复核 逐级复制继承, 交接单回显内存组装 - 业务单单头JSON两段式: 下单按仓写入(无执行单号), 下发覆盖为执行单级(带CK执行单号) - WMS自建/通知/调拨单明细固定2; TZPD外部推入/老预约单下发路径固定2 - 达梦SQL脚本(OMS库4表+WMS库3表), 明细列DEFAULT 2存量自动回填
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
-- =====================================================================
|
||||
-- 出库全链路物料明细增加"库存锁定模式"字段 —— 存储与回显
|
||||
-- 日期: 2026-09-14
|
||||
-- 数据库: 达梦(DM), 兼容 Oracle 语法
|
||||
-- 背景:
|
||||
-- OMS下单冻结库存(防超卖)功能按仓库级开关 stock_lock_mode 生效,
|
||||
-- 为让前端在单仓/多仓模式下按明细行回显"该行是下单冻结还是分配冻结",
|
||||
-- 在出库链路各级物料明细上冗余存储库存锁定模式:
|
||||
-- 1-下单冻结(OMS出库业务单「下单」即冻结WMS库存)
|
||||
-- 2-分配库存冻结(默认, WMS「分配库存」时才冻结)
|
||||
-- 取值链:
|
||||
-- OMS业务单明细 = 保存时按行仓库(行warehouseId优先,空取单头)实时判定;
|
||||
-- OMS执行单明细 = 下发时从业务单明细复制;
|
||||
-- WMS出库单明细 = OMS推单时从执行单明细复制(推单参数同步加字段),
|
||||
-- WMS自建/通知/调拨单 = 2;
|
||||
-- WMS拣货明细 = 生成时从出库单明细复制;
|
||||
-- WMS复核明细 = 生成时从拣货明细取值;
|
||||
-- 交接单明细 = 回显时内存组装取自出库单明细(无明细表,不需要加列)。
|
||||
-- 兼容: 存量行由 DEFAULT 填 2(执行后可核查, 未填的行按 NULL 视同 2 语义兜底)。
|
||||
-- 执行位置:
|
||||
-- 第一、二节在 OMS 库(模式 NGWL_TEST_OMS)执行;
|
||||
-- 第三、四、五节在 WMS 库(模式 NGWL_TEST_WMS)执行;
|
||||
-- 生产环境按实际模式名替换。
|
||||
-- =====================================================================
|
||||
|
||||
-- ============ 一、OMS 出库业务单明细 RESERVATION_OUT_MATERIAL_DETAIL ============
|
||||
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_OUT_MATERIAL_DETAIL" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_OUT_MATERIAL_DETAIL".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), 保存时按行仓库判定';
|
||||
|
||||
-- ============ 二、OMS 出库执行单明细 EXECUTION_OUT_MATERIAL_DETAIL ============
|
||||
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_OUT_MATERIAL_DETAIL" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_OUT_MATERIAL_DETAIL".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), 下发时从业务单明细复制';
|
||||
|
||||
-- ============ 三、WMS 出库明细 OUT_MATERIAL_DETAIL ============
|
||||
ALTER TABLE "NGWL_TEST_WMS"."OUT_MATERIAL_DETAIL" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_WMS"."OUT_MATERIAL_DETAIL".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), OMS推单复制/WMS自建为2';
|
||||
|
||||
-- ============ 四、WMS 拣货明细 PICKING_MATERIAL_DETAIL ============
|
||||
ALTER TABLE "NGWL_TEST_WMS"."PICKING_MATERIAL_DETAIL" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_WMS"."PICKING_MATERIAL_DETAIL".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), 生成时从出库单明细复制';
|
||||
|
||||
-- ============ 五、WMS 复核明细 REVIEW_MATERIAL_DETAIL ============
|
||||
ALTER TABLE "NGWL_TEST_WMS"."REVIEW_MATERIAL_DETAIL" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_WMS"."REVIEW_MATERIAL_DETAIL".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), 生成时从拣货明细取值';
|
||||
|
||||
-- ============ 六、OMS 出库业务单头 RESERVATION_STOCK_OUT_ORDER ============
|
||||
-- 多仓单会按仓拆多条执行单, 单头用 JSON 数组存各仓/各执行单的模式; 下单按仓写入, 下发后覆盖为带执行单号
|
||||
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_OUT_ORDER" ADD COLUMN STOCK_LOCK_MODE_JSON VARCHAR(2000);
|
||||
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_OUT_ORDER".STOCK_LOCK_MODE_JSON IS '库存锁定模式JSON(多仓多执行单): [{"executionOrderNumber":"CK001","warehouseCode":"QZ","warehouseName":"青洲仓","stockLockMode":1}]; 下单按仓写入, 下发后回填执行单号';
|
||||
|
||||
-- ============ 七、OMS 出库执行单头 EXECUTION_STOCK_OUT_ORDER ============
|
||||
-- 执行单按仓拆分, 整单同仓同模式, 存单值; 下发时从该仓明细行取值(与明细/实际冻结行为一致)
|
||||
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_OUT_ORDER" ADD COLUMN STOCK_LOCK_MODE TINYINT DEFAULT 2;
|
||||
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_OUT_ORDER".STOCK_LOCK_MODE IS '库存锁定模式: 1-下单冻结 2-分配库存冻结(默认), 下发时按该仓明细行取值';
|
||||
|
||||
-- ============ 执行后验证(可选) ============
|
||||
-- OMS 库执行:
|
||||
-- SELECT COLUMN_NAME, DATA_TYPE, DATA_DEFAULT FROM ALL_TAB_COLUMNS
|
||||
-- WHERE OWNER='NGWL_TEST_OMS' AND COLUMN_NAME='STOCK_LOCK_MODE'
|
||||
-- AND TABLE_NAME IN ('RESERVATION_OUT_MATERIAL_DETAIL','EXECUTION_OUT_MATERIAL_DETAIL','EXECUTION_STOCK_OUT_ORDER');
|
||||
-- SELECT COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS
|
||||
-- WHERE OWNER='NGWL_TEST_OMS' AND COLUMN_NAME='STOCK_LOCK_MODE_JSON'
|
||||
-- AND TABLE_NAME = 'RESERVATION_STOCK_OUT_ORDER';
|
||||
-- WMS 库执行:
|
||||
-- SELECT COLUMN_NAME, DATA_TYPE, DATA_DEFAULT FROM ALL_TAB_COLUMNS
|
||||
-- WHERE OWNER='NGWL_TEST_WMS' AND COLUMN_NAME='STOCK_LOCK_MODE'
|
||||
-- AND TABLE_NAME IN ('OUT_MATERIAL_DETAIL','PICKING_MATERIAL_DETAIL','REVIEW_MATERIAL_DETAIL');
|
||||
|
||||
-- ============ 回滚(如需) ============
|
||||
-- OMS 库:
|
||||
-- ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_OUT_MATERIAL_DETAIL" DROP COLUMN STOCK_LOCK_MODE;
|
||||
-- ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_OUT_MATERIAL_DETAIL" DROP COLUMN STOCK_LOCK_MODE;
|
||||
-- ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_OUT_ORDER" DROP COLUMN STOCK_LOCK_MODE_JSON;
|
||||
-- ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_OUT_ORDER" DROP COLUMN STOCK_LOCK_MODE;
|
||||
-- WMS 库:
|
||||
-- ALTER TABLE "NGWL_TEST_WMS"."OUT_MATERIAL_DETAIL" DROP COLUMN STOCK_LOCK_MODE;
|
||||
-- ALTER TABLE "NGWL_TEST_WMS"."PICKING_MATERIAL_DETAIL" DROP COLUMN STOCK_LOCK_MODE;
|
||||
-- ALTER TABLE "NGWL_TEST_WMS"."REVIEW_MATERIAL_DETAIL" DROP COLUMN STOCK_LOCK_MODE;
|
||||
Reference in New Issue
Block a user