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