From 14c80fbd16a51a355138345ecf69df9ca37746bf Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期五, 06 十一月 2026 09:18:32 +0800
Subject: [PATCH] 完善售后退货联动和订单作废保护
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
index beec292..0ed408e 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
@@ -35,6 +35,7 @@
import cn.iocoder.yudao.module.mes.api.mps.MesProMpsApi;
import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsCreateReqDTO;
import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsRespDTO;
+import cn.iocoder.yudao.module.mes.api.salesnotice.MesWmSalesNoticeApi;
import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import com.mzt.logapi.starter.annotation.LogRecord;
@@ -109,6 +110,8 @@
private MdmItemApi mdmItemApi;
@Resource
private MesProMpsApi mpsApi;
+ @Resource
+ private MesWmSalesNoticeApi salesNoticeApi;
@Resource
private StorageAttachmentApi storageAttachmentApi;
@@ -594,7 +597,8 @@
@Transactional(rollbackFor = Exception.class)
public void cancelSaleOrder(Long id) {
// 1.1 鏍¢獙瀛樺湪
- ErpSaleOrderDO saleOrder = validateSaleOrderExists(id);
+ ErpSaleOrderDO saleOrder = saleOrderMapper.selectByIdForUpdate(id);
+ if (saleOrder == null) throw exception(SALE_ORDER_NOT_EXISTS);
// 1.2 鏍¢獙鐘舵�侊細鍙湁宸插鏍哥殑璁㈠崟鎵嶈兘浣滃簾
if (!ErpAuditStatus.APPROVE.getStatus().equals(saleOrder.getStatus())) {
throw exception(SALE_ORDER_CANCEL_FAIL_NOT_APPROVE, saleOrder.getNo());
@@ -615,6 +619,9 @@
throw exception(SALE_ORDER_CANCEL_FAIL_ACTIVE_MPS);
}
}
+ Map<Long, Boolean> noticeStatus = salesNoticeApi.checkSalesNoticeBySaleOrderIds(List.of(id));
+ if (noticeStatus == null || noticeStatus.get(id) == null) throw exception(SALE_ORDER_CANCEL_FAIL_NOTICE_UNKNOWN);
+ if (Boolean.TRUE.equals(noticeStatus.get(id))) throw exception(SALE_ORDER_CANCEL_FAIL_NOTICE_EXISTS);
// 2. 鏇存柊鐘舵�佷负宸蹭綔搴�
int updateCount = saleOrderMapper.updateByIdAndStatus(id, saleOrder.getStatus(),
--
Gitblit v1.9.3