From d6edd84479aed226bafe54d34d3f6eec2731c13b Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 14 五月 2026 14:23:54 +0800
Subject: [PATCH] fix(sales): 解决销售台账合同号更新时的唯一性校验问题

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 65a4600..a98a415 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -829,7 +829,17 @@
             salesLedger.setSalesContractNo(contractNo);
             salesLedgerMapper.insert(salesLedger);
         } else {
-            salesLedger.setSalesContractNo(null);
+            if (StrUtil.isNotBlank(salesLedgerDto.getSalesContractNo())) {
+                SalesLedger existLedger = salesLedgerMapper.selectById(salesLedger.getId());
+                // 濡傛灉鍚堝悓鍙峰彂鐢熶簡鍙樺寲锛岄渶瑕佹牎楠屽敮涓�鎬�
+                if (!salesLedgerDto.getSalesContractNo().equals(existLedger.getSalesContractNo())) {
+                    Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
+                                    .eq(SalesLedger::getSalesContractNo, salesLedgerDto.getSalesContractNo())
+                                    .last("limit 1")) == null,
+                            salesLedgerDto.getSalesContractNo() + "鍚堝悓鍙峰凡瀛樺湪");
+                }
+                salesLedger.setSalesContractNo(salesLedgerDto.getSalesContractNo());
+            }
             salesLedgerMapper.updateById(salesLedger);
         }
 

--
Gitblit v1.9.3