From 1d9cfc91e7255b9e139b20ff230cb19246f19193 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 09 十一月 2026 14:32:11 +0800
Subject: [PATCH] refactor(erp): 重构ERP单据单号生成逻辑以支持冲突重试

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
index 9ed875a..0b41686 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
@@ -31,7 +31,7 @@
 /**
  * ERP 鏀舵鍗� Service 瀹炵幇绫�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Service
 @Validated
@@ -73,10 +73,8 @@
             adminUserApi.validateUser(createReqVO.getFinanceUserId());
         }
         // 1.5 鐢熸垚鏀舵鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.FINANCE_RECEIPT_NO_PREFIX);
-        if (financeReceiptMapper.selectByNo(no) != null) {
-            throw exception(FINANCE_RECEIPT_NO_EXISTS);
-        }
+        String no = noRedisDAO.generate(ErpNoRedisDAO.FINANCE_RECEIPT_NO_PREFIX,
+                candidate -> financeReceiptMapper.selectByNo(candidate) != null);
 
         // 2.1 鎻掑叆鏀舵鍗�
         ErpFinanceReceiptDO receipt = BeanUtils.toBean(createReqVO, ErpFinanceReceiptDO.class, in -> in
@@ -125,11 +123,7 @@
         // 2.2 鏇存柊鏀舵鍗曢」
         updateFinanceReceiptItemList(updateReqVO.getId(), receiptItems);
         // 2.3 鏇存柊闄勪欢
-        if (updateReqVO.getBlobIds() != null) {
-            storageAttachmentApi.deleteAttachmentsByRecord("erp_finance_receipt", updateReqVO.getId());
-            storageAttachmentApi.bindAttachments("file", "erp_finance_receipt",
-                    updateReqVO.getId(), updateReqVO.getBlobIds());
-        }
+        storageAttachmentApi.updateAttachments("file", "erp_finance_receipt", updateReqVO.getId(), updateReqVO.getBlobIds());
     }
 
     private void calculateTotalPrice(ErpFinanceReceiptDO receipt, List<ErpFinanceReceiptItemDO> receiptItems) {

--
Gitblit v1.9.3