From 035e28134ff1ace5d7117007dd72cd18c68f14ff Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 17:55:44 +0800
Subject: [PATCH] refactor(crm): 重构回款审批流程为状态更新模式
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java | 28 +++++++++++++++++++++-------
1 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
index f12da1b..7f2debd 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -25,6 +25,7 @@
import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
import cn.iocoder.yudao.module.erp.enums.ErpPurchaseRequestStatusEnum;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import jakarta.annotation.Resource;
@@ -81,6 +82,8 @@
private AdminUserApi adminUserApi;
@Resource
private DeptApi deptApi;
+ @Resource
+ private StorageAttachmentApi storageAttachmentApi;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -111,7 +114,11 @@
calculateTotalPrice(purchaseRequest, requestItems);
purchaseRequestMapper.insert(purchaseRequest);
- // 6. 鎻掑叆鐢宠鏄庣粏
+ // 6. 缁戝畾闄勪欢
+ storageAttachmentApi.bindAttachments("file", "erp_purchase_request",
+ purchaseRequest.getId(), createReqVO.getBlobIds());
+
+ // 7. 鎻掑叆鐢宠鏄庣粏
requestItems.forEach(o -> o.setRequestId(purchaseRequest.getId()));
purchaseRequestItemMapper.insertBatch(requestItems);
@@ -122,7 +129,7 @@
@Transactional(rollbackFor = Exception.class)
public void updatePurchaseRequest(ErpPurchaseRequestSaveReqVO updateReqVO) {
// 1. 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
- ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExistsAndDraft(updateReqVO.getId());
+ ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestCanModify(updateReqVO.getId());
// 2. 鏍¢獙渚涘簲鍟嗭紙濡傛灉鎸囧畾锛�
if (updateReqVO.getSupplierId() != null) {
supplierService.validateSupplier(updateReqVO.getSupplierId());
@@ -137,6 +144,9 @@
// 5. 鏇存柊鐢宠鏄庣粏
updatePurchaseRequestItemList(updateReqVO.getId(), requestItems);
+
+ // 6. 鏇存柊闄勪欢
+ storageAttachmentApi.updateAttachments("file", "erp_purchase_request", updateReqVO.getId(), updateReqVO.getBlobIds());
}
private void calculateTotalPrice(ErpPurchaseRequestDO purchaseRequest, List<ErpPurchaseRequestItemDO> requestItems) {
@@ -188,13 +198,15 @@
return;
}
purchaseRequests.forEach(purchaseRequest -> {
- // 鍙湁鑽夌鐘舵�佹墠鑳藉垹闄�
- if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(purchaseRequest.getStatus())) {
+ Integer status = purchaseRequest.getStatus();
+ if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(status)
+ && !ErpPurchaseRequestStatusEnum.REJECT.getStatus().equals(status)) {
throw exception(PURCHASE_REQUEST_DELETE_FAIL_NOT_DRAFT, purchaseRequest.getNo());
}
});
purchaseRequests.forEach(purchaseRequest -> {
+ storageAttachmentApi.deleteAttachmentsByRecord("erp_purchase_request", purchaseRequest.getId());
purchaseRequestMapper.deleteById(purchaseRequest.getId());
purchaseRequestItemMapper.deleteByRequestId(purchaseRequest.getId());
});
@@ -235,7 +247,7 @@
@Transactional(rollbackFor = Exception.class)
public void submitPurchaseRequest(Long id, String processDefinitionKey, Long userId) {
// 1. 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
- ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExistsAndDraft(id);
+ ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestCanModify(id);
// 2. 鏍¢獙鏄惁鏈夋槑缁�
List<ErpPurchaseRequestItemDO> items = purchaseRequestItemMapper.selectListByRequestId(id);
@@ -444,9 +456,11 @@
return purchaseRequest;
}
- private ErpPurchaseRequestDO validatePurchaseRequestExistsAndDraft(Long id) {
+ private ErpPurchaseRequestDO validatePurchaseRequestCanModify(Long id) {
ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExists(id);
- if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(purchaseRequest.getStatus())) {
+ Integer status = purchaseRequest.getStatus();
+ if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(status)
+ && !ErpPurchaseRequestStatusEnum.REJECT.getStatus().equals(status)) {
throw exception(PURCHASE_REQUEST_UPDATE_FAIL_NOT_DRAFT, purchaseRequest.getNo());
}
return purchaseRequest;
--
Gitblit v1.9.3