From daf9f8dbb7ba36eb283221d2c6022039aefaf97d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 00:40:38 +0800
Subject: [PATCH] feat(aftersales): 售后退货单同步MES批次信息并优化工单处理流程

---
 yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/service/returnobj/AfterSaleReturnServiceImpl.java |   30 +++++++++++++++++++++++++++++-
 1 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/service/returnobj/AfterSaleReturnServiceImpl.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/service/returnobj/AfterSaleReturnServiceImpl.java
index 6db6bd9..48b5f80 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/service/returnobj/AfterSaleReturnServiceImpl.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/service/returnobj/AfterSaleReturnServiceImpl.java
@@ -22,6 +22,7 @@
 import cn.iocoder.yudao.module.aftersales.service.permission.bo.AfterSalePermissionCreateReqBO;
 import cn.iocoder.yudao.module.mes.api.returnsales.MesWmReturnSalesApi;
 import cn.iocoder.yudao.module.mes.api.returnsales.dto.MesWmReturnSalesCreateReqDTO;
+import cn.iocoder.yudao.module.mes.api.returnsales.dto.MesWmReturnSalesLineRespDTO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -215,7 +216,10 @@
         }).toList());
         Long mesReturnId = mesWmReturnSalesApi.createReturnSales(mesReqDTO);
 
-        // 4. 鏇存柊閫�璐х敵璇风姸鎬�
+        // 4. 鍥炲啓 MES 瑙f瀽鍚庣殑鎵规锛堝師鍗曟湭璁板綍鎵规鐨勫晢鍝佺敱 MES 鑷姩鐢熸垚閫�璐ф壒娆★級
+        syncReturnItemBatch(id, mesReturnId);
+
+        // 5. 鏇存柊閫�璐х敵璇风姸鎬�
         returnMapper.updateById(new AfterSaleReturnDO().setId(id)
                 .setStatus(AfterSaleReturnStatusEnum.APPROVED.getStatus())
                 .setMesReturnId(mesReturnId)
@@ -223,6 +227,30 @@
                 .setAuditTime(LocalDateTime.now()));
     }
 
+    /**
+     * 灏� MES 閫�璐у崟琛屼笂鐨勬壒娆″洖鍐欏埌鍞悗鏄庣粏锛屼究浜庨〉闈㈠睍绀轰笌杩芥函
+     */
+    private void syncReturnItemBatch(Long returnId, Long mesReturnId) {
+        List<MesWmReturnSalesLineRespDTO> mesLines = mesWmReturnSalesApi.getReturnSalesLineList(mesReturnId);
+        if (CollUtil.isEmpty(mesLines)) {
+            return;
+        }
+        Map<Long, MesWmReturnSalesLineRespDTO> lineMap = mesLines.stream()
+                .filter(line -> line.getBatchId() != null)
+                .collect(Collectors.toMap(MesWmReturnSalesLineRespDTO::getItemId, line -> line, (a, b) -> a));
+        if (lineMap.isEmpty()) {
+            return;
+        }
+        for (AfterSaleReturnItemDO item : returnItemMapper.selectListByReturnId(returnId)) {
+            MesWmReturnSalesLineRespDTO line = lineMap.get(item.getItemId());
+            if (line == null || item.getBatchId() != null) {
+                continue;
+            }
+            returnItemMapper.updateById(new AfterSaleReturnItemDO().setId(item.getId())
+                    .setBatchId(line.getBatchId()).setBatchCode(line.getBatchCode()));
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void cancelReturn(Long id) {

--
Gitblit v1.9.3