From f71dabccb0e4c2fa410683e6058eb906a7dbf094 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期三, 26 八月 2026 18:12:07 +0800
Subject: [PATCH] feat 采购修正
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java | 42 ++++++++++++++++++++++++++++--------------
1 files changed, 28 insertions(+), 14 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..6c3c7a7 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);
@@ -314,13 +326,8 @@
if (ErpPurchaseRequestStatusEnum.APPROVE.getStatus().equals(newStatus)
&& purchaseRequest.getSupplierId() != null
&& purchaseRequest.getOrderId() == null) {
- try {
- Long orderId = doGeneratePurchaseOrder(purchaseRequest);
- log.info("[updatePurchaseRequestAuditStatus] 閲囪喘鐢宠({}) 鑷姩鐢熸垚閲囪喘璁㈠崟({})", id, orderId);
- } catch (Exception e) {
- log.error("[updatePurchaseRequestAuditStatus] 閲囪喘鐢宠({}) 鑷姩鐢熸垚閲囪喘璁㈠崟澶辫触", id, e);
- // 涓嶆姏鍑哄紓甯革紝閬垮厤褰卞搷鐘舵�佹洿鏂�
- }
+ Long orderId = doGeneratePurchaseOrder(purchaseRequest);
+ log.info("[updatePurchaseRequestAuditStatus] 閲囪喘鐢宠({}) 鑷姩鐢熸垚閲囪喘璁㈠崟({})", id, orderId);
}
}
@@ -358,6 +365,11 @@
if (CollUtil.isEmpty(requestItems)) {
throw exception(PURCHASE_REQUEST_NOT_EXISTS);
}
+ requestItems.forEach(item -> {
+ if (item.getProductPrice() == null || item.getTotalPrice() == null || item.getTaxPrice() == null) {
+ throw exception(PURCHASE_REQUEST_ITEM_PRICE_EMPTY, item.getId());
+ }
+ });
// 2. 鐢熸垚閲囪喘璁㈠崟鍙�
String orderNo = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX);
@@ -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