From 1ba0dbfde5634c8bf2ec20891d6b226b996f6b59 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 02 九月 2026 14:24:38 +0800
Subject: [PATCH] refactor(mes): 优化MES生产扫码入库功能支持多类型扫码

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
index ea88533..f4ecec0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
@@ -10,12 +10,14 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPurchaseSourceRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchSalesTargetRespVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.sn.MesWmSnDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper;
 import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
 import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
 import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
 import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
 import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
@@ -415,4 +417,36 @@
         return batchMapper.selectByCode(snDO.getBatchCode());
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public MesWmBatchDO getOrCreateByProBatch(MesProBatchDO proBatch) {
+        if (proBatch == null || StrUtil.isBlank(proBatch.getCode())) {
+            return null;
+        }
+        // 1. 浼樺厛鎸夌敓浜ф壒娆� ID 澶嶇敤锛屽吋瀹瑰巻鍙叉暟鎹啀鎸夋壒娆″彿鍖归厤
+        MesWmBatchDO existing = batchMapper.selectOne(MesWmBatchDO::getProBatchId, proBatch.getId());
+        if (existing == null) {
+            existing = batchMapper.selectByCode(proBatch.getCode());
+        }
+        if (existing != null) {
+            if (existing.getProBatchId() == null && proBatch.getId() != null) {
+                existing.setProBatchId(proBatch.getId());
+                batchMapper.updateById(existing);
+            }
+            return existing;
+        }
+        // 2. 鏂板缓浠撳簱鎵规锛氫互鐢熶骇鎵规鍙蜂綔涓轰粨搴撴壒娆″彿锛岃川閲忕姸鎬佺疆涓哄緟妫�楠�
+        MesWmBatchDO batch = MesWmBatchDO.builder()
+                .proBatchId(proBatch.getId())
+                .code(proBatch.getCode())
+                .itemId(proBatch.getItemId())
+                .produceDate(proBatch.getProduceDate())
+                .receiptDate(java.time.LocalDateTime.now())
+                .qualityStatus(MesWmQualityStatusEnum.PENDING.getStatus())
+                .remark("鐢熶骇鎵规鑷姩妗ユ帴")
+                .build();
+        batchMapper.insert(batch);
+        return batch;
+    }
+
 }

--
Gitblit v1.9.3