Преглед на файлове

中间计量申请,新增修改增加超计校验

qianxb преди 1 година
родител
ревизия
8d3f577843

+ 2 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java

@@ -18,6 +18,7 @@ package org.springblade.meter.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.entity.ChangeTokenMeter;
 import org.springblade.meter.entity.MeterTreeContract;
@@ -60,7 +61,7 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
 
     ChangeTokenForm getTokenById(@Param("id") Long id);
 
-    String getContractInfo(@Param("contractId") Long contractId);
+    ContractInfo getContractInfo(@Param("contractId") Long contractId);
 
     Integer getNodeChild(@Param("contractId") Long contractId,@Param("nodeId") Long contractUnitId);
 

+ 4 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -154,9 +154,7 @@
         select *
         from s_change_token_form where id = #{id}
     </select>
-    <select id="getContractInfo" resultType="java.lang.String">
-        select contract_number from m_contract_info where id = #{contractId}
-    </select>
+
     <select id="getNodeChild" resultType="java.lang.Integer">
         select count(1) from s_meter_tree_contract where contract_id = #{contractId} and parent_id = #{nodeId} and is_deleted = 0
     </select>
@@ -222,6 +220,9 @@
             #{id}
         </foreach>
     </select>
+    <select id="getContractInfo" resultType="org.springblade.manager.entity.ContractInfo">
+        select * from m_contract_info where id = #{contractId}
+    </select>
 
 
 </mapper>

+ 34 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.meter.dto.MiddleMeterApplyDTO;
 import org.springblade.meter.entity.*;
 import org.springblade.meter.mapper.MiddleMeterApplyMapper;
@@ -162,9 +163,25 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         //保存计量清单
         List<MeterInventoryVO> formList = dto.getFormList();
          if (formList.size() != 0){
+             //获取合同段信息
+             ContractInfo info = baseMapper.getContractInfo(dto.getContractId());
+             if (info == null || info.getIsOverMeter() == null){
+                 throw new ServiceException("未获取到合同段信息,保存失败");
+             }
+             //如果没有则
              BigDecimal big = new BigDecimal(0);
              //保存清单
             List<InventoryFormApply> formApplies = formList.stream().map(l -> {
+                //校验数据
+                if (l.getIsBuildThanContract() == 1){
+                    if (info.getIsOverMeter() == 0 || l.getIsCreateDivide() == 0){
+                        throw new ServiceException("施工图数量未大于合同数量,保存失败");
+                    }
+                }else {
+                    if (l.getAllMeterTotal().compareTo(l.getChangeTotal()) == 1 && info.getIsOverMeter() == 0){
+                        throw new ServiceException("计量量超出施工图数量,保存失败");
+                    }
+                }
                 InventoryFormApply formApply = new InventoryFormApply();
                 formApply.setBusinessDate(dto.getBusinessDate());
                 formApply.setProjectId(dto.getProjectId());
@@ -294,9 +311,24 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         //删除当前节点本期清单
         inventoryFormApplyService.deleteByMiddleId(dto.getId());
         if (formList.size() != 0){
+            //获取合同段信息
+            ContractInfo info = baseMapper.getContractInfo(dto.getContractId());
+            if (info == null || info.getIsOverMeter() == null){
+                throw new ServiceException("未获取到合同段信息,保存失败");
+            }
             BigDecimal big = new BigDecimal(0);
             //保存清单
             List<InventoryFormApply> formApplies = formList.stream().map(l -> {
+                //校验数据
+                if (l.getIsBuildThanContract() == 1){
+                    if (info.getIsOverMeter() == 0 || l.getIsCreateDivide() == 0){
+                        throw new ServiceException("施工图数量未大于合同数量,保存失败");
+                    }
+                }else {
+                    if (l.getAllMeterTotal().compareTo(l.getChangeTotal()) == 1 && info.getIsOverMeter() == 0){
+                        throw new ServiceException("计量量超出施工图数量,保存失败");
+                    }
+                }
                 InventoryFormApply formApply = new InventoryFormApply();
                 formApply.setBusinessDate(dto.getBusinessDate());
                 formApply.setProjectId(dto.getProjectId());
@@ -458,7 +490,8 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
     public String getMeterNumber(MiddleMeterApply apply) {
         StringBuilder str = new StringBuilder();
         //获取合同信息
-        String contractNumber = baseMapper.getContractInfo(apply.getContractId());
+        ContractInfo info = baseMapper.getContractInfo(apply.getContractId());
+        String contractNumber = info.getContractNumber();
         if (StringUtils.isBlank(contractNumber)){
             throw new ServiceException("未获取到当前合同段编号信息");
         }