raojiang 1 місяць тому
батько
коміт
0ebe60e448

+ 13 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/request/MaintOrgRequest.java

@@ -0,0 +1,13 @@
+package com.hdkj.fhzg.optimization.request;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2026/6/16 17:25
+ * @description
+ */
+@Data
+public class MaintOrgRequest {
+    private String maintOrg;
+}

+ 23 - 10
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/FeederGroupApplication.java

@@ -8,7 +8,9 @@ import com.hdkj.lt.bf.constants.OptimizationConstants;
 import com.hdkj.lt.bf.entity.TJxz;
 import com.hdkj.lt.bf.entity.TJxzXl;
 import com.hdkj.lt.bf.entity.convert.EntityToVOConvertor;
-import com.hdkj.lt.bf.entity.vo.*;
+import com.hdkj.lt.bf.entity.vo.BreakerAreaVO;
+import com.hdkj.lt.bf.entity.vo.FeederDeviceVO;
+import com.hdkj.lt.bf.entity.vo.XlRelVO;
 import com.hdkj.lt.bf.mapper.FhzgGridOperationAbnormalityMapper;
 import com.hdkj.lt.bf.mapper.TJxzXlMapper;
 import com.hdkj.lt.bf.service.TJxzService;
@@ -55,8 +57,12 @@ public class FeederGroupApplication {
     public List<FeederGroupTreeNode> getFeederGroupTree() {
         Boolean exists = redisRepository.exists(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE);
         if (!exists) {
-            //目前仅接入长阳县
-            List<DwdShbDsFeederBase> feederList = dwdShbDsFeederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
+            //目前仅接入长阳县 洪湖 秭归
+            List<String> maintOrgList = Arrays.asList("60FDC66B3FC143DC9C39001215DDCC61", "54C4BBBB8FE4428E96B6AE12247C4DD4", "BA6481B8F34143FDA7E1C35A76846911");
+            List<DwdShbDsFeederBase> feederList = dwdShbDsFeederBaseService.lambdaQuery().eq(DwdShbDsFeederBase::getPsrState, "20")
+                    .eq(DwdShbDsFeederBase::getPubPrivFlag, "0")
+                    .in(DwdShbDsFeederBase::getMaintOrg, maintOrgList).list();
+//            List<DwdShbDsFeederBase> feederList = dwdShbDsFeederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
             List<FeederGroupTreeNode> feederGroupTree = buildFeederGroupTree(feederList);
             redisRepository.setExpire(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE, feederGroupTree,6, TimeUnit.HOURS);
             return feederGroupTree;
@@ -107,10 +113,12 @@ public class FeederGroupApplication {
 
             TJxzXl tJxzXl = jxzXlMap.get(row.getPsrId());
             FeederGroupTreeNode.FileType fileType = new FeederGroupTreeNode.FileType().setFileId(mappingFileMap.get(row.getPsrId())).setFileType("1");
-            FeederGroupTreeNode.FileType fileType1 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getSwitchSectionFileId()).setFileType("2");
-            FeederGroupTreeNode.FileType fileType2 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getLoadGroupFileId()).setFileType("3");
-            FeederGroupTreeNode.FileType fileType3 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getPrimaryFileId()).setFileType("4");
-            FeederGroupTreeNode.FileType fileType4 = new FeederGroupTreeNode.FileType().setFileId(jxzFileMap.get(jxzXlMap.get(row.getPsrId()).getJxzId())).setFileType("5");
+
+            FeederGroupTreeNode.FileType fileType1 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl == null ? null : tJxzXl.getSwitchSectionFileId()).setFileType("2");
+            FeederGroupTreeNode.FileType fileType2 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl == null ? null : tJxzXl.getLoadGroupFileId()).setFileType("3");
+            FeederGroupTreeNode.FileType fileType3 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl == null ? null : tJxzXl.getPrimaryFileId()).setFileType("4");
+            FeederGroupTreeNode.FileType fileType4 = new FeederGroupTreeNode.FileType().setFileId(jxzFileMap.get(tJxzXl == null ? null : tJxzXl.getJxzId())).setFileType("5");
+
             List<FeederGroupTreeNode.FileType> fileTypeList = new ArrayList<>();
             fileTypeList.add(fileType);
             fileTypeList.add(fileType1);
