【需求】已入库/已出库的单子客户通知需要回退的场景,单子回退到最原始状态。反审入口在 OMS-入库业务单页面【反審單據】按钮,一次操作全链路回退。
【反审规则】
1. 按页面状态 issueStatus 判断:进行中(1)/已审核(2)/已入库(4)/部分完成(5) 可反审;已创建(0)无需反审、已驳回(3)可直接编辑;已取消/已关闭(status 6/7)兜底拦截
2. 已推送关务/NC(pushStatus=3)直接拦截,避免关务与仓内数据不一致
3. W入库单有出库记录就不能反审:按入库单号+动作(分配库存/出库)查询库存调整记录>0 即拦截,另校验库存冻结量>0
4. WMS无该单数据时幂等成功(未下发单反审),反审失败可安全重试
【反审动作】
1. 入库业务单:状态改为已驳回(issueStatus=3,与审核不通过同语义,可编辑→重新审核→重新下发),打已反审标记落入【已反审】tab;清空入库数量/入库时间/执行单号,明细 INBOUND_ITEMS/TOTAL_NET_WEIGHT 归零
2. 入库执行单+物料明细:软删(del_flag=2)+打已反审标记,【已反审】tab 按「已软删+已反审」查询归档数据,避免归档单被误审核/下发
3. WMS侧(逐执行单Feign omsReverseInOrder):库存还原扣减(校验库存行合计=已完成上架量后整行对称扣回,GREATEST(x-n,0)兜底)→ W入库单/W收货单/W上架单及明细、收货/上架作业单/任务/质检单整链软删+打已反审标记 → 写1条入库异常【反审记录】(type=3/abnormalType=6,FSYC单号)用于记录跟踪
【接口】
- POST /reservationStockInOrderApi/reverseAudit 反审(inOrderIds + reverseAuditRemark,支持批量)
- 已反审tab:/reservationStockInOrderApi/list?reverseAuditStatus=1(执行单/W入库单/W收货单/W上架单同参数,后端固定限定 del_flag=2+标记=1 归档数据)
- 归档详情:/executionStockInOrderApi、/stockInOrderApi、/stockReceiptOrderApi、/stockShelfOrderApi 各增 getReverseAuditInfo/{id}(原 getInfo 行为不变)
- 反审记录筛选:/inOrderAbnormalApi/list?abnormalType=6
【DDL】sql/20260908_oms_inbound_reverse_audit.sql:RESERVATION_STOCK_IN_ORDER / EXECUTION_STOCK_IN_ORDER / STOCK_IN_ORDER / STOCK_RECEIPT_ORDER / STOCK_SHELF_ORDER 各新增 REVERSE_AUDIT_STATUS/REMARK/BY/BY_NAME/TIME 五列,发服务前先执行
【其他】
- 库存扣减走 batchSubtractInventoryQuantity 并显式传更新人,规避 Feign 链路无登录态时 SecurityUtils 抛异常
- omsReverseInOrder 的 Feign 方法与降级已随出库反审提交(715883f1)入库,本次不再重复提交
- 归档行只读,详情走 getReverseAuditInfo;正常数据与归档数据互不干扰
94 lines
7.5 KiB
SQL
94 lines
7.5 KiB
SQL
-- =============================================================================
|
|
-- OMS 入库业务单「反审」功能 —— 反审标记字段(业务单/执行单/WMS三单)
|
|
-- 日期: 2026-09-08 版本: v3
|
|
-- 数据库: 达梦(DM8), 兼容 Oracle 语法, 表名/字段名统一大写
|
|
-- 模式: NGWL_TEST_OMS (mhd_oms) / NGWL_TEST_WMS (mhd_wms)
|
|
-- 需求:
|
|
-- 入库单「反审」: 已入库/已出库的单子客户通知需要回退的场景, 单子回退到最原始状态。
|
|
-- 反审入口在 OMS-入库业务单页面, 点击【反審單據】后:
|
|
-- 1. 入库业务单状态改为"已驳回"(issueStatus=3) + 已反审标记, 落【已反审】tab,
|
|
-- 可编辑→重新审核→重新下发
|
|
-- 2. 入库执行单 改为"已反审"(状态回退已创建+已反审标记), 物料明细保留
|
|
-- 3. W入库单/W收货单/W上架单 状态回退到"已创建"+已反审标记,
|
|
-- 数据划归到各自页面【已反审】tab页签, 可继续点击「编辑」or「审核」or「撤销」
|
|
-- 4. W库存还原扣减(按入库单号定位库存行整行扣回)
|
|
-- 5. 生成1条W入库异常【反审记录】(in_order_abnormal type=3)用于记录跟踪
|
|
-- 拦截: W入库单有出库记录就不能反审——按入库单号+动作("分配库存"/"出库")
|
|
-- 查询库存调整记录(inventory_adjustment_record)>0 即有出库;
|
|
-- 已推送关务(pushStatus=3)拦截。
|
|
-- =============================================================================
|
|
|
|
-- 执行前检查(确认列不存在, 避免重复执行报错; DM 数据字典标识符按大写存储)
|
|
-- SELECT OWNER, TABLE_NAME, COLUMN_NAME FROM ALL_TAB_COLUMNS
|
|
-- WHERE COLUMN_NAME = 'REVERSE_AUDIT_STATUS'
|
|
-- AND TABLE_NAME IN ('RESERVATION_STOCK_IN_ORDER','EXECUTION_STOCK_IN_ORDER',
|
|
-- 'STOCK_IN_ORDER','STOCK_RECEIPT_ORDER','STOCK_SHELF_ORDER');
|
|
|
|
-- ============ 一、OMS 业务单 RESERVATION_STOCK_IN_ORDER ============
|
|
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_STATUS NUMBER(1) DEFAULT 0;
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER".REVERSE_AUDIT_STATUS IS '反审状态: 0-无 1-已反审';
|
|
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_REMARK VARCHAR2(500);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER".REVERSE_AUDIT_REMARK IS '反审原因';
|
|
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY NUMBER(20);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER".REVERSE_AUDIT_BY IS '反审人id';
|
|
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY_NAME VARCHAR2(64);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER".REVERSE_AUDIT_BY_NAME IS '反审人姓名';
|
|
ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_TIME DATE;
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_STOCK_IN_ORDER".REVERSE_AUDIT_TIME IS '反审时间';
|
|
|
|
-- ============ 二、OMS 执行单 EXECUTION_STOCK_IN_ORDER ============
|
|
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_STATUS NUMBER(1) DEFAULT 0;
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER".REVERSE_AUDIT_STATUS IS '反审状态: 0-无 1-已反审';
|
|
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_REMARK VARCHAR2(500);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER".REVERSE_AUDIT_REMARK IS '反审原因';
|
|
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY NUMBER(20);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER".REVERSE_AUDIT_BY IS '反审人id';
|
|
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY_NAME VARCHAR2(64);
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER".REVERSE_AUDIT_BY_NAME IS '反审人姓名';
|
|
ALTER TABLE "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_TIME DATE;
|
|
COMMENT ON COLUMN "NGWL_TEST_OMS"."EXECUTION_STOCK_IN_ORDER".REVERSE_AUDIT_TIME IS '反审时间';
|
|
|
|
-- ============ 三、WMS 入库单 STOCK_IN_ORDER ============
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_STATUS NUMBER(1) DEFAULT 0;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_IN_ORDER".REVERSE_AUDIT_STATUS IS '反审状态: 0-无 1-已反审(已反审tab过滤)';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_REMARK VARCHAR2(500);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_IN_ORDER".REVERSE_AUDIT_REMARK IS '反审原因';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY NUMBER(20);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_IN_ORDER".REVERSE_AUDIT_BY IS '反审人id';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_BY_NAME VARCHAR2(64);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_IN_ORDER".REVERSE_AUDIT_BY_NAME IS '反审人姓名';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_IN_ORDER" ADD COLUMN REVERSE_AUDIT_TIME DATE;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_IN_ORDER".REVERSE_AUDIT_TIME IS '反审时间';
|
|
|
|
-- ============ 四、WMS 收货单 STOCK_RECEIPT_ORDER ============
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER" ADD COLUMN REVERSE_AUDIT_STATUS NUMBER(1) DEFAULT 0;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER".REVERSE_AUDIT_STATUS IS '反审状态: 0-无 1-已反审(已反审tab过滤)';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER" ADD COLUMN REVERSE_AUDIT_REMARK VARCHAR2(500);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER".REVERSE_AUDIT_REMARK IS '反审原因';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER" ADD COLUMN REVERSE_AUDIT_BY NUMBER(20);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER".REVERSE_AUDIT_BY IS '反审人id';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER" ADD COLUMN REVERSE_AUDIT_BY_NAME VARCHAR2(64);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER".REVERSE_AUDIT_BY_NAME IS '反审人姓名';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER" ADD COLUMN REVERSE_AUDIT_TIME DATE;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_RECEIPT_ORDER".REVERSE_AUDIT_TIME IS '反审时间';
|
|
|
|
-- ============ 五、WMS 上架单 STOCK_SHELF_ORDER ============
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_SHELF_ORDER" ADD COLUMN REVERSE_AUDIT_STATUS NUMBER(1) DEFAULT 0;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_SHELF_ORDER".REVERSE_AUDIT_STATUS IS '反审状态: 0-无 1-已反审(已反审tab过滤)';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_SHELF_ORDER" ADD COLUMN REVERSE_AUDIT_REMARK VARCHAR2(500);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_SHELF_ORDER".REVERSE_AUDIT_REMARK IS '反审原因';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_SHELF_ORDER" ADD COLUMN REVERSE_AUDIT_BY NUMBER(20);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_SHELF_ORDER".REVERSE_AUDIT_BY IS '反审人id';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_SHELF_ORDER" ADD COLUMN REVERSE_AUDIT_BY_NAME VARCHAR2(64);
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_SHELF_ORDER".REVERSE_AUDIT_BY_NAME IS '反审人姓名';
|
|
ALTER TABLE "NGWL_TEST_WMS"."STOCK_SHELF_ORDER" ADD COLUMN REVERSE_AUDIT_TIME DATE;
|
|
COMMENT ON COLUMN "NGWL_TEST_WMS"."STOCK_SHELF_ORDER".REVERSE_AUDIT_TIME IS '反审时间';
|
|
|
|
-- 存量数据无需回填: 历史单据 REVERSE_AUDIT_STATUS 默认 0(无), 只影响新反审操作。
|
|
|
|
-- =============================================================================
|
|
-- 回滚(发布前执行了需回退时, 按表名对应 DROP 上述列即可)
|
|
-- 发布顺序: 先执行本 DDL 再发布服务(实体带新字段而表无列, MyBatis-Plus 查询/更新会报错);
|
|
-- mhd_wms 与 mhd_oms 同时发布。
|
|
-- =============================================================================
|