From 98dce0b733be283767c17b62ce7ff312aacd9f5d Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 24 六月 2026 13:25:48 +0800
Subject: [PATCH] 已领用并且被销售模块引用的公海客户不能回收或者编辑操作,已被销售模块引用的私海客户也不能编辑操作
---
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 78 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 76 insertions(+), 2 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 09c2a46..0b0c6cd 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -21,8 +21,14 @@
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 +54,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;
@@ -202,6 +212,7 @@
public int updateCustomer(Customer customer) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long tenantId = loginUser.getTenantId();
+ validateCustomerEditPermission(customer.getId());
customer.setTenantId(tenantId);
return customerMapper.updateById(customer);
}
@@ -216,10 +227,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()
@@ -317,6 +342,7 @@
public void recycleCustomer(CustomerDto customerDto) {
Customer customer = customerMapper.selectById(customerDto.getId());
if (customer.getType() == 1 && customer.getIsAssigned() == 1) { // 鍏捣涓斿凡鍒嗛厤
+ validatePublicSeaRecyclePermission(customer.getId());
customer.setIsAssigned(0);
customer.setUsageStatus(0L);
customer.setUsageUser(0L);
@@ -379,6 +405,54 @@
return this.updateById(customer);
}
+ private void validateCustomerEditPermission(Long customerId) {
+ Customer customer = customerMapper.selectById(customerId);
+ if (customer == null) {
+ throw new RuntimeException("瀹㈡埛妗f涓嶅瓨鍦�");
+ }
+ if (!hasSalesModuleReference(customerId)) {
+ return;
+ }
+ if (Objects.equals(customer.getType(), 0)) {
+ throw new RuntimeException("宸茶閿�鍞ā鍧楀紩鐢ㄧ殑绉佹捣瀹㈡埛涓嶈兘缂栬緫");
+ }
+ if (Objects.equals(customer.getType(), 1) && Objects.equals(customer.getIsAssigned(), 1)) {
+ throw new RuntimeException("宸查鐢ㄥ苟涓旇閿�鍞ā鍧楀紩鐢ㄧ殑鍏捣瀹㈡埛涓嶈兘缂栬緫");
+ }
+ }
+
+ private void validatePublicSeaRecyclePermission(Long customerId) {
+ if (hasSalesModuleReference(customerId)) {
+ throw new RuntimeException("宸查鐢ㄥ苟涓旇閿�鍞ā鍧楀紩鐢ㄧ殑鍏捣瀹㈡埛涓嶈兘鍥炴敹");
+ }
+ }
+
+ private boolean hasSalesModuleReference(Long customerId) {
+ Long salesLedgerCount = salesLedgerMapper.selectCount(new QueryWrapper<SalesLedger>().lambda()
+ .eq(SalesLedger::getCustomerId, customerId));
+ if (salesLedgerCount != null && salesLedgerCount > 0) {
+ return true;
+ }
+ Long salesQuotationCount = salesQuotationMapper.selectCount(new QueryWrapper<SalesQuotation>().lambda()
+ .eq(SalesQuotation::getCustomerId, customerId));
+ if (salesQuotationCount != null && salesQuotationCount > 0) {
+ return true;
+ }
+ Long returnManagementCount = returnManagementMapper.selectCount(new QueryWrapper<ReturnManagement>().lambda()
+ .eq(ReturnManagement::getCustomerId, customerId));
+ return returnManagementCount != null && returnManagementCount > 0;
+ }
+
+ @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