From ac2545f3cd01f3061a107e4980fc6fa59eaeaa6b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 21 八月 2026 13:43:38 +0800
Subject: [PATCH] feat(mes): 新增袋码破损替换功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java
index 4a4906d..ca31481 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java
@@ -98,6 +98,24 @@
@Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code WHERE batch_id = #{batchId}")
Integer selectMaxBagNo(@Param("batchId") Long batchId);
+ default List<MesProBagCodeDO> selectListByIdsForUpdate(Collection<Long> ids) {
+ return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>()
+ .in(MesProBagCodeDO::getId, ids)
+ .orderByAsc(MesProBagCodeDO::getId)
+ .last("FOR UPDATE"));
+ }
+
+ @Update("<script>UPDATE mes_pro_bag_code SET status = #{toStatus}, cancel_time = #{cancelTime}, " +
+ "cancel_reason = #{cancelReason}, pallet_id = NULL, pallet_code = NULL, update_time = NOW() " +
+ "WHERE deleted = 0 AND id = #{id} AND status = #{fromStatus}</script>")
+ int cancelById(@Param("id") Long id, @Param("fromStatus") Integer fromStatus,
+ @Param("toStatus") Integer toStatus, @Param("cancelTime") LocalDateTime cancelTime,
+ @Param("cancelReason") String cancelReason);
+
+ @Select("SELECT COUNT(*) FROM mes_pro_bag_code WHERE batch_id = #{batchId} " +
+ "AND deleted = 0 AND status <> 30")
+ int selectEffectiveCountByBatchId(@Param("batchId") Long batchId);
+
/**
* 鎵归噺鏍囪涓哄凡瀵煎嚭鍗板埛锛堜粎鏇存柊澶勪簬鐩爣鍘熺姸鎬佺殑璁板綍锛�
*
--
Gitblit v1.9.3