raojiang hai 3 semanas
pai
achega
8f5126de20

+ 4 - 4
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/vo/ReconLoadpointCompareVO.java

@@ -25,11 +25,11 @@ public class ReconLoadpointCompareVO {
     /** 重构后电压(kV) */
     private BigDecimal voltageAfter;
 
-    /** 重构前是否越限 */
-    private Boolean isOverLimitBefore;
+    /** 重构前是否越限 0-否 1-越上限 2-越下限 */
+    private Integer isOverLimitBefore;
 
-    /** 重构后是否越限 */
-    private Boolean isOverLimitAfter;
+    /** 重构后是否越限 0-否 1-越上限 2-越下限  */
+    private Integer isOverLimitAfter;
 
     /** 电压变化(kV) */
     private BigDecimal voltageChange;

+ 3 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/vo/ReconSwitchCompareVO.java

@@ -13,6 +13,9 @@ public class ReconSwitchCompareVO {
     /** 详情序号 */
     private Integer detailNo;
 
+    /** 开关id */
+    private String psrID;
+
     /** 开关名称 */
     private String switchName;
 

+ 4 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/mapper/FhzgReconVolDetailMapper.java

@@ -3,8 +3,12 @@ package com.hdkj.lt.bf.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.hdkj.lt.modle.po.FhzgReconVolDetail;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /** 电压结果-节点详情 Mapper */
 @Mapper
 public interface FhzgReconVolDetailMapper extends BaseMapper<FhzgReconVolDetail> {
+    List<FhzgReconVolDetail> getLoadListbySpecRule(@Param("id") Long id);
 }

+ 39 - 12
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/ReconQueryServiceImpl.java

@@ -40,6 +40,7 @@ public class ReconQueryServiceImpl implements ReconQueryService {
     @Autowired
     private FhzgReconSwitchResultDetailMapper reconSwitchResultDetailMapper;
 
+
     @Override
     public ReconListVO getSchemeList(ReconListReqDTO reqDTO) {
         if (Objects.isNull(reqDTO.getEventId())) {
@@ -151,18 +152,21 @@ public class ReconQueryServiceImpl implements ReconQueryService {
     public PageVO<ReconLoadpointCompareVO> getLoadpointComparePage(ReconPageReqDTO reqDTO) {
         validatePageParam(reqDTO);
 
-        Page<FhzgReconVolDetail> page = new Page<>(reqDTO.getPageNum(), reqDTO.getPageSize());
-        Page<FhzgReconVolDetail> resultPage = reconVolDetailMapper.selectPage(page,
-                new LambdaQueryWrapper<FhzgReconVolDetail>()
-                        .eq(FhzgReconVolDetail::getResultId, reqDTO.getId())
-                        .orderByAsc(FhzgReconVolDetail::getDetailNo)
-        );
 
+        //优先先查越限的,再根据电压变化排序,最多10条
+        List<FhzgReconVolDetail> reconVolDetailList = reconVolDetailMapper.getLoadListbySpecRule(reqDTO.getId());
         PageVO<ReconLoadpointCompareVO> voPage = new PageVO<>();
-        voPage.setTotal(resultPage.getTotal());
-        voPage.setPageNum(resultPage.getCurrent());
-        voPage.setPageSize(resultPage.getSize());
-        voPage.setRecords(resultPage.getRecords().stream().map(this::buildLoadpointCompareVO).collect(Collectors.toList()));
+        voPage.setTotal((long) reconVolDetailList.size());
+        voPage.setPageNum(Long.valueOf(reqDTO.getPageNum()));
+        voPage.setPageSize(Long.valueOf(reqDTO.getPageSize()));
+        List<ReconLoadpointCompareVO> collect = reconVolDetailList.stream().map(this::buildLoadpointCompareVO).collect(Collectors.toList());
+        int start = (reqDTO.getPageNum() - 1) * reqDTO.getPageSize();
+        if (start < 0 || start > reconVolDetailList.size()) {
+            voPage.setRecords(new ArrayList<>());
+            return voPage;
+        }
+        int end = Math.min(start + reqDTO.getPageSize(), reconVolDetailList.size());
+        voPage.setRecords(collect.subList(start, end));
         return voPage;
     }
 
@@ -181,7 +185,17 @@ public class ReconQueryServiceImpl implements ReconQueryService {
         voPage.setTotal(resultPage.getTotal());
         voPage.setPageNum(resultPage.getCurrent());
         voPage.setPageSize(resultPage.getSize());
-        voPage.setRecords(resultPage.getRecords().stream().map(this::buildSwitchCompareVO).collect(Collectors.toList()));
+        List<FhzgReconSwitchOp> switchOpsList = reconSwitchOpMapper.selectList(
+                new LambdaQueryWrapper<FhzgReconSwitchOp>()
+                        .eq(FhzgReconSwitchOp::getResultId, reqDTO.getId())
+                        .orderByAsc(FhzgReconSwitchOp::getOpNo));
+        Map<String, String> switchMap = new HashMap<>();
+        switchOpsList.forEach(i -> {
+            switchMap.put(i.getBreakerId(), i.getName());
+        });
+        List<ReconSwitchCompareVO> collect = resultPage.getRecords().stream().map(this::buildSwitchCompareVO).collect(Collectors.toList());
+        collect.forEach(i -> i.setSwitchName(switchMap.get(i.getPsrID())));
+        voPage.setRecords(collect);
         return voPage;
     }
 
@@ -273,6 +287,7 @@ public class ReconQueryServiceImpl implements ReconQueryService {
         vo.setSeqNo(seq.getOpNo());
         vo.setSwitchId(seq.getBreakerId());
         vo.setSwitchName(seq.getName());
+        vo.setOperationType(convertOperationType(seq.getOperationType()));
         vo.setIsThreeRemotely(isThreeRemotely(seq.getAutoType()));
         return vo;
     }
@@ -304,13 +319,16 @@ public class ReconQueryServiceImpl implements ReconQueryService {
         vo.setLowVoltageAfter(detail.getAfterUlv());
         vo.setActivePowerBefore(detail.getBeforeP());
         vo.setReactivePowerBefore(detail.getBeforeQ());
+        vo.setVoltageChange(detail.getAfterU().subtract(detail.getBeforeU()).abs());
+        vo.setIsOverLimitBefore(isOverLimit(detail.getBeforeU()));
+        vo.setIsOverLimitAfter(isOverLimit(detail.getAfterU()));
         return vo;
     }
 
     private ReconSwitchCompareVO buildSwitchCompareVO(FhzgReconSwitchResultDetail detail) {
         ReconSwitchCompareVO vo = new ReconSwitchCompareVO();
         vo.setDetailNo(detail.getDetailNo());
-        vo.setSwitchName(detail.getPsrId());
+        vo.setPsrID(detail.getPsrId());
         vo.setAutoType(convertAutoType(detail.getAutoType()));
         vo.setStateChange(buildStateChange(detail.getBeforeState(), detail.getAfterState()));
         vo.setCurrentBefore(detail.getBeforeI());
@@ -369,6 +387,15 @@ public class ReconQueryServiceImpl implements ReconQueryService {
         return LoadType;
     }
 
+    private Integer isOverLimit(BigDecimal vol) {
+        if (vol.compareTo(new BigDecimal("9.3")) < 0) {
+            return 1;
+        } else if (vol.compareTo(new BigDecimal("10.7")) > 0) {
+            return 2;
+        }
+        return 0;
+    }
+
     /** 判断是否三遥开关 */
     private Boolean isThreeRemotely(String autoType) {
         return "auto".equals(autoType);

+ 21 - 0
services/load-transfer-bf/src/main/resources/mapper/FhzgReconVolDetailMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.hdkj.lt.bf.mapper.FhzgReconVolDetailMapper">
+
+
+    <select id="getLoadListbySpecRule" resultType="com.hdkj.lt.modle.po.FhzgReconVolDetail">
+        select * from (
+        select *
+        from fhzg_recon_vol_detail
+        where result_id = #{id}
+        and (before_u > 10.7 or before_u &lt; 9.3
+        or after_u > 10.7 or after_u &lt; 9.3)
+        union
+        select *
+        from fhzg_recon_vol_detail
+        where result_id = #{id}
+        and (before_u &lt; 10.7 or before_u > 9.3
+        or after_u &lt; 10.7 or after_u > 9.3)
+        order by abs(after_u-before_u)) a limit 10
+    </select>
+</mapper>