Просмотр исходного кода

调整电力户号、客户名称校验

fuyuchuan 2 дней назад
Родитель
Сommit
b9c5bc2408

+ 23 - 25
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppCustomerServiceImpl.java

@@ -80,16 +80,7 @@ public class VppCustomerServiceImpl implements VppCustomerService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean submitAccess(CustomerAccessRequestVO request) {
         validateAccessRequest(request);
-
-        // 校验同租户下 accountNo 唯一
-        LambdaQueryWrapper<VppCustomerAccess> dupWrapper = new LambdaQueryWrapper<>();
-        dupWrapper.eq(VppCustomerAccess::getAccountNo, request.getAccountNo())
-                .eq(VppCustomerAccess::getTenantId, SecurityUtils.getTenantId())
-                .eq(VppCustomerAccess::getDeleteFlag, VppAuditHelper.NOT_DELETED);
-        Integer accessCount = accessMapper.selectCount(dupWrapper);
-        if (accessCount != null && accessCount > 0) {
-            throw new BusinessException("该电力户号已存在准入申请,请勿重复提交!");
-        }
+        checkCustomerNameUnique(request.getCustomerName(), null);
 
         VppCustomerAccess access = new VppCustomerAccess();
         access.setApplyNo(VppAuditHelper.nextApplyNo());
@@ -214,16 +205,7 @@ public class VppCustomerServiceImpl implements VppCustomerService {
         if (access.getAccessStatus() != ACCESS_REJECTED) {
             throw new BusinessException("仅已驳回的准入申请允许修改!");
         }
-
-        LambdaQueryWrapper<VppCustomerAccess> dupWrapper = new LambdaQueryWrapper<>();
-        dupWrapper.eq(VppCustomerAccess::getAccountNo, request.getAccountNo())
-                .eq(VppCustomerAccess::getTenantId, SecurityUtils.getTenantId())
-                .eq(VppCustomerAccess::getDeleteFlag, VppAuditHelper.NOT_DELETED)
-                .ne(VppCustomerAccess::getId, request.getId());
-        Integer accessCount = accessMapper.selectCount(dupWrapper);
-        if (accessCount != null && accessCount > 0) {
-            throw new BusinessException("该电力户号已存在准入申请,请勿重复提交!");
-        }
+        checkCustomerNameUnique(request.getCustomerName(), null);
 
         access.setAccountNo(request.getAccountNo());
         access.setCustomerName(request.getCustomerName());
@@ -415,7 +397,8 @@ public class VppCustomerServiceImpl implements VppCustomerService {
         }
 
         // 电力户号全局唯一校验
-        checkAccountNoUnique(vo.getAccountNo(), null);
+        // checkAccountNoUnique(vo.getAccountNo(), null);
+        checkCustomerNameUnique(vo.getAccountNo(), null);
 
         // 构建客户
         VppCustomer customer = new VppCustomer();
@@ -591,7 +574,7 @@ public class VppCustomerServiceImpl implements VppCustomerService {
         // 仅更新非空字段
         if (StringUtils.isNotBlank(vo.getAccountNo())) {
             if (!vo.getAccountNo().equals(existing.getAccountNo())) {
-                checkAccountNoUnique(vo.getAccountNo(), id);
+                // checkAccountNoUnique(vo.getAccountNo(), id);
             }
             existing.setAccountNo(vo.getAccountNo());
         }
@@ -1044,10 +1027,25 @@ public class VppCustomerServiceImpl implements VppCustomerService {
         }
     }
 
-    private void validateAccessRequest(CustomerAccessRequestVO request) {
-        if (request == null || StringUtils.isBlank(request.getAccountNo())) {
-            throw new BusinessException("电力户号不能为空!");
+    /**
+     * 客户名称全局唯一校验(当前租户)
+     */
+    private void checkCustomerNameUnique(String customerName, Long excludeId) {
+        LambdaQueryWrapper<VppCustomer> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(VppCustomer::getCustomerName, customerName)
+                .eq(VppCustomer::getTenantId, SecurityUtils.getTenantId())
+                .eq(VppCustomer::getDeleteFlag, VppAuditHelper.NOT_DELETED)
+                .ne(excludeId != null, VppCustomer::getId, excludeId);
+        Integer count = customerMapper.selectCount(wrapper);
+        if (count != null && count > 0) {
+            throw new BusinessException("客户名称已存在,请更换!");
         }
+    }
+
+    private void validateAccessRequest(CustomerAccessRequestVO request) {
+        // if (request == null || StringUtils.isBlank(request.getAccountNo())) {
+        //     throw new BusinessException("电力户号不能为空!");
+        // }
         if (StringUtils.isBlank(request.getCustomerName())) {
             throw new BusinessException("客户名称不能为空!");
         }