From 16b8e4293a4eba8449018c2b833bab0524846e88 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 24 八月 2026 16:02:42 +0800
Subject: [PATCH] feat(mes): 新增包装袋型管理和托盘自动生成功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java     |   10 +++++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java      |    4 ++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java                   |   10 +++++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/bagcode/MesProBagCodeDO.java |   62 ++-----------------------------
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java  |    9 ++++
 5 files changed, 37 insertions(+), 58 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/bagcode/MesProBagCodeDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/bagcode/MesProBagCodeDO.java
index be7f025..d010580 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/bagcode/MesProBagCodeDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/bagcode/MesProBagCodeDO.java
@@ -10,16 +10,6 @@
 
 import java.time.LocalDateTime;
 
-import cn.iocoder.yudao.module.mes.enums.DictTypeConstants;
-
-/**
- * MES 琚嬬爜璧嬬爜锛堜竴琚嬩竴鐮侊級DO
- * <p>
- * 鏍规嵁鎵规淇℃伅鑷姩鐢熸垚鍞竴浜岀淮鐮佹暟鎹寘锛氱爜鍊� = 鎵规鍙� + - + 琚嬪簭鍙凤紝鍏ㄥ眬鍞竴锛屾弧瓒冲敮涓�鎬с�佸彲璇嗗埆鎬с�佸彲杩芥函鎬ц姹傘��
- * 鏀寔鎵归噺瀵煎嚭浜や粯鍗板埛锛屽苟涓庢墭鐩樼爜鍏宠仈銆�
- *
- * @author 瓒呯骇绠$悊鍛�
- */
 @TableName("mes_pro_bag_code")
 @KeySequence("mes_pro_bag_code_seq")
 @Data
@@ -29,66 +19,22 @@
 @NoArgsConstructor
 @AllArgsConstructor
 public class MesProBagCodeDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
     @TableId
     private Long id;
-    /**
-     * 鐢熸垚缁� UUID锛堟爣璁板悓涓�娆$敓鎴愮殑鏁版嵁鍖咃級
-     */
     private String uuid;
-    /**
-     * 琚嬬爜锛堜簩缁寸爜鍐呭锛氭壒娆″彿-琚嬪簭鍙凤紝鍏ㄥ眬鍞竴锛�
-     */
     private String code;
-    /**
-     * 鎵规鍐呰搴忓彿
-     */
     private Integer bagNo;
-    /**
-     * 鐢熶骇鎵规缂栧彿
-     * <p>
-     * 鍏宠仈 {@link MesProBatchDO#getId()}
-     */
     private Long batchId;
-    /**
-     * 鎵规鍙凤紙鍐椾綑锛屼究浜庡睍绀猴級
-     */
     private String batchCode;
-    /**
-     * 缁戝畾鎵樼洏缂栧彿
-     * <p>
-     * 鍏宠仈 {@link MesProPalletDO#getId()}
-     */
     private Long palletId;
-    /**
-     * 鎵樼洏鐮侊紙鍐椾綑锛屼究浜庡睍绀猴級
-     */
     private String palletCode;
-    /**
-     * 鐘舵��
-     * <p>
-     * 瀛楀吀 {@link DictTypeConstants#MES_PRO_BAG_CODE_STATUS}
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.mes.enums.pro.MesProBagCodeStatusEnum}
-     */
     private Integer status;
-    /**
-     * 瀵煎嚭锛堜氦浠樺嵃鍒凤級鏃堕棿
-     */
     private LocalDateTime printTime;
-    /**
-     * 浣滃簾鏃堕棿
-     */
     private LocalDateTime cancelTime;
-    /**
-     * 浣滃簾鍘熷洜
-     */
     private String cancelReason;
-    /**
-     * 澶囨敞
-     */
+    private LocalDateTime inboundTime;
+    private Long inboundEventId;
+    private String inboundDeviceCode;
+    private String inboundLineCode;
     private String remark;
-
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java
index 43afa78..9d4990b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java
@@ -84,6 +84,16 @@
      * 宸茬敓鎴愭墭鐩樼爜鏁伴噺
      */
     private Integer palletQuantity;
