From 8655501ffb8dbdaf2508e575933063e6731be714 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 28 八月 2026 17:14:40 +0800
Subject: [PATCH] refactor(mes): 重构MES生产批次和袋码管理功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java |   29 +++++++++++++++++------------
 1 files changed, 17 insertions(+), 12 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 e167d16..0675ba6 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
@@ -5,7 +5,6 @@
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
-import cn.iocoder.yudao.module.mes.enums.pro.MesProBagCodeStatusEnum;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -47,15 +46,6 @@
 
     default List<MesProBagCodeDO> selectListByBatchId(Long batchId) {
         return selectList(MesProBagCodeDO::getBatchId, batchId);
-    }
-
-    default List<MesProBagCodeDO> selectUnboundEffectiveListByBatchId(Long batchId) {
-        return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>()
-                .eq(MesProBagCodeDO::getBatchId, batchId)
-                .isNull(MesProBagCodeDO::getPalletId)
-                .ne(MesProBagCodeDO::getStatus, MesProBagCodeStatusEnum.CANCELED.getStatus())
-                .orderByAsc(MesProBagCodeDO::getBagNo)
-                .last("FOR UPDATE"));
     }
 
     default Long selectCountByBatchId(Long batchId) {
@@ -114,8 +104,14 @@
      * @param batchId 鎵规缂栧彿
      * @return 鏈�澶ц搴忓彿锛屾棤璁板綍杩斿洖 0
      */
-    @Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code WHERE batch_id = #{batchId}")
-    Integer selectMaxBagNo(@Param("batchId") Long batchId);
+    @Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code")
+    Integer selectMaxBagNo();
+
+    @Update("<script>UPDATE mes_pro_bag_code SET batch_id = #{batchId}, batch_code = #{batchCode}, update_time = NOW() " +
+            "WHERE deleted = 0 AND batch_id IS NULL AND status = #{status} AND id IN " +
+            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach></script>")
+    int bindBatchByIds(@Param("ids") Collection<Long> ids, @Param("batchId") Long batchId,
+                       @Param("batchCode") String batchCode, @Param("status") Integer status);
 
     default List<MesProBagCodeDO> selectListByIdsForUpdate(Collection<Long> ids) {
         return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>()
@@ -131,6 +127,15 @@
                    @Param("toStatus") Integer toStatus, @Param("cancelTime") LocalDateTime cancelTime,
                    @Param("cancelReason") String cancelReason);
 
+    @Update("UPDATE mes_pro_bag_code 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,
+                      @Param("outboundTime") LocalDateTime outboundTime);
+
+    @Update("UPDATE mes_pro_bag_code SET sales_id = NULL, outbound_time = NULL, update_time = NOW() "
+            + "WHERE id = #{id} AND deleted = 0")
+    void clearOutbound(@Param("id") Long id);
+
     @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