From a65cca1cfae117e0ae80e5fdfee0f7d21cc90ab0 Mon Sep 17 00:00:00 2001
From: rcx <3084692334@qq.com>
Date: Fri, 11 Sep 2026 09:41:21 +0800
Subject: [PATCH] =?UTF-8?q?fix(oms,wms):=20=E5=85=A5=E5=BA=93=E5=8F=8D?=
=?UTF-8?q?=E5=AE=A1=E4=B8=89=E9=A1=B9=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=8F=8D?=
=?UTF-8?q?=E5=AE=A1=E8=AE=B0=E5=BD=95=E4=B8=8D=E5=8F=AF=E8=A7=81=E3=80=81?=
=?UTF-8?q?=E5=8F=8D=E5=AE=A1=E5=90=8E=E9=87=8D=E6=96=B0=E4=B8=8B=E5=8F=91?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E6=94=B6=E8=B4=A7=E3=80=81=E5=BC=82=E5=B8=B8?=
=?UTF-8?q?=E5=88=97=E8=A1=A8JOIN=E8=BF=87=E6=BB=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
1. 入库异常三个生成器(收货异常/上架异常/反审记录)插入时未显式设置delFlag,MyBatis-Plus insert不含该列,列无默认值落库为NULL,被列表del_flag=1过滤导致反审记录永远不可见;现显式setDelFlag(1)
2. 反审重置业务单status=1:首轮完成上架经WMS回传把业务单status写成5(已入库),不重置则重新下发时copy给执行单→W入库单→收货单,收货单带已完成状态导致前端不给收货按钮
3. 入库异常列表LEFT JOIN stock_in_order固定b.DEL_FLAG=1,反审记录关联的入库单已软删导致匹配不上,仓库等基于b表的过滤把行全部过滤掉、列表恒为空;改为按a.TYPE切换关联状态(type=3关联已软删入库单);收货/上架已反审tab同号多张入库单JOIN出重复行,限定只关联同状态最新一张(IN_ORDER_ID取max)
---
.../service/ReservationStockInOrderDomainService.java | 4 ++++
.../repository/persistence/InOrderAbnormalImpl.java | 6 ++++++
.../mapper/inOrderAbnormal/InOrderAbnormalMapper.xml | 11 ++++++++++-
.../stockReceiptOrder/StockReceiptOrderMapper.xml | 5 +++++
.../mapper/stockShelfOrder/StockShelfOrderMapper.xml | 5 +++++
5 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java
index c42c28519..7bb51daf1 100644
--- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java
+++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java
@@ -897,6 +897,10 @@ public class ReservationStockInOrderDomainService {
.set(ReservationStockInOrder::getIssueStatus, 3)
//清空下发/执行时间(前端"是否执行"列按执行时间判断,不清会仍显示已执行,与取消下发 cancelIssueOrder 同口径)
.set(ReservationStockInOrder::getIssueTime, null)
+ //入库进度状态(1-已创建 2-已审核 3-收货中 4-上架中 5-已入库):首轮"完成上架"会经WMS回传写成5,
+ //不重置的话重新下发时copy给执行单→W入库单→收货单,收货单带着"已完成"状态导致前端不给收货按钮;
+ //重置为1(已创建),与手工新单首次下发链路一致(W入库单/收货单起点=1-待收货)
+ .set(ReservationStockInOrder::getStatus, 1)
.set(ReservationStockInOrder::getInQuantity, BigDecimal.ZERO)
.set(ReservationStockInOrder::getStorageTime, null)
.set(ReservationStockInOrder::getExecutionInOrderNumber, null)
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java
index e6d13bec3..af61aeb41 100644
--- a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java
@@ -187,6 +187,8 @@ public class InOrderAbnormalImpl extends ServiceImpl
from in_order_abnormal a
- LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number and a.DEL_FLAG = 1 and b.DEL_FLAG = 1
+
+ LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number
+ and a.DEL_FLAG = 1
+ and b.DEL_FLAG = (case when a.TYPE = 3 then 2 else 1 end)
+ and b.IN_ORDER_ID = (select max(c.IN_ORDER_ID) from stock_in_order c
+ where c.IN_ORDER_NUMBER = a.in_order_number
+ and c.DEL_FLAG = (case when a.TYPE = 3 then 2 else 1 end))
diff --git a/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml
index ef2f4463b..e63fab53f 100644
--- a/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml
+++ b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml
@@ -173,9 +173,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and a.DEL_FLAG = 2 and b.DEL_FLAG = 2
+
+ and b.IN_ORDER_ID = (select max(c.IN_ORDER_ID) from stock_in_order c
+ where c.IN_ORDER_NUMBER = a.in_order_number and c.DEL_FLAG = 2)
and a.DEL_FLAG = 1 and b.DEL_FLAG = 1
+ and b.IN_ORDER_ID = (select max(c.IN_ORDER_ID) from stock_in_order c
+ where c.IN_ORDER_NUMBER = a.in_order_number and c.DEL_FLAG = 1)
diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml
index 108b25ec3..3b468716c 100644
--- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml
+++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml
@@ -164,9 +164,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and a.DEL_FLAG = 2 and b.DEL_FLAG = 2
+
+ and b.IN_ORDER_ID = (select max(c.IN_ORDER_ID) from stock_in_order c
+ where c.IN_ORDER_NUMBER = a.in_order_number and c.DEL_FLAG = 2)
and a.DEL_FLAG = 1 and b.DEL_FLAG = 1
+ and b.IN_ORDER_ID = (select max(c.IN_ORDER_ID) from stock_in_order c
+ where c.IN_ORDER_NUMBER = a.in_order_number and c.DEL_FLAG = 1)