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/purchase/ErpPurchaseRequestServiceImpl.java | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 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 82b0986..4c2366e 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
@@ -114,10 +114,8 @@
supplierService.validateSupplier(createReqVO.getSupplierId());
}
// 3. 鐢熸垚鐢宠鍗曞彿
- String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX);
- if (purchaseRequestMapper.selectByNo(no) != null) {
- throw exception(PURCHASE_REQUEST_NO_EXISTS);
- }
+ String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX,
+ candidate -> purchaseRequestMapper.selectByNo(candidate) != null);
// 4. 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
Long userId = Long.parseLong(getCurrentUserId());
@@ -276,10 +274,15 @@
}
// 3. 鍗曞彿锛氬~浜嗗氨鐢紙鏍¢獙鍞竴锛夛紝娌″~鑷姩鐢熸垚 CGSQ...
- String no = StrUtil.isNotBlank(head.getNo()) ? head.getNo().trim()
- : noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX);
- if (purchaseRequestMapper.selectByNo(no) != null) {
- throw new IllegalArgumentException("閲囪喘鐢宠鍗曞彿宸插瓨鍦細" + no);
+ String no;
+ if (StrUtil.isNotBlank(head.getNo())) {
+ no = head.getNo().trim();
+ if (purchaseRequestMapper.selectByNo(no) != null) {
+ throw new IllegalArgumentException("閲囪喘鐢宠鍗曞彿宸插瓨鍦細" + no);
+ }
+ } else {
+ no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX,
+ candidate -> purchaseRequestMapper.selectByNo(candidate) != null);
}
// 4. 鐢宠浜� / 鐢宠閮ㄩ棬锛氬彇褰撳墠鐧诲綍鐢ㄦ埛鍙婂叾閮ㄩ棬
@@ -596,10 +599,8 @@
}
// 2. 鐢熸垚閲囪喘璁㈠崟鍙�
- String orderNo = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX);
- if (purchaseOrderMapper.selectByNo(orderNo) != null) {
- throw exception(PURCHASE_ORDER_NO_EXISTS);
- }
+ String orderNo = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX,
+ candidate -> purchaseOrderMapper.selectByNo(candidate) != null);
// 3. 鍒涘缓閲囪喘璁㈠崟
ErpPurchaseOrderDO purchaseOrder = new ErpPurchaseOrderDO();
--
Gitblit v1.9.3