Selaa lähdekoodia

运行调优方案总览指标优化

liuaini 2 päivää sitten
vanhempi
sitoutus
9ffc4cb5bf

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

@@ -13,6 +13,12 @@ public class ReconFeederCompareVO {
     /** 馈线序号 */
     private Integer feederNo;
 
+    /** 馈线id */
+    private String psrId;
+
+    /** 出线开关ID */
+    private String startSwitchId;
+
     /** 馈线名称 */
     private String feederName;
 

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

@@ -1,6 +1,7 @@
 package com.hdkj.lt.bf.entity.vo;
 
 import lombok.Data;
+import org.springframework.format.annotation.NumberFormat;
 
 import java.math.BigDecimal;
 
@@ -32,15 +33,19 @@ public class ReconSchemeVO {
     private Integer switchOpCount;
 
     /** 重构前健康度 */
+    @NumberFormat(pattern = "#.##")
     private BigDecimal healthScoreBefore;
 
     /** 重构后健康度 */
+    @NumberFormat(pattern = "#.##")
     private BigDecimal healthScoreAfter;
 
     /** 重构前最大负载率(%) */
+    @NumberFormat(pattern = "#.##")
     private BigDecimal maxLoadingPctBefore;
 
     /** 重构后最大负载率(%) */
+    @NumberFormat(pattern = "#.##")
     private BigDecimal maxLoadingPctAfter;
 
     /** 重构前电压越限节点数 */
@@ -50,9 +55,11 @@ public class ReconSchemeVO {
     private Integer voltageOverLimitCountAfter;
 
     /** 重构前总线损(MW) */
+    @NumberFormat(pattern = "#.####")
     private BigDecimal totalLossMwBefore;
 
     /** 重构后总线损(MW) */
+    @NumberFormat(pattern = "#.####")
     private BigDecimal totalLossMwAfter;
 
     /** 负载详细指标 */
@@ -70,8 +77,10 @@ public class ReconSchemeVO {
     @Data
     public static class DetailLoading {
         /** 重构前平均负载率(%) */
+        @NumberFormat(pattern = "#.##")
         private BigDecimal avgLoadingPctBefore;
         /** 重构后平均负载率(%) */
+        @NumberFormat(pattern = "#.##")
         private BigDecimal avgLoadingPctAfter;
         /** 重构前重过载线路数 */
         private Integer overLoadLineCountBefore;
@@ -86,24 +95,30 @@ public class ReconSchemeVO {
         /** 重构后越上限节点数 */
         private Integer overMaxCountAfter;
         /** 最高电压(pu) */
+        @NumberFormat(pattern = "#.##")
         private BigDecimal maxVoltagePu;
         /** 重构前越下限节点数 */
         private Integer underMinCountBefore;
         /** 重构后越下限节点数 */
         private Integer underMinCountAfter;
         /** 最低电压(pu) */
+        @NumberFormat(pattern = "#.##")
         private BigDecimal minVoltagePu;
     }
 
     @Data
     public static class DetailLoss {
         /** 重构前线路损耗(MW) */
+        @NumberFormat(pattern = "#.####")
         private BigDecimal lineLossMwBefore;
         /** 重构后线路损耗(MW) */
+        @NumberFormat(pattern = "#.####")
         private BigDecimal lineLossMwAfter;
         /** 重构前变压器损耗(MW) */
+        @NumberFormat(pattern = "#.####")
         private BigDecimal trafoLossMwBefore;
         /** 重构后变压器损耗(MW) */
+        @NumberFormat(pattern = "#.####")
         private BigDecimal trafoLossMwAfter;
     }
 

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

@@ -14,7 +14,7 @@ public class ReconSwitchCompareVO {
     private Integer detailNo;
 
     /** 开关id */
-    private String psrID;
+    private String psrId;
 
     /** 开关名称 */
     private String switchName;

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

@@ -6,13 +6,16 @@ import com.hdkj.hussar.ApiResponse;
 import com.hdkj.lt.base.constants.DictConstants;
 import com.hdkj.lt.base.exception.BusinessException;
 import com.hdkj.lt.base.model.response.PageVO;
+import com.hdkj.lt.bf.entity.TJxzXl;
 import com.hdkj.lt.bf.entity.dto.ReconDetailReqDTO;
 import com.hdkj.lt.bf.entity.dto.ReconListReqDTO;
 import com.hdkj.lt.bf.entity.dto.ReconPageReqDTO;
 import com.hdkj.lt.bf.entity.vo.*;
 import com.hdkj.lt.bf.mapper.*;
 import com.hdkj.lt.bf.service.ReconQueryService;
+import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
 import com.hdkj.lt.core.bizms.modle.po.FeederTopo;
+import com.hdkj.lt.core.sys.service.DwdShbDsFeederBaseService;
 import com.hdkj.lt.modle.po.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +48,9 @@ public class ReconQueryServiceImpl implements ReconQueryService {
     private FhzgReconSwitchResultDetailMapper reconSwitchResultDetailMapper;
     @Autowired
     private FeederTopoMapper feederTopoMapper;
+    @Autowired
+    private DwdShbDsFeederBaseService dwdShbDsFeederBaseService;
+
 
 
     @Override
@@ -181,11 +187,26 @@ public class ReconQueryServiceImpl implements ReconQueryService {
                         .orderByAsc(FhzgReconFeederResult::getFeederNo)
         );
 
+        List<String> xlIds = resultPage.getRecords().stream().map(FhzgReconFeederResult::getPsrId).collect(Collectors.toList());
+        // 从topo表批量查询每个线路的出线开关
+        List<FeederTopo> topoList = feederTopoMapper.selectList(new LambdaQueryWrapper<FeederTopo>()
+                .in(FeederTopo::getFeeder, xlIds)
+                .eq(FeederTopo::getIsStartKg, "1"));
+        Map<String, FeederTopo> feederStartSwitchIdMap = topoList.stream()
+                .collect(Collectors.toMap(FeederTopo::getFeeder, t -> t, (a, b) -> a));
+
         PageVO<ReconFeederCompareVO> voPage = new PageVO<>();
         voPage.setTotal(resultPage.getTotal());
         voPage.setPageNum(resultPage.getCurrent());
         voPage.setPageSize(resultPage.getSize());
-        voPage.setRecords(resultPage.getRecords().stream().map(this::buildFeederCompareVO).collect(Collectors.toList()));
+        List<ReconFeederCompareVO> collect = resultPage.getRecords().stream().map(this::buildFeederCompareVO).collect(Collectors.toList());
+        collect.forEach(i -> {
+            FeederTopo topo = feederStartSwitchIdMap.get(i.getPsrId());
+            if (topo != null) {
+                i.setStartSwitchId(topo.getStartKgId());
+            }
+        });
+        voPage.setRecords(collect);
         return voPage;
     }
 
@@ -235,7 +256,7 @@ public class ReconQueryServiceImpl implements ReconQueryService {
             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())));
+        collect.forEach(i -> i.setSwitchName(switchMap.get(i.getPsrId())));
         voPage.setRecords(collect);
         return voPage;
     }
@@ -336,6 +357,7 @@ public class ReconQueryServiceImpl implements ReconQueryService {
     private ReconFeederCompareVO buildFeederCompareVO(FhzgReconFeederResult feeder) {
         ReconFeederCompareVO vo = new ReconFeederCompareVO();
         vo.setFeederNo(feeder.getFeederNo());
+        vo.setPsrId(feeder.getPsrId());
         vo.setFeederName(feeder.getName());
         vo.setFlowType(determineFlowType(feeder));
         vo.setRatedCurrent(feeder.getRateCurrent());
@@ -369,7 +391,7 @@ public class ReconQueryServiceImpl implements ReconQueryService {
     private ReconSwitchCompareVO buildSwitchCompareVO(FhzgReconSwitchResultDetail detail) {
         ReconSwitchCompareVO vo = new ReconSwitchCompareVO();
         vo.setDetailNo(detail.getDetailNo());
-        vo.setPsrID(detail.getPsrId());
+        vo.setPsrId(detail.getPsrId());
         vo.setAutoType(convertAutoType(detail.getAutoType()));
         vo.setStateChange(buildStateChange(detail.getBeforeState(), detail.getAfterState()));
         vo.setCurrentBefore(detail.getBeforeI());