Эх сурвалжийг харах

合同计量单元,关联资料校验是否被计量

qianxb 1 жил өмнө
parent
commit
1eca20f7ca

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterTreeContractMapper.java

@@ -42,4 +42,6 @@ public interface MeterTreeContractMapper extends BaseMapper<MeterTreeContract> {
     List<MeterTreeLinkWbsTreeVO> getAllLinkByContractId(@Param("contractId") Long contractId, @Param("ids") List<Long> meterIds);
 
     List<NodePartVO> getAllWbsNode(@Param("projectId") Long projectId,@Param("contractId") Long contractId);
+
+    List<MiddleMeterApply> getMiddleMeter(@Param("contractId") Long contractId, @Param("ids") List<Long> meterIds);
 }

+ 9 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterTreeContractMapper.xml

@@ -81,6 +81,15 @@
         from m_wbs_tree_contract where project_id = #{projectId} and contract_id = #{contractId} and type = 1 and is_deleted = 0
         group by id
     </select>
+    <select id="getMiddleMeter" resultType="org.springblade.meter.entity.MiddleMeterApply">
+        select id ,contract_unit_id
+        from s_middle_meter_apply
+        where contract_id = #{contractId}  and is_deleted = 0
+        and contract_unit_id in
+        <foreach item="id" collection="ids" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 
 
 </mapper>

+ 16 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -1870,6 +1870,12 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         List<MeterTreeLinkWbsTree> list = new ArrayList<>();
         //转换为id集合
         List<Long> meterIds = Func.toLongList(dto.getMeterIds());
+        //校验节点是否已经计量过,已经计量过的节点不允许再关联
+        List<MiddleMeterApply> applyList = baseMapper.getMiddleMeter(dto.getContractId(),meterIds);
+        if (applyList.size() > 0){
+            MeterTreeContract treeContract = this.getById(applyList.get(0).getContractUnitId());
+            throw new ServiceException("节点("+treeContract.getNodeName()+")已经被计量过,不能再关联WBS节点,请修改后再关联");
+        }
         List<Long> wbsIds = Func.toLongList(dto.getWbsIds());
         //根据合同段查询出WBS树所有树节点,用于生成分项部位
         List<NodePartVO> wbsNodes = baseMapper.getAllWbsNode(dto.getProjectId(),dto.getContractId());
@@ -1949,6 +1955,16 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         if (StringUtils.isBlank(map.get("ids"))){
             throw new ServiceException("请选择数据后再提交");
         }
+        if (StringUtils.isBlank(map.get("nodeId"))){
+            throw new ServiceException("未传入节点id");
+        }
+        List<Long> meterIds = Func.toLongList(map.get("nodeId"));
+        MeterTreeContract treeContract = this.getById(meterIds.get(0));
+        //校验节点是否已经计量过,已经计量过的节点不允许再关联
+        List<MiddleMeterApply> applyList = baseMapper.getMiddleMeter(treeContract.getContractId(),meterIds);
+        if (applyList.size() > 0){
+            throw new ServiceException("节点("+treeContract.getNodeName()+")已经被计量过,不能取消关联");
+        }
         meterTreeLinkWbsTreeService.removeBatchByIds(Func.toLongList(map.get("ids")));
     }