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