fix(oms,wms): 入库反审三项修复:反审记录不可见、反审后重新下发无法收货、异常列表JOIN过滤
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)
This commit is contained in:
+4
@@ -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)
|
||||
|
||||
+6
@@ -187,6 +187,8 @@ public class InOrderAbnormalImpl extends ServiceImpl<InOrderAbnormalMapper, InOr
|
||||
inOrderAbnormal.setAbnormalNumber(OrderSequence.getOrderCode("FSYC"));
|
||||
inOrderAbnormal.setType(3);
|
||||
inOrderAbnormal.setAbnormalType(6);
|
||||
//del_flag 不显式置1时 insert 不含该列,列无默认值则落库为NULL,会被列表的 del_flag=1 过滤掉导致记录永远不可见
|
||||
inOrderAbnormal.setDelFlag(1);
|
||||
if (inOrderAbnormal.getCreateTime() == null) {
|
||||
inOrderAbnormal.setCreateTime(new Date());
|
||||
}
|
||||
@@ -242,6 +244,8 @@ public class InOrderAbnormalImpl extends ServiceImpl<InOrderAbnormalMapper, InOr
|
||||
inOrderAbnormal.setCreateByName(userRealName);
|
||||
inOrderAbnormal.setCreateTime(new Date());
|
||||
inOrderAbnormal.setType(2);
|
||||
//del_flag 不显式置1时 insert 不含该列,列无默认值则落库为NULL,会被列表的 del_flag=1 过滤掉导致记录永远不可见
|
||||
inOrderAbnormal.setDelFlag(1);
|
||||
inOrderAbnormalList.add(inOrderAbnormal);
|
||||
}
|
||||
}
|
||||
@@ -287,6 +291,8 @@ public class InOrderAbnormalImpl extends ServiceImpl<InOrderAbnormalMapper, InOr
|
||||
inOrderAbnormal.setCreateByName(userRealName);
|
||||
inOrderAbnormal.setCreateTime(new Date());
|
||||
inOrderAbnormal.setType(1);
|
||||
//del_flag 不显式置1时 insert 不含该列,列无默认值则落库为NULL,会被列表的 del_flag=1 过滤掉导致记录永远不可见
|
||||
inOrderAbnormal.setDelFlag(1);
|
||||
inOrderAbnormalList.add(inOrderAbnormal);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<include refid="selectInOrderAbnormalPo"/>
|
||||
<include refid="com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper.joinStockInOrderPo"/>
|
||||
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
|
||||
<!-- 反审记录(a.TYPE=3)关联的W入库单已被反审软删(del_flag=2),仍按 b.DEL_FLAG=1 关联会匹配不上:
|
||||
LEFT JOIN 下 b 全为 NULL,仓库/货主等基于 b 的过滤条件(warehouseId等)随之恒为 false,反审记录列表恒为空;
|
||||
故按 a.TYPE 切换关联状态:type=3 关联已软删的入库单,其余(收货/上架异常)关联正常入库单。
|
||||
b.IN_ORDER_ID 取同状态最新一张:历史重复下发会产生同号多张入库单,不限定会JOIN出重复行 -->
|
||||
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))
|
||||
<where>
|
||||
<include refid="selectInOrderAbnormalPo1"/>
|
||||
<include refid="com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper.joinStockInOrderPoWhere"/>
|
||||
|
||||
@@ -173,9 +173,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<choose>
|
||||
<when test="reverseAuditStatus != null">
|
||||
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)
|
||||
</when>
|
||||
<otherwise>
|
||||
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)
|
||||
</otherwise>
|
||||
</choose>
|
||||
<where>
|
||||
|
||||
@@ -164,9 +164,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<choose>
|
||||
<when test="reverseAuditStatus != null">
|
||||
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)
|
||||
</when>
|
||||
<otherwise>
|
||||
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)
|
||||
</otherwise>
|
||||
</choose>
|
||||
<where>
|
||||
|
||||
Reference in New Issue
Block a user