From 02a1ae81eba7b48223052fb833859f0a65dd7d21 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 19 十月 2026 17:31:08 +0800
Subject: [PATCH] feat(mes): 实现袋码大批量生成异步任务功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
index 045b669..280a9cc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
@@ -56,6 +56,22 @@
                 .orderByAsc(MesProPalletDO::getId));
     }
 
+    /**
+     * 鏌ヨ琚嬬爜缁戝畾鎵樼洏鏃跺彲閫夌殑鐩爣鎵樼洏锛氭湭浣滃簾鐨勪复鏃舵墭鐩樹笌姝e紡鎵樼洏銆�
+     * <p>
+     * 浼犲叆鍝佺鏃朵粎杩斿洖璇ュ搧绉嶇殑鎵樼洏锛屼互鍙婂皻鏈‘瀹氬搧绉嶇殑棰勭敓鎴愪复鏃舵墭鐩橈紙item_id 涓虹┖锛岀粦瀹氳鐮佹椂鍥炲~鍝佺锛夈��
+     *
+     * @param itemId 琚嬬爜鍝佺缂栧彿锛屽彲涓虹┖
+     * @return 鎵樼洏鍒楄〃
+     */
+    default List<MesProPalletDO> selectBindableList(Long itemId) {
+        return selectList(new LambdaQueryWrapperX<MesProPalletDO>()
+                .ne(MesProPalletDO::getStatus, MesProPalletStatusEnum.CANCELED.getStatus())
+                .and(itemId != null, q -> q.eq(MesProPalletDO::getItemId, itemId)
+                        .or().isNull(MesProPalletDO::getItemId))
+                .orderByDesc(MesProPalletDO::getId));
+    }
+
     default PageResult<MesProPalletDO> selectPage(MesProPalletPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<MesProPalletDO>()
                 .likeIfPresent(MesProPalletDO::getBusinessCode, reqVO.getBusinessCode())
@@ -80,6 +96,19 @@
     @Select("SELECT IFNULL(MAX(pallet_no), 0) FROM mes_pro_pallet WHERE batch_id = #{batchId}")
     Integer selectMaxPalletNo(@Param("batchId") Long batchId);
 
+    /**
+     * 鐗╃悊鍒犻櫎鏌愪釜鐢熸垚缁勪笅灏氭湭缁戝畾鎵规鐨勪复鏃舵墭鐩橈紙浠呯敤浜庣敓鎴愬け璐�/鍙栨秷鍚庣殑鍗婃垚鍝佹竻鐞嗭級
+     * <p>
+     * 宸茬粦瀹氭壒娆$殑鎵樼洏鍙兘宸茶鍚庣画涓氬姟浣跨敤锛屽嵆浣垮甫鏈夌敓鎴愮粍鏍囪涔熶笉鑳藉垹銆�
+     *
+     * @param generateUuid 鐢熸垚缁� UUID
+     * @param limit        鍗曟鏈�澶氬垹闄よ鏁�
+     * @return 瀹為檯鍒犻櫎琛屾暟
+     */
+    @org.apache.ibatis.annotations.Delete("DELETE FROM mes_pro_pallet WHERE generate_uuid = #{generateUuid} "
+            + "AND batch_id IS NULL AND code IS NULL LIMIT #{limit}")
+    int deletePhysicallyByGenerateUuidChunk(@Param("generateUuid") String generateUuid, @Param("limit") int limit);
+
     @org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet SET sales_id = #{salesId}, outbound_time = #{outboundTime}, update_time = NOW() "
             + "WHERE id = #{id} AND deleted = 0")
     void markOutbound(@Param("id") Long id, @Param("salesId") Long salesId,

--
Gitblit v1.9.3