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/controller/admin/returnobj/AfterSaleReturnController.java | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
index 4f593cf..fdaf58e 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
@@ -7,9 +7,12 @@
import cn.iocoder.yudao.module.aftersales.controller.admin.returnobj.vo.AfterSaleReturnPageReqVO;
import cn.iocoder.yudao.module.aftersales.controller.admin.returnobj.vo.AfterSaleReturnRespVO;
import cn.iocoder.yudao.module.aftersales.controller.admin.returnobj.vo.AfterSaleReturnSaveReqVO;
+import cn.iocoder.yudao.module.aftersales.controller.admin.returnobj.vo.AfterSaleRefundConfirmReqVO;
import cn.iocoder.yudao.module.aftersales.dal.dataobject.returnobj.AfterSaleReturnDO;
import cn.iocoder.yudao.module.aftersales.dal.dataobject.returnobj.AfterSaleReturnItemDO;
+import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO;
import cn.iocoder.yudao.module.aftersales.service.returnobj.AfterSaleReturnService;
+import cn.iocoder.yudao.module.aftersales.service.ticket.AfterSaleTicketService;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
import io.swagger.v3.oas.annotations.Operation;
@@ -24,6 +27,7 @@
import java.util.*;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -35,6 +39,9 @@
@Resource
private AfterSaleReturnService returnService;
+
+ @Resource
+ private AfterSaleTicketService ticketService;
@Resource
private CrmCustomerApi customerApi;
@@ -51,6 +58,22 @@
@PreAuthorize("@ss.hasPermission('aftersales:return:approve')")
public CommonResult<Boolean> approveReturn(@RequestParam("id") Long id) {
returnService.approveReturn(id);
+ return success(true);
+ }
+
+ @PutMapping("/complete-refund")
+ @Operation(summary = "纭澶栭儴閫�娆�/鎹㈣揣瀹屾垚")
+ @PreAuthorize("@ss.hasPermission('aftersales:return:refund')")
+ public CommonResult<Boolean> completeRefund(@Valid @RequestBody AfterSaleRefundConfirmReqVO reqVO) {
+ returnService.confirmRefundCompleted(reqVO.getId(), reqVO.getActualRefundPrice(), reqVO.getVoucherNo());
+ return success(true);
+ }
+
+ @PutMapping("/cancel")
+ @Operation(summary = "鍙栨秷灏氭湭鍏ュ簱鎴栭��娆剧殑閫�璐х敵璇�")
+ @PreAuthorize("@ss.hasPermission('aftersales:return:cancel')")
+ public CommonResult<Boolean> cancelReturn(@RequestParam("id") Long id) {
+ returnService.cancelReturn(id);
return success(true);
}
@@ -85,10 +108,15 @@
// 鎵归噺鍔犺浇瀹㈡埛鍚嶇О
Set<Long> customerIds = convertSet(returnList, AfterSaleReturnDO::getCustomerId);
Map<Long, CrmCustomerRespDTO> customerMap = customerApi.getCustomerMap(customerIds);
+ // 鎵归噺鍔犺浇鍏宠仈宸ュ崟鐨勯攢鍞鍗曞彿锛堝弽鏄捐鍗曚俊鎭級
+ Set<Long> ticketIds = convertSet(returnList, AfterSaleReturnDO::getTicketId);
+ Map<Long, AfterSaleTicketDO> ticketMap = convertMap(ticketService.getTicketList(ticketIds), AfterSaleTicketDO::getId);
// 鎷艰鍚嶇О瀛楁
return BeanUtils.toBean(returnList, AfterSaleReturnRespVO.class, vo -> {
CrmCustomerRespDTO customer = customerMap.get(vo.getCustomerId());
if (customer != null) vo.setCustomerName(customer.getName());
+ AfterSaleTicketDO ticket = ticketMap.get(vo.getTicketId());
+ if (ticket != null) vo.setSaleOrderNo(ticket.getSaleOrderNo());
});
}
--
Gitblit v1.9.3