Procházet zdrojové kódy

存在中期支付证书的计量期不允许删除

yangyj před 1 rokem
rodič
revize
cdcd6987b3

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java

@@ -44,6 +44,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 
 import java.time.LocalDate;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 合同计量期表 控制器
@@ -85,6 +86,15 @@ public class ContractMeterPeriodController extends BladeController {
 			contractMeterPeriodService.remove(new LambdaQueryWrapper<ContractMeterPeriod>()
 					.eq(ContractMeterPeriod::getContractId,dto.getContractId()));
 		}else {
+			/*如果被删除的计量期已经关联中期支付证书,则不允许删除,必须先删除报表yangyj 20240514*/
+            List<Long> ids= this.interimPayCertificateService.existCertificate(dto.getContractId());
+            if(ids.size()>0){
+				List<Long> cpIds = list.stream().map(ContractMeterPeriod::getId).collect(Collectors.toList());
+				/*当前计量期集合是否涵盖所有支付证书里的计量期id*/
+				if(!cpIds.containsAll(ids)){
+					return R.fail("已经关联中期支付证书,无法删除");
+				}
+			}
 			//存在数据,先删再存,循环排序
 			contractMeterPeriodService.removeByContrId(dto.getContractId());
 			LocalDate lastDate = null;

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateService.java

@@ -44,4 +44,7 @@ public interface IInterimPayCertificateService extends BaseService<InterimPayCer
     void recalculate(Long id);
 
     String getStatement(Long id);
+
+    /**存在中期支付证书,就不允许直接删*/
+    List<Long> existCertificate(Long contractId);
 }

+ 18 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateServiceImpl.java

@@ -17,6 +17,8 @@
 package org.springblade.meter.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.meter.entity.InterimPayCertificate;
 import org.springblade.meter.entity.MeterPeriod;
@@ -24,10 +26,14 @@ import org.springblade.meter.mapper.InterimPayCertificateMapper;
 import org.springblade.meter.service.IInterimPayCertificateService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.meter.vo.InterimPayCertificateVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 中期支付证书 服务实现类
@@ -36,8 +42,10 @@ import java.util.List;
  * @since 2023-11-29
  */
 @Service
+@RequiredArgsConstructor
 public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPayCertificateMapper, InterimPayCertificate> implements IInterimPayCertificateService {
 
+    private  final JdbcTemplate jdbcTemplate;
 
     /**
      * 新增 中期支付证书
@@ -136,4 +144,14 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
     public String getStatement(Long id) {
         return null;
     }
+
+
+    @Override
+    public List<Long> existCertificate(Long contractId) {
+        List<InterimPayCertificate> list=this.list(Wrappers.<InterimPayCertificate>lambdaQuery().select(InterimPayCertificate::getId,InterimPayCertificate::getContractPeriodId).eq(InterimPayCertificate::getContractId,contractId));
+        if(list.size()>0){
+            return list.stream().map(InterimPayCertificate::getContractPeriodId).collect(Collectors.toList());
+        }
+       return Collections.emptyList();
+    }
 }