+    /** 鍏ュ簱鏃堕棿 */
+    private LocalDateTime inboundTime;
+    /** 绱鍏ュ簱琚嬫暟 */
+    private Integer inboundBagQuantity;
+    /** 鏈�杩戝叆搴撲簨浠剁紪鍙� */
+    private Long inboundEventId;
+    /** 鍏ュ簱璁惧缂栫爜 */
+    private String inboundDeviceCode;
+    /** 鍏ュ簱浜х嚎缂栫爜 */
+    private String inboundLineCode;
     /**
      * 鎵规鐘舵��
      * <p>
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 2e12a2b..e167d16 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
@@ -28,6 +28,15 @@
         return selectOne(MesProBagCodeDO::getCode, code);
     }
 
+    default MesProBagCodeDO selectByCodeForUpdate(String code) {
+        return selectOne(new LambdaQueryWrapperX<MesProBagCodeDO>()
+                .eq(MesProBagCodeDO::getCode, code).last("FOR UPDATE"));
+    }
+
+    @org.apache.ibatis.annotations.Update("UPDATE mes_pro_bag_code SET inbound_time = NOW(), inbound_event_id = #{eventId}, inbound_device_code = #{deviceCode}, inbound_line_code = #{lineCode}, update_time = NOW() WHERE id = #{id} AND deleted = 0 AND inbound_event_id IS NULL")
+    int markInbound(@org.apache.ibatis.annotations.Param("id") Long id, @org.apache.ibatis.annotations.Param("eventId") Long eventId,
+                    @org.apache.ibatis.annotations.Param("deviceCode") String deviceCode, @org.apache.ibatis.annotations.Param("lineCode") String lineCode);
+
     default List<MesProBagCodeDO> selectListByUuid(String uuid) {
         return selectList(MesProBagCodeDO::getUuid, uuid);
     }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
index f35a1e4..02b3f45 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
@@ -27,6 +27,10 @@
     @Select("SELECT * FROM mes_pro_batch WHERE id = #{id} AND deleted = 0 FOR UPDATE")
     MesProBatchDO selectByIdForUpdate(@org.apache.ibatis.annotations.Param("id") Long id);
 
+    @org.apache.ibatis.annotations.Update("UPDATE mes_pro_batch SET inbound_time = NOW(), inbound_event_id = #{eventId}, inbound_device_code = #{deviceCode}, inbound_line_code = #{lineCode}, inbound_bag_quantity = COALESCE(inbound_bag_quantity, 0) + 1, update_time = NOW() WHERE id = #{id} AND deleted = 0")
+    int markInbound(@org.apache.ibatis.annotations.Param("id") Long id, @org.apache.ibatis.annotations.Param("eventId") Long eventId,
+                    @org.apache.ibatis.annotations.Param("deviceCode") String deviceCode, @org.apache.ibatis.annotations.Param("lineCode") String lineCode);
+
     default PageResult<MesProBatchDO> selectPage(MesProBatchPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<MesProBatchDO>()
                 .likeIfPresent(MesProBatchDO::getCode, reqVO.getCode())
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
index e46269b..0e8a332 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -9,6 +9,16 @@
  */
 public interface ErrorCodeConstants {
 
+    // ========== MES 鐢熶骇绠$悊-鎵爜鍏ュ簱锛�1-040-755-000锛� ==========
+    ErrorCode PRO_SCAN_EVENT_BAG_NOT_EXISTS = new ErrorCode(1_040_755_000, "琚嬬爜涓嶅瓨鍦�");
+    ErrorCode PRO_SCAN_EVENT_ALREADY_INBOUND = new ErrorCode(1_040_755_001, "琚嬬爜宸插叆搴�");
+    ErrorCode PRO_SCAN_EVENT_BATCH_NOT_EXISTS = new ErrorCode(1_040_755_002, "鐢熶骇鎵规涓嶅瓨鍦�");
+    ErrorCode PRO_SCAN_EVENT_WIP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_755_003, "WIP铏氭嫙浠撲笉瀛樺湪");
+    ErrorCode PRO_SCAN_EVENT_LOCATION_INVALID = new ErrorCode(1_040_755_004, "鎵爜鍏ュ簱搴撲綅鏃犳晥");
+    ErrorCode PRO_SCAN_EVENT_TRANSACTION_FAILED = new ErrorCode(1_040_755_005, "搴撳瓨浜嬪姟澶勭悊澶辫触");
+    ErrorCode PRO_SCAN_EVENT_ID_CONFLICT = new ErrorCode(1_040_755_006, "浜嬩欢鍙峰凡瀛樺湪浣嗗唴瀹逛笉涓�鑷�");
+    ErrorCode PRO_SCAN_EVENT_FAILED = new ErrorCode(1_040_755_007, "鎵爜鍏ュ簱澶辫触");
+
     // ========== MES 鍩虹鏁版嵁-鐗╂枡鍒嗙被锛�1-040-100-000锛� ==========
     ErrorCode MD_ITEM_TYPE_NOT_EXISTS = new ErrorCode(1_040_100_000, "鐗╂枡鍒嗙被涓嶅瓨鍦�");
     ErrorCode MD_ITEM_TYPE_EXITS_CHILDREN = new ErrorCode(1_040_100_001, "瀛樺湪瀛愬垎绫伙紝鏃犳硶鍒犻櫎");

--
Gitblit v1.9.3