From 086b2186789ea04362db4bce71c6112686c43caa Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 21 九月 2026 15:33:26 +0800
Subject: [PATCH] feat(crm): 支持合同编号自定义配置
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
index 448dae2..91138a8 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
@@ -150,10 +150,15 @@
List<CrmContractProductDO> contractProducts = validateContractProducts(createReqVO.getProducts());
// 1.2 鏍¢獙鍏宠仈瀛楁
validateRelationDataExists(createReqVO);
- // 1.3 鐢熸垚搴忓彿
- String no = noRedisDAO.generate(CrmNoRedisDAO.CONTRACT_NO_PREFIX);
- if (contractMapper.selectByNo(no) != null) {
- throw exception(CONTRACT_NO_EXISTS);
+ // 1.3 鐢熸垚鎴栨牎楠屽悎鍚岀紪鍙凤細鏀寔鑷畾涔夌紪鍙凤紝鏈~鍐欐椂鑷姩鐢熸垚
+ String no = StrUtil.trimToNull(createReqVO.getNo());
+ if (no == null) {
+ no = noRedisDAO.generate(CrmNoRedisDAO.CONTRACT_NO_PREFIX);
+ if (contractMapper.selectByNo(no) != null) {
+ throw exception(CONTRACT_NO_EXISTS);
+ }
+ } else if (contractMapper.selectByNo(no) != null) {
+ throw exception(CONTRACT_NO_DUPLICATE, no);
}
// 2.1 鎻掑叆鍚堝悓
@@ -188,14 +193,26 @@
updateReqVO.setOwnerUserId(null); // 涓嶅厑璁告洿鏂扮殑瀛楁
// 1.1 鏍¢獙瀛樺湪
CrmContractDO oldContract = validateContractExists(updateReqVO.getId());
- // 1.2 鍙湁鑽夌銆佸鎵逛腑锛屽彲浠ョ紪杈戯紱
+ // 1.2 鍚堝悓缂栧彿锛氱暀绌哄垯淇濇寔鍘熺紪鍙凤紝濉啓鍒欐牎楠屽敮涓�鎬э紙鎺掗櫎鑷韩锛�
+ // 鐣欑┖鏃跺洖濉師缂栧彿鑰岄潪缃┖锛岄伩鍏嶆搷浣滄棩蹇� diff 鍑虹幇鈥滅紪鍙疯娓呯┖鈥�
+ String no = StrUtil.trimToNull(updateReqVO.getNo());
+ if (no == null) {
+ no = oldContract.getNo();
+ } else {
+ CrmContractDO noContract = contractMapper.selectByNo(no);
+ if (noContract != null && !ObjUtil.equal(noContract.getId(), updateReqVO.getId())) {
+ throw exception(CONTRACT_NO_DUPLICATE, no);
+ }
+ }
+ updateReqVO.setNo(no);
+ // 1.3 鍙湁鑽夌銆佸鎵逛腑锛屽彲浠ョ紪杈戯紱
if (!ObjectUtils.equalsAny(oldContract.getAuditStatus(), CrmAuditStatusEnum.DRAFT.getStatus(),
CrmAuditStatusEnum.PROCESS.getStatus())) {
throw exception(CONTRACT_UPDATE_FAIL_NOT_DRAFT);
}
- // 1.3 鏍¢獙浜у搧椤圭殑鏈夋晥鎬�
+ // 1.4 鏍¢獙浜у搧椤圭殑鏈夋晥鎬�
List<CrmContractProductDO> contractProducts = validateContractProducts(updateReqVO.getProducts());
- // 1.4 鏍¢獙鍏宠仈瀛楁
+ // 1.5 鏍¢獙鍏宠仈瀛楁
validateRelationDataExists(updateReqVO);
// 2.1 鏇存柊鍚堝悓
--
Gitblit v1.9.3