@@ -129,9 +137,14 @@ public class FeederGroupApplication {
 
     public List<XlRelVO> getFeederGroupContactSwitchList(String feederId) {
         TJxzXl jxzXl = jxzXlService.getOne(new LambdaQueryWrapper<TJxzXl>().eq(TJxzXl::getXlid, feederId));
-        List<TJxzXl> list = jxzXlService.list(new LambdaQueryWrapper<TJxzXl>().eq(TJxzXl::getJxzId, jxzXl.getJxzId()));
-        List<String> xlIds = list.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
-        List<XlRel> xlRelList = xlRelService.list(new LambdaQueryWrapper<XlRel>().in(XlRel::getXlIdOne, xlIds));
+        List<XlRel> xlRelList = new ArrayList<>();
+        if (jxzXl.getJxzId() != null) {
+            List<TJxzXl> list = jxzXlService.list(new LambdaQueryWrapper<TJxzXl>().eq(TJxzXl::getJxzId, jxzXl.getJxzId()));
+            List<String> xlIds = list.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
+            if (!xlIds.isEmpty()) {
+                xlRelList = xlRelService.list(new LambdaQueryWrapper<XlRel>().in(XlRel::getXlIdOne, xlIds));
+            }
+        }
         return EntityToVOConvertor.INSTANCE.toXlRelVOList(xlRelList);
     }
 

+ 16 - 127
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/OptimizationApplication.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.hdkj.fhzg.optimization.response.OperationMetrics;
 import com.hdkj.fhzg.optimization.response.StationGridMetrics;
 import com.hdkj.fhzg.optimization.response.StationSvgResponse;
+import com.hdkj.lt.bf.entity.FhzgOptimizationFeederMetrics;
 import com.hdkj.lt.bf.entity.convert.EntityToVOConvertor;
+import com.hdkj.lt.bf.service.FhzgOptimizationFeederMetricsService;
 import com.hdkj.lt.bf.service.IXlRelService;
 import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
 import com.hdkj.lt.core.bizms.modle.po.XlRel;
@@ -32,11 +34,14 @@ public class OptimizationApplication {
 
     private final IXlRelService xlRelService;
     private final DwdShbDsFeederBaseService feederBaseService;
+    private final FhzgOptimizationFeederMetricsService feederMetricsService;
 
-    public List<StationSvgResponse> getStationSvg() {
-        List<DwdShbDsFeederBase> feederListByMaintOrg = feederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
-        Map<String, String> stationMap = feederListByMaintOrg.stream().collect(Collectors.toMap(DwdShbDsFeederBase::getStartStationName, DwdShbDsFeederBase::getStartStation, (i, j) -> i));
-        List<String> feederIdList = feederListByMaintOrg.stream().map(DwdShbDsFeederBase::getPsrId).collect(Collectors.toList());
+    public List<StationSvgResponse> getStationSvg(String maintOrg) {
+        List<DwdShbDsFeederBase> feederList = feederBaseService.lambdaQuery().eq(DwdShbDsFeederBase::getPsrState, "20")
+                .eq(DwdShbDsFeederBase::getPubPrivFlag, "0")
+                .eq(DwdShbDsFeederBase::getMaintOrg, maintOrg).list();
+        Map<String, String> stationMap = feederList.stream().collect(Collectors.toMap(DwdShbDsFeederBase::getStartStationName, DwdShbDsFeederBase::getStartStation, (i, j) -> i));
+        List<String> feederIdList = feederList.stream().map(DwdShbDsFeederBase::getPsrId).collect(Collectors.toList());
         //有联络的线路
         List<XlRel> contactFeederlist = xlRelService.list(new LambdaQueryWrapper<XlRel>().in(XlRel::getXlIdOne, feederIdList));
         for (XlRel xlRel : contactFeederlist) {
@@ -45,7 +50,7 @@ public class OptimizationApplication {
         }
         Set<String> contactFeederIdlist = contactFeederlist.stream().map(XlRel::getXlIdOne).collect(Collectors.toSet());
         //单辐射线路
-        List<DwdShbDsFeederBase> collect = feederListByMaintOrg.stream().filter(i -> !contactFeederIdlist.contains(i.getPsrId())).collect(Collectors.toList());
+        List<DwdShbDsFeederBase> collect = feederList.stream().filter(i -> !contactFeederIdlist.contains(i.getPsrId())).collect(Collectors.toList());
         for (DwdShbDsFeederBase dwdShbDsFeederBase : collect) {
             XlRel xlRel = new XlRel();
             xlRel.setId(String.valueOf(IdUtil.getSnowflakeNextId()));
@@ -60,136 +65,20 @@ public class OptimizationApplication {
 
 
     public OperationMetrics getStationOperationMetrics(String stationId) {
-        String json = "{\n" +
-                "  \"powerReliability\": {\n" +
-                "    \"totalScore\": 69,\n" +
-                "    \"theoreticalReliability\": 65,\n" +
-                "    \"lineConnectionRate\": 65,\n" +
-                "    \"lineN1PassRate\": 5,\n" +
-                "    \"mainTransformerNFailCount\": 1,\n" +
-                "    \"feederNFailCount\": 1\n" +
-                "  },\n" +
-                "  \"voltageQuality\": {\n" +
-                "    \"totalScore\": 75,\n" +
-                "    \"voltageViolationNodeCount\": 2,\n" +
-                "    \"voltageDeviationExceedIecCount\": 2\n" +
-                "  },\n" +
-                "  \"powerSupplyCapacity\": {\n" +
-                "    \"totalScore\": 96,\n" +
-                "    \"regionalMaxLoadRate\": 80,\n" +
-                "    \"regionalAvgLoadRate\": 80,\n" +
-                "    \"overloadLineCount\": 5,\n" +
-                "    \"lineLossComplianceRate\": 80,\n" +
-                "    \"lineLossNonComplianceCount\": 27,\n" +
-                "    \"powerFactorNonComplianceCount\": 27\n" +
-                "  },\n" +
-                "  \"gridStructure\": {\n" +
-                "    \"totalScore\": 78,\n" +
-                "    \"standardizedGrid\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 92\n" +
-                "    },\n" +
-                "    \"unreasonableConnection\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 90\n" +
-                "    },\n" +
-                "    \"capacityAbnormal\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 97\n" +
-                "    },\n" +
-                "    \"unreasonableStructure\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 95\n" +
-                "    }\n" +
-                "  }\n" +
-                "}";
+        FhzgOptimizationFeederMetrics byId = feederMetricsService.getById(1);
+        String json = byId.getJsonResult();
         return JSON.parseObject(json, OperationMetrics.class);
     }
 
     public OperationMetrics getFeederOperationMetrics(String feederId) {
-        String json = "{\n" +
-                "  \"powerReliability\": {\n" +
-                "    \"totalScore\": 69,\n" +
-                "    \"theoreticalReliability\": 65,\n" +
-                "    \"lineConnectionRate\": 65,\n" +
-                "    \"lineN1PassRate\": 5,\n" +
-                "    \"feederNFailCount\": 1\n" +
-                "  },\n" +
-                "  \"voltageQuality\": {\n" +
-                "    \"totalScore\": 75,\n" +
-                "    \"voltageViolationNodeCount\": 2,\n" +
-                "    \"voltageDeviationExceedIecCount\": 2\n" +
-                "  },\n" +
-                "  \"powerSupplyCapacity\": {\n" +
-                "    \"totalScore\": 96,\n" +
-                "    \"regionalMaxLoadRate\": 80,\n" +
-                "    \"regionalAvgLoadRate\": 80,\n" +
-                "    \"overloadLineCount\": 5,\n" +
-                "    \"lineLossComplianceRate\": 80,\n" +
-                "    \"lineLossNonComplianceCount\": 27,\n" +
-                "    \"powerFactorNonComplianceCount\": 27\n" +
-                "  },\n" +
-                "  \"gridStructure\": {\n" +
-                "    \"totalScore\": 78,\n" +
-                "    \"standardizedGrid\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 92\n" +
-                "    },\n" +
-                "    \"unreasonableConnection\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 90\n" +
-                "    },\n" +
-                "    \"capacityAbnormal\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 97\n" +
-                "    },\n" +
-                "    \"unreasonableStructure\": {\n" +
-                "      \"issueCount\": 2,\n" +
-                "      \"score\": 95\n" +
-                "    }\n" +
-                "  }\n" +
-                "}";
+        FhzgOptimizationFeederMetrics byId = feederMetricsService.getById(2);
+        String json = byId.getJsonResult();
         return JSON.parseObject(json, OperationMetrics.class);
     }
 
     public StationGridMetrics getStationGridMetrics(String stationId) {
-        String json = "{\n" +
-                "  \"operationStatusAssessment\": {\n" +
-                "    \"totalScore\": 69,\n" +
-                "    \"lineN1PassRate\": 5,\n" +
-                "    \"mainTransformerNFailCount\": 1,\n" +
-                "    \"feederNFailCount\": 1\n" +
-                "  },\n" +
-                "  \"standardizedGrid\": {\n" +
-                "    \"totalScore\": 69,\n" +
-                "    \"connectionStandardizationRate\": 5,\n" +
-                "    \"mainSectionStandardizationRate\": 1,\n" +
-                "    \"excessivePowerSupplyRadiusCount\": 1,\n" +
-                "    \"unreasonableSegmentCount\": 5,\n" +
-                "    \"distributionAutomationInsufficientCount\": 1\n" +
-                "  },\n" +
-                "  \"unreasonableConnection\": {\n" +
-                "    \"totalScore\": 75,\n" +
-                "    \"lineNoConnectionRate\": 5,\n" +
-                "    \"noInterstationConnectionCount\": 1,\n" +
-                "    \"unreasonableConnectionPointCount\": 1,\n" +
-                "    \"feederSameBusConnectionCount\": 2,\n" +
-                "    \"excessiveConnectionPointCount\": 2\n" +
-                "  },\n" +
-                "  \"capacityAbnormal\": {\n" +
-                "    \"totalScore\": 96,\n" +
-                "    \"lineExceedStandardCapacityRate\": 80,\n" +
-                "    \"loadGroupCapacityAbnormalRate\": 80\n" +
-                "  },\n" +
-                "  \"unreasonableStructure\": {\n" +
-                "    \"totalScore\": 75,\n" +
-                "    \"lineSingleRadiationRate\": 5,\n" +
-                "    \"feederMainLampHangingCount\": 1,\n" +
-                "    \"feederLargeBranchCount\": 1,\n" +
-                "    \"mainChokePointCount\": 2,\n" +
-                "    \"overlengthFeederCount\": 2\n" +
-                "  }\n" +
-                "}";
+        FhzgOptimizationFeederMetrics byId = feederMetricsService.getById(3);
+        String json = byId.getJsonResult();
         return JSON.parseObject(json, StationGridMetrics.class);
     }
 }

+ 11 - 18
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/OptimizationController.java

@@ -1,5 +1,6 @@
 package com.hdkj.lt.bf.controller.optimization;
 
+import com.hdkj.fhzg.optimization.request.MaintOrgRequest;
 import com.hdkj.fhzg.optimization.request.MetricsRequest;
 import com.hdkj.fhzg.optimization.response.OperationMetrics;
 import com.hdkj.fhzg.optimization.response.StationGridMetrics;
@@ -8,6 +9,7 @@ import com.hdkj.hussar.ApiResponse;
 import com.hdkj.lt.bf.application.OptimizationApplication;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,30 +32,21 @@ public class OptimizationController {
 
 
     /**
-     * 获取站间联络图运行优化指标数据
+     * 获取运行优化指标数据
      *
      * @return
      */
     @PostMapping("/getStationOperationMetrics")
     public ApiResponse<OperationMetrics> getStationOperationMetrics(@RequestBody MetricsRequest request) {
-        OperationMetrics stationMetrics = optimizationApplication.getStationOperationMetrics(request.getMaintOrgId());
-        return ApiResponse.success(stationMetrics);
-    }
-
-
-    /**
-     * 获取单线运行优化指标数据
-     *
-     * @return
-     */
-    @PostMapping("/getFeederOperationMetrics")
-    public ApiResponse<OperationMetrics> getFeederOperationMetrics(@RequestBody MetricsRequest request) {
-        OperationMetrics feederMetrics = optimizationApplication.getFeederOperationMetrics(request.getFeederId());
-        return ApiResponse.success(feederMetrics);
+        if (StringUtils.isNotBlank(request.getMaintOrgId())) {
+            return ApiResponse.success(optimizationApplication.getStationOperationMetrics(request.getMaintOrgId()));
+        } else {
+            return ApiResponse.success(optimizationApplication.getFeederOperationMetrics(request.getFeederId()));
+        }
     }
 
     /**
-     * 获取站间联络图网架优化指标数据
+     * 获取网架优化指标数据
      *
      * @return
      */
@@ -72,8 +65,8 @@ public class OptimizationController {
      * @return
      */
     @PostMapping("/getStationSvg")
-    public ApiResponse<List<StationSvgResponse>> getStationSvg() {
-        return ApiResponse.success(optimizationApplication.getStationSvg());
+    public ApiResponse<List<StationSvgResponse>> getStationSvg(@RequestBody MaintOrgRequest request) {
+        return ApiResponse.success(optimizationApplication.getStationSvg(request.getMaintOrg()));
     }
 
 

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

@@ -171,6 +171,12 @@ public class FhzgOptimizationFeederMetrics implements Serializable {
     @TableField(value = "line_power_supply_radius")
     private BigDecimal linePowerSupplyRadius;
 
+    /**
+     * 0603: 指标数据确定不了,暂时用字符串存储
+     */
+    @TableField(value = "json_result")
+    private String jsonResult;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
services/load-transfer-bf/src/main/resources/mapper/FhzgGridOperationAbnormalityMapper.xml

@@ -64,7 +64,7 @@
             from t_feeder_topo t join res_tab p on t.start_kg_id = p.psr_id and t.feeder = p.feeder
             where t.psr_type in <foreach collection='kgPsrTypes' item='item' open="('PD_31100000'," separator=',' close=')'>#{item}</foreach>
           ) select bdg_line_id after_feeder, psr_id, name psr_name, psr_type, feeder, switch_id, null end_switch_id, switching_seq
-          from res_tab where psr_id not in ('-', kg_id)) t
+          from res_tab where psr_id not in ('-')) t
     </select>
 
     <select id="getDefaultBreakerAreaInfo" resultType="com.hdkj.lt.bf.entity.vo.FeederDeviceVO">