From f7273277023f3497ac071bf98f556a569cb4dd25 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 17 九月 2026 16:24:10 +0800
Subject: [PATCH] feat(mes): 重构袋码生成与物料分类功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 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 6bbc566..8853cca 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
@@ -5,6 +5,7 @@
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO;
+import cn.iocoder.yudao.module.mes.enums.pro.MesProPalletStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -27,8 +28,9 @@
         return selectOne(MesProPalletDO::getTempCode, tempCode);
     }
 
-    /** 鐢熸垚涓存椂鎵樼洏鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0 */
-    @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet WHERE deleted = 0")
+    /** 鐢熸垚涓存椂鎵樼洏鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0銆�
+     *  涓嶈兘杩囨护 deleted锛屽敮涓�绱㈠紩 uk_temp_code 瀵归�昏緫鍒犻櫎琛屼粛鐢熸晥锛屽拷鐣ヨ蒋鍒犱細瀵艰嚧搴忓彿鍥為��銆佺爜鍊奸噸澶� */
+    @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet")
     Integer selectMaxTempCodeSeq();
 
     @Select("SELECT * FROM mes_pro_pallet WHERE id = #{id} AND deleted = 0 FOR UPDATE")
@@ -36,6 +38,15 @@
 
     default List<MesProPalletDO> selectListByBatchId(Long batchId) {
         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));
     }
 
     default PageResult<MesProPalletDO> selectPage(MesProPalletPageReqVO reqVO) {
@@ -63,6 +74,11 @@
     void markOutbound(@Param("id") Long id, @Param("salesId") Long salesId,
                       @Param("outboundTime") java.time.LocalDateTime outboundTime);
 
+    /** 鏁存墭鎵爜鍏ュ簱鍥炲啓锛氬箓绛夛紙宸叉湁鍏ュ簱鏍囪鐨勪笉鍐嶆洿鏂帮級锛岀敤浜庨槻閲嶅鍏ュ簱 */
+    @org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet SET inbound_event_id = #{eventId}, inbound_time = NOW(), update_time = NOW() "
+            + "WHERE id = #{id} AND deleted = 0 AND inbound_event_id IS NULL")
+    int markInbound(@Param("id") Long id, @Param("eventId") Long eventId);
+
     @org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet SET sales_id = NULL, outbound_time = NULL, update_time = NOW() "
             + "WHERE id = #{id} AND deleted = 0")
     void clearOutbound(@Param("id") Long id);

--
Gitblit v1.9.3