From 251be431ad12399fe4ebce599c353d05dcec7888 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:28:34 +0800
Subject: [PATCH] feat(mes): 支持追溯二维码解析功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 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 6c1b01f..804e94a 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
@@ -3,9 +3,12 @@
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletUnboundPageReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO;
 import cn.iocoder.yudao.module.mes.enums.pro.MesProPalletStatusEnum;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -47,14 +50,20 @@
         return selectList(MesProPalletDO::getBatchId, batchId);
     }
 
-    /** 鏌ヨ鏈粦瀹氱敓浜ф壒娆$殑涓存椂鎵樼洏锛堟棤姝e紡鎵樼洏鐮佷笖鏈綔搴燂級锛屼緵鎵规鏂板/琛ュ綍缁戝畾鎵樼洏涓嬫媺浣跨敤 */
-    default List<MesProPalletDO> selectUnboundList() {
-        return selectList(new LambdaQueryWrapperX<MesProPalletDO>()
-                .isNull(MesProPalletDO::getBatchId)
-                .isNull(MesProPalletDO::getCode)
-                .eq(MesProPalletDO::getStatus, MesProPalletStatusEnum.IN_USE.getStatus())
-                .orderByAsc(MesProPalletDO::getId));
+    /**
+     * 鍒嗛〉鏌ヨ鏈粦瀹氱敓浜ф壒娆$殑涓存椂鎵樼洏锛堟棤姝e紡鎵樼洏鐮佷笖鏈綔搴燂級锛屼緵鎵规鏂板/琛ュ綍缁戝畾鎵樼洏涓嬫媺浣跨敤銆�
+     * <p>
+     * 鍏抽敭瀛楀悓鏃跺尮閰嶄复鏃舵墭鐩樼爜涓庡叧鑱斿搧绉嶇殑缂栫爜銆佸悕绉帮紝渚夸簬涓嬫媺杈撳叆妗嗙洿鎺ユ寜鍝佺妫�绱€��
+     */
+    default PageResult<MesProPalletDO> selectUnboundPage(MesProPalletUnboundPageReqVO reqVO) {
+        IPage<MesProPalletDO> result = selectUnboundPage(MyBatisUtils.buildPage(reqVO),
+                reqVO.getKeyword(), MesProPalletStatusEnum.IN_USE.getStatus());
+        return new PageResult<>(result.getRecords(), result.getTotal());
     }
+
+    IPage<MesProPalletDO> selectUnboundPage(IPage<MesProPalletDO> page,
+                                            @Param("keyword") String keyword,
+                                            @Param("status") Integer status);
 
     /**
      * 鏌ヨ琚嬬爜缁戝畾鎵樼洏鏃跺彲閫夌殑鐩爣鎵樼洏锛氭湭浣滃簾鐨勪复鏃舵墭鐩樹笌姝e紡鎵樼洏銆�
@@ -96,6 +105,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