diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnNotifyDetailQueryMapper.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnNotifyDetailQueryMapper.java index 81dc3757..9e061402 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnNotifyDetailQueryMapper.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnNotifyDetailQueryMapper.java @@ -89,19 +89,31 @@ public interface HaiAnNotifyDetailQueryMapper { /** * @author rqrq - * @Description 查询需要解除预留的标签ID(仍读取老handling_unit) - rqrq + * @Description 查询需要解除预留的标签ID(按大site映射subsite集合约束handling_unit.site,避免跨站点误取) - rqrq + * @param site 大工厂site(用于site_sub反查允许的小site集合) - rqrq + * @param notifyNo 领料单号(对应reserve_order_ref1) - rqrq + * @param itemNo 行号字符串(对应reserve_order_ref2) - rqrq + * @param subSite 子站点(可空,传入时做额外精确收敛) - rqrq */ List haiAnGetReservedLabelsToRelease( + @Param("site") String site, @Param("notifyNo") String notifyNo, - @Param("itemNo") String itemNo + @Param("itemNo") String itemNo, + @Param("subSite") String subSite ); /** * @author rqrq - * @Description 解除handling_unit预留字段,避免强制完成后标签仍被锁定 - rqrq + * @Description 解除handling_unit预留字段,按大site映射subsite集合限制更新范围,避免跨站点误解锁 - rqrq + * @param site 大工厂site(用于site_sub反查允许的小site集合) - rqrq + * @param notifyNo 领料单号(对应reserve_order_ref1) - rqrq + * @param itemNo 行号字符串(对应reserve_order_ref2) - rqrq + * @param subSite 子站点(可空,传入时做额外精确收敛) - rqrq */ void haiAnReleaseHandlingUnitReserve( + @Param("site") String site, @Param("notifyNo") String notifyNo, - @Param("itemNo") String itemNo + @Param("itemNo") String itemNo, + @Param("subSite") String subSite ); } diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnNotifyDetailQueryServiceImpl.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnNotifyDetailQueryServiceImpl.java index a6da3e7a..c75ed935 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnNotifyDetailQueryServiceImpl.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnNotifyDetailQueryServiceImpl.java @@ -112,10 +112,12 @@ public class HaiAnNotifyDetailQueryServiceImpl implements HaiAnNotifyDetailQuery ); String itemNoStr = String.valueOf(data.getItemNo()); - // 调用标签查询收集待解除预留的标签ID,关键入参notifyNo+itemNo用于精确定位;失败会导致标签仍处于reserve_flag=Y - rqrq + // 调用标签查询收集待解除预留的标签ID:先按大site反查可用subsite集合,再以notifyNo+itemNo定位;可选subsite进一步收敛,避免跨站点误取 - rqrq List labelIds = haiAnNotifyDetailQueryMapper.haiAnGetReservedLabelsToRelease( + data.getSite(), data.getNotifyNo(), - itemNoStr + itemNoStr, + data.getSubSite() ); // 调用订单更新将transport_flag改为Y,关键入参site+notifyNo+itemNo避免误改其它行;失败将回滚本次强制完成 - rqrq @@ -135,10 +137,12 @@ public class HaiAnNotifyDetailQueryServiceImpl implements HaiAnNotifyDetailQuery ); } if (labelIds != null && !labelIds.isEmpty()) { - // 调用标签更新解除reserve字段,关键入参notifyNo+itemNo用于精准解锁;失败会阻塞后续发料 - rqrq + // 调用标签更新解除reserve字段:更新范围按大site映射出的subsite集合限制,避免误解锁其它站点标签;失败会阻塞后续发料 - rqrq haiAnNotifyDetailQueryMapper.haiAnReleaseHandlingUnitReserve( + data.getSite(), data.getNotifyNo(), - itemNoStr + itemNoStr, + data.getSubSite() ); } diff --git a/src/main/resources/mapper/autoWareHourceHaian/HaiAnNotifyDetailQueryMapper.xml b/src/main/resources/mapper/autoWareHourceHaian/HaiAnNotifyDetailQueryMapper.xml index 13bdaa6c..55babc04 100644 --- a/src/main/resources/mapper/autoWareHourceHaian/HaiAnNotifyDetailQueryMapper.xml +++ b/src/main/resources/mapper/autoWareHourceHaian/HaiAnNotifyDetailQueryMapper.xml @@ -143,16 +143,24 @@ AND remark LIKE '%' + #{soorderNo} + '%' - + - + UPDATE handling_unit SET reserve_flag = 'N', @@ -162,6 +170,14 @@ WHERE reserve_flag = 'Y' AND reserve_order_ref1 = #{notifyNo} AND reserve_order_ref2 = CAST(#{itemNo} AS VARCHAR) + AND UPPER(site) IN ( + SELECT UPPER(subsiteid) + FROM site_sub WITH (NOLOCK) + WHERE UPPER(siteid) = UPPER(#{site}) + ) + + AND UPPER(site) = UPPER(#{subSite}) +