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/sale/ErpSaleOrderServiceImpl.java | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 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 ee084d0..92d38a8 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
@@ -139,10 +139,8 @@
adminUserApi.validateUser(createReqVO.getSaleUserId());
}
// 1.5 鐢熸垚璁㈠崟鍙凤紝骞舵牎楠屽敮涓�鎬�
- String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_ORDER_NO_PREFIX);
- if (saleOrderMapper.selectByNo(no) != null) {
- throw exception(SALE_ORDER_NO_EXISTS);
- }
+ String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_ORDER_NO_PREFIX,
+ candidate -> saleOrderMapper.selectByNo(candidate) != null);
// 2.1 鎻掑叆璁㈠崟锛堝垱寤哄悗涓烘湭鎻愪氦鐘舵�侊紝闇�鎵嬪姩鎻愪氦瀹℃壒鍒板崗鍚屽姙鍏級
ErpSaleOrderDO saleOrder = BeanUtils.toBean(createReqVO, ErpSaleOrderDO.class, in -> in
@@ -306,10 +304,15 @@
}
// 3. 鍗曞彿锛氬~浜嗗氨鐢紙鏍¢獙鍞竴锛夛紝娌″~鑷姩鐢熸垚
- String no = StrUtil.isNotBlank(head.getNo()) ? head.getNo().trim()
- : noRedisDAO.generate(ErpNoRedisDAO.SALE_ORDER_NO_PREFIX);
- if (saleOrderMapper.selectByNo(no) != null) {
- throw new IllegalArgumentException("閿�鍞崟缂栧彿宸插瓨鍦細" + no);
+ String no;
+ if (StrUtil.isNotBlank(head.getNo())) {
+ no = head.getNo().trim();
+ if (saleOrderMapper.selectByNo(no) != null) {
+ throw new IllegalArgumentException("閿�鍞崟缂栧彿宸插瓨鍦細" + no);
+ }
+ } else {
+ no = noRedisDAO.generate(ErpNoRedisDAO.SALE_ORDER_NO_PREFIX,
+ candidate -> saleOrderMapper.selectByNo(candidate) != null);
}
// 4. 缁勮涓昏〃锛氬鍏ュ悗鍥哄畾涓衡�滄湭鎻愪氦(0)鈥濈姸鎬�
--
Gitblit v1.9.3