From b39154d1e708d7f8dd1f2832d881d853d583fe47 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 12 六月 2026 15:18:29 +0800
Subject: [PATCH] ``` fix(customer): 解决客户名称重复问题
---
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 67 ++++++++++++++++++++++++++++++++-
1 files changed, 64 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 52d01ec..5bd8dbc 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -16,13 +16,20 @@
import com.ruoyi.basic.pojo.CustomerUser;
import com.ruoyi.basic.service.*;
import com.ruoyi.basic.vo.CustomerVo;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesQuotationMapper;
import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesQuotation;
+import com.ruoyi.sales.vo.CustomerTransactionsDetailsVo;
+import com.ruoyi.sales.vo.CustomerTransactionsVo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -48,7 +55,11 @@
@Slf4j
public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements ICustomerService {
@Autowired
- private SalesLedgerMapper salesLedgerMapper;
+ private SalesLedgerMapper salesLedgerMapper;
+ @Autowired
+ private SalesQuotationMapper salesQuotationMapper;
+ @Autowired
+ private ReturnManagementMapper returnManagementMapper;
@Autowired
private CustomerMapper customerMapper;
@@ -189,6 +200,8 @@
LoginUser loginUser = SecurityUtils.getLoginUser();
Long tenantId = loginUser.getTenantId();
customer.setTenantId(tenantId);
+ // 鏍¢獙瀹㈡埛鍚嶇О鍞竴鎬�
+ checkCustomerNameUnique(customer.getCustomerName(), tenantId, null);
return customerMapper.insert(customer);
}
@@ -203,7 +216,31 @@
LoginUser loginUser = SecurityUtils.getLoginUser();
Long tenantId = loginUser.getTenantId();
customer.setTenantId(tenantId);
+ // 鏍¢獙瀹㈡埛鍚嶇О鍞竴鎬э紙鎺掗櫎鑷韩锛�
+ checkCustomerNameUnique(customer.getCustomerName(), tenantId, customer.getId());
return customerMapper.updateById(customer);
+ }
+
+ /**
+ * 鏍¢獙瀹㈡埛鍚嶇О鍞竴鎬�
+ *
+ * @param customerName 瀹㈡埛鍚嶇О
+ * @param tenantId 绉熸埛ID
+ * @param excludeId 鎺掗櫎鐨勫鎴稩D锛堜慨鏀规椂鎺掗櫎鑷韩锛�
+ */
+ private void checkCustomerNameUnique(String customerName, Long tenantId, Long excludeId) {
+ if (StringUtils.isNotEmpty(customerName)) {
+ LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(Customer::getTenantId, tenantId)
+ .eq(Customer::getCustomerName, customerName);
+ if (excludeId != null) {
+ queryWrapper.ne(Customer::getId, excludeId);
+ }
+ Long count = customerMapper.selectCount(queryWrapper);
+ if (count > 0) {
+ throw new ServiceException("瀹㈡埛鍚嶇О'" + customerName + "'宸插瓨鍦紝璇蜂慨鏀�");
+ }
+ }
}
/**
@@ -216,10 +253,24 @@
@Transactional(rollbackFor = Exception.class)
public int deleteCustomerByIds(Long[] ids) {
List<Long> idList = Arrays.asList(ids);
+ // 妫�鏌ユ槸鍚︽湁閿�鍞彴璐﹀叧鑱�
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new QueryWrapper<SalesLedger>().lambda().in(SalesLedger::getCustomerId, idList));
if (!salesLedgers.isEmpty()) {
- throw new RuntimeException("瀹㈡埛妗f涓嬫湁閿�鍞悎鍚岋紝璇峰厛鍒犻櫎閿�鍞悎鍚�");
+ throw new RuntimeException("瀹㈡埛妗f涓嬫湁閿�鍞彴璐︼紝璇峰厛鍒犻櫎閿�鍞彴璐�");
}
+
+ // 妫�鏌ユ槸鍚︽湁閿�鍞��璐у叧鑱�
+ List<ReturnManagement> returnManagements = returnManagementMapper.selectList(new QueryWrapper<ReturnManagement>().lambda().in(ReturnManagement::getCustomerId, idList));
+ if (!returnManagements.isEmpty()) {
+ throw new RuntimeException("瀹㈡埛妗f涓嬫湁閿�鍞��璐э紝璇峰厛鍒犻櫎閿�鍞��璐�");
+ }
+
+ // 妫�鏌ユ槸鍚︽湁閿�鍞姤浠峰叧鑱�
+ List<SalesQuotation> salesQuotations = salesQuotationMapper.selectList(new QueryWrapper<SalesQuotation>().lambda().in(SalesQuotation::getCustomerId, idList));
+ if (!salesQuotations.isEmpty()) {
+ throw new RuntimeException("瀹㈡埛妗f涓嬫湁閿�鍞姤浠凤紝璇峰厛鍒犻櫎閿�鍞姤浠�");
+ }
+
// 鏌ヨ鏄惁鏈夊凡鍒嗛厤鐨勫叕娴峰鎴�
List<Customer> assignedPools = customerMapper.selectList(
new QueryWrapper<Customer>().lambda()
@@ -375,10 +426,20 @@
//灏嗗鎴风殑type鏀逛负1 涓旂洿鎺ュ垎閰嶇粰褰撳墠鐢ㄦ埛
Customer customer = customerMapper.selectById(id);
customer.setType(1);
- customer.setIsAssigned(1);
+ customer.setIsAssigned(0);
return this.updateById(customer);
}
+ @Override
+ public IPage<CustomerTransactionsVo> customewTransactions(Page page, String customerName) {
+ return customerMapper.customewTransactions(page, customerName);
+ }
+
+ @Override
+ public IPage<CustomerTransactionsDetailsVo> customewTransactionsDetails(Page page, Long customerId) {
+ return customerMapper.customewTransactionsDetails(page, customerId);
+ }
+
/**
* 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
*/
--
Gitblit v1.9.3