Kaynağa Gözat

站间联络图 单辐射线路

raojiang 2 ay önce
ebeveyn
işleme
5f15ea2a9a

+ 1 - 1
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederMetrics.java

@@ -101,7 +101,7 @@ public class FeederMetrics {
         /**
          * 停电配变数
          */
-        private BigDecimal outageTransformerCount;
+        private Integer outageTransformerCount;
 
         /**
          * 理论可靠性

+ 62 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/StationSvgResponse.java

@@ -0,0 +1,62 @@
+package com.hdkj.fhzg.optimization.response;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2026/5/26 17:37
+ * @description
+ */
+@Data
+public class StationSvgResponse {
+    /**
+     * 线路1所属变电站1ID
+     */
+    private String bdzIdOne;
+
+    /**
+     * 线路1所属变电站1名称
+     */
+    private String bdzNameOne;
+
+    /**
+     * 线路2所属变电站2ID
+     */
+    private String bdzIdTwo;
+
+    /**
+     * 线路2所属变电站2名称
+     */
+    private String bdzNameTwo;
+
+    /**
+     * 线路start
+     */
+    private String xlIdOne;
+
+    /**
+     * 线路start名称
+     */
+    private String xlNameOne;
+
+    /**
+     * 线路end
+     */
+    private String xlIdTwo;
+
+    /**
+     * 线路end名称
+     */
+    private String xlNameTwo;
+
+    /**
+     * 联络设备id
+     */
+    private String llsbId;
+
+    /**
+     * 联络设备名称
+     */
+    private String llsbName;
+
+}

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

@@ -29,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -57,7 +58,7 @@ public class FeederGroupApplication {
             //目前仅接入长阳县
             List<DwdShbDsFeederBase> feederList = dwdShbDsFeederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
             List<FeederGroupTreeNode> feederGroupTree = buildFeederGroupTree(feederList);
-            redisRepository.set(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE, feederGroupTree);
+            redisRepository.setExpire(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE, feederGroupTree,6, TimeUnit.HOURS);
             return feederGroupTree;
         }
         return (List<FeederGroupTreeNode>) redisRepository.get(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE);

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

@@ -1,9 +1,21 @@
 package com.hdkj.lt.bf.application;
 
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hdkj.fhzg.optimization.response.StationSvgResponse;
+import com.hdkj.lt.bf.entity.convert.EntityToVOConvertor;
+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;
+import com.hdkj.lt.core.sys.service.DwdShbDsFeederBaseService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
 /**
  * @author rj
  * @date 2026/5/25 15:36
@@ -14,6 +26,27 @@ import org.springframework.stereotype.Component;
 @RequiredArgsConstructor
 public class OptimizationApplication {
 
+    private final IXlRelService xlRelService;
+    private final DwdShbDsFeederBaseService feederBaseService;
 
 
+    public List<StationSvgResponse> getStationSvg() {
+        List<DwdShbDsFeederBase> feederListByMaintOrg = feederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
+        List<String> feederIdList = feederListByMaintOrg.stream().map(DwdShbDsFeederBase::getPsrId).collect(Collectors.toList());
+        //有联络的线路
+        List<XlRel> contactFeederlist = xlRelService.list(new LambdaQueryWrapper<XlRel>().in(XlRel::getXlIdOne, feederIdList));
+        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());
+        for (DwdShbDsFeederBase dwdShbDsFeederBase : collect) {
+            XlRel xlRel = new XlRel();
+            xlRel.setId(String.valueOf(IdUtil.getSnowflakeNextId()));
+            xlRel.setXlIdOne(dwdShbDsFeederBase.getPsrId());
+            xlRel.setXlNameOne(dwdShbDsFeederBase.getName());
+            xlRel.setBdzIdOne(dwdShbDsFeederBase.getStartStation());
+            xlRel.setBdzNameOne(dwdShbDsFeederBase.getStartStationName());
+            contactFeederlist.add(xlRel);
+        }
+        return EntityToVOConvertor.INSTANCE.toStationSvgResponseList(contactFeederlist);
+    }
 }

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

@@ -5,9 +5,9 @@ import com.hdkj.fhzg.optimization.request.FeederGroupRequest;
 import com.hdkj.fhzg.optimization.request.FeederMetricsRequest;
 import com.hdkj.fhzg.optimization.response.FeederGroupMetrics;
 import com.hdkj.fhzg.optimization.response.FeederMetrics;
+import com.hdkj.fhzg.optimization.response.StationSvgResponse;
 import com.hdkj.hussar.ApiResponse;
 import com.hdkj.lt.bf.application.OptimizationApplication;
-import com.hdkj.lt.bf.entity.vo.XlRelVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -127,6 +127,15 @@ public class OptimizationController {
         return ApiResponse.success(feederMetrics);
     }
 
+    /**
+     * 获取站间联络图渲染数据
+     *
+     * @return
+     */
+    @PostMapping("/getStationSvg")
+    public ApiResponse<List<StationSvgResponse>> getStationSvg() {
+        return ApiResponse.success(optimizationApplication.getStationSvg());
+    }
 
 
 

+ 5 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/convert/EntityToVOConvertor.java

@@ -1,5 +1,6 @@
 package com.hdkj.lt.bf.entity.convert;
 
+import com.hdkj.fhzg.optimization.response.StationSvgResponse;
 import com.hdkj.lt.bf.entity.FhzgProblemFeedback;
 import com.hdkj.lt.bf.entity.FhzgProblemFeedbackAttachment;
 import com.hdkj.lt.bf.entity.dto.AttachmentDTO;
@@ -73,4 +74,8 @@ public interface EntityToVOConvertor {
     XlRelVO toXlRelVO(XlRel xlRel);
 
     List<XlRelVO> toXlRelVOList(List<XlRel> list);
+
+    StationSvgResponse toStationSvgResponse(XlRel xlRel);
+
+    List<StationSvgResponse> toStationSvgResponseList(List<XlRel> list);
 }