Sfoglia il codice sorgente

完善合同模板与客户删除校验:有关联合同时禁止删除

Co-authored-by: Cursor <cursoragent@cursor.com>
fuyuchuan 3 giorni fa
parent
commit
ca0f16672d

+ 15 - 1
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppContractTemplateServiceImpl.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.vpp.domain.VppContract;
 import com.usky.vpp.domain.VppContractTemplate;
+import com.usky.vpp.mapper.VppContractMapper;
 import com.usky.vpp.mapper.VppContractTemplateMapper;
 import com.usky.vpp.service.VppContractTemplateService;
 import com.usky.vpp.service.vo.VppContractTemplateRequestVO;
@@ -41,6 +43,8 @@ public class VppContractTemplateServiceImpl implements VppContractTemplateServic
 
     @Autowired
     private VppContractTemplateMapper vppContractTemplateMapper;
+    @Autowired
+    private VppContractMapper vppContractMapper;
 
     private final RestTemplate restTemplate = new RestTemplate();
 
@@ -185,11 +189,21 @@ public class VppContractTemplateServiceImpl implements VppContractTemplateServic
     public Boolean delete(Long id) {
         LambdaQueryWrapper<VppContractTemplate> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(VppContractTemplate::getId, id)
+                .eq(VppContractTemplate::getDeleteFlag, 0)
                 .eq(VppContractTemplate::getTenantId, SecurityUtils.getTenantId());
         VppContractTemplate template = vppContractTemplateMapper.selectOne(queryWrapper);
 
         if (template == null) {
-            throw new BusinessException("合同模板不存在!");
+            throw new BusinessException("合同模板不存在或已被删除!");
+        }
+
+        // 模板下存在关联合同时不允许删除
+        LambdaQueryWrapper<VppContract> contractWrapper = new LambdaQueryWrapper<>();
+        contractWrapper.eq(VppContract::getTemplateId, id)
+                .eq(VppContract::getDeleteFlag, 0);
+        Integer relatedCount = vppContractMapper.selectCount(contractWrapper);
+        if (relatedCount != null && relatedCount > 0) {
+            throw new BusinessException("该合同模板下存在关联合同,无法删除!");
         }
 
         template.setDeleteFlag(1);

+ 5 - 6
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppCustomerServiceImpl.java

@@ -678,14 +678,13 @@ public class VppCustomerServiceImpl implements VppCustomerService {
     public Boolean deleteCustomer(Long id) {
         VppCustomer customer = findCustomerById(id);
 
-        // 检查是否存在非草稿状态的合同,存在则不允许删除客户
+        // 客户下存在合同(不论状态)则不允许删除
         LambdaQueryWrapper<VppContract> contractWrapper = new LambdaQueryWrapper<>();
         contractWrapper.eq(VppContract::getCustomerId, id)
-                .eq(VppContract::getDeleteFlag, 0)
-                .ne(VppContract::getContractStatus, VppContractStatusHelper.DRAFT);
-        Integer nonDraftCount = contractMapper.selectCount(contractWrapper);
-        if (nonDraftCount != null && nonDraftCount > 0) {
-            throw new BusinessException("该客户下存在非草稿状态的合同,无法删除!");
+                .eq(VppContract::getDeleteFlag, 0);
+        Integer contractCount = contractMapper.selectCount(contractWrapper);
+        if (contractCount != null && contractCount > 0) {
+            throw new BusinessException("该客户下存在合同,无法删除!");
         }
 
         VppAuditHelper.fillSoftDelete(customer);