Bladeren bron

通过接线组ID查询线路开关段(所属变电站分组)接口

liuaini 2 maanden geleden
bovenliggende
commit
1e0b8c040a

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

@@ -10,6 +10,7 @@ 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.mapper.FhzgGridOperationAbnormalityMapper;
+import com.hdkj.lt.bf.mapper.TJxzXlMapper;
 import com.hdkj.lt.bf.service.TJxzService;
 import com.hdkj.lt.bf.service.TJxzXlService;
 import com.hdkj.lt.bf.service.impl.XlRelServiceImpl;
@@ -42,6 +43,7 @@ public class FeederGroupApplication {
 
     private final TJxzService jxzService;
     private final TJxzXlService jxzXlService;
+    private final TJxzXlMapper tJxzXlMapper;
     private final FhzgDistMappingFileMapper distMappingFileMapper;
     private final XlRelServiceImpl xlRelService;
     private final RedisRepository redisRepository;
@@ -134,87 +136,58 @@ public class FeederGroupApplication {
 
     /**
      * 通过接线组ID查询默认态开关段
-     * @param feederGroupId 接线组id
+     * @param feederId 接线组id
      * @return List
      */
-    public List<List<BreakerAreaVO>> getOverviewSwitchByFeederGroupId(String feederGroupId){
+    public List<List<BreakerAreaVO>> getOverviewSwitchByFeederGroupId(String feederId){
         //获取开关类型
         List<String> kgPsrTypes = Arrays.asList(DictConstants.KG_PSR_TYPE.split(","));
         // 根据接线组ID获取线路
-        List<TJxzXl> jxzList = jxzXlService.list(new LambdaQueryWrapper<TJxzXl>().eq(TJxzXl::getJxzId, feederGroupId));
-        List<String> feederIds = jxzList.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
-        //根据线路获取所属变电站
-        LambdaQueryWrapper<DwdShbDsFeederBase> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(DwdShbDsFeederBase::getPsrId, feederIds);
-        List<DwdShbDsFeederBase> list = dwdShbDsFeederBaseService.list(wrapper);
-        Map<String, String> stationMap = list.stream().collect(Collectors.toMap(DwdShbDsFeederBase::getPsrId, DwdShbDsFeederBase::getStartStation));
-        List<BreakerAreaVO> breakerAreaList = Lists.newArrayList();
-        feederIds.forEach(feeder->{
-            Map<String, List<String>> feederSwitchMap = MapUtil.newHashMap();
-            //*ztj ArgTableNameHandler.setArgument(fhzgOrganSuffixMapper.getOrganSuffixByPsrIdOrFeeder(null, feeder));
-            List<FeederDeviceVO> feederDeviceList = fhzgGridOperationAbnormalityMapper.getSwitchInfoWithoutNormal(feeder, kgPsrTypes);
-            Map<String, List<FeederDeviceVO>> collectMap = feederDeviceList.stream().collect(Collectors.groupingBy(FeederDeviceVO::getFeeder));
-            DynamicSvgDirectVO dynamicSvgDirect = fhzgGridOperationAbnormalityMapper.getDistLineDynamicSvgDirectCurrent(feeder);
-            Optional.ofNullable(dynamicSvgDirect).ifPresent(en -> {
-                // 动态表名切换
+        List<TJxzXl> jxzList = tJxzXlMapper.selectJxzXlList(feederId);
+        if(CollectionUtils.size(jxzList) > 0){
+            List<String> feederIds = jxzList.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
+            //根据线路获取所属变电站
+            LambdaQueryWrapper<DwdShbDsFeederBase> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(DwdShbDsFeederBase::getPsrId, feederIds);
+            List<DwdShbDsFeederBase> list = dwdShbDsFeederBaseService.list(wrapper);
+            Map<String, String> stationMap = list.stream().collect(Collectors.toMap(DwdShbDsFeederBase::getPsrId, DwdShbDsFeederBase::getStartStation));
+            List<BreakerAreaVO> breakerAreaList = Lists.newArrayList();
+            feederIds.forEach(feeder->{
+                Map<String, List<String>> feederSwitchMap = MapUtil.newHashMap();
                 //*ztj ArgTableNameHandler.setArgument(fhzgOrganSuffixMapper.getOrganSuffixByPsrIdOrFeeder(null, feeder));
-                List<String> psrIds = en.getKgList().stream().map(FeederSwitchVO::getPsrId).collect(Collectors.toList());
-                // 查询topo数据真实的线路信息,如果是联络开关目前暂时不处理,取原图信息
-                Map<String, List<FeederSwitchVO>> stringMap = Optional.ofNullable(fhzgGridOperationAbnormalityMapper.getFeederSwitchByPsrId(psrIds))
-                        .map(data -> data.stream().collect(Collectors.groupingBy(FeederSwitchVO::getPsrId))).orElse(MapUtil.newHashMap());
-                feederSwitchMap.putAll(en.getKgList().stream()
-                        .peek(data -> {
-                            List<FeederSwitchVO> feederSwitchList = stringMap.get(data.getPsrId());
-                            if (CollectionUtils.size(feederSwitchList) == 1) { // 这里数量为1时表示非联络开关
-                                data.setFeeder(feederSwitchList.get(0).getFeeder());
-                            }
-                        }).collect(Collectors.groupingBy(FeederSwitchVO::getFeeder, Collectors.mapping(FeederSwitchVO::getPsrId, Collectors.toList()))));
+                List<FeederDeviceVO> feederDeviceList = fhzgGridOperationAbnormalityMapper.getSwitchInfoWithoutNormal(feeder, kgPsrTypes);
+                if(CollectionUtils.size(feederDeviceList) > 0){
+                    Map<String, List<FeederDeviceVO>> collectMap = feederDeviceList.stream().collect(Collectors.groupingBy(FeederDeviceVO::getFeeder));
+                    List<String> kgPsrId = feederDeviceList.stream().filter(f -> kgPsrTypes.contains(f.getPsrType())).map(FeederDeviceVO::getPsrId).collect(Collectors.toList());
+                    feederSwitchMap.put(feeder,kgPsrId);
+                    // 返回值处理
+                    String startSwitchId = null;
+                    Optional<FeederDeviceVO> first = feederDeviceList.stream().filter(f -> !StringUtils.equals("-", f.getSwitchId())).findFirst();
+                    if (first.isPresent()) {
+                        startSwitchId = first.get().getSwitchId();
+                    }
+                    List<String> endSwitchList = feederDeviceList.stream()
+                            .map(FeederDeviceVO::getEndSwitchId)
+                            .filter(endSwitchId -> !StringUtils.equals("-", endSwitchId)).collect(Collectors.toList());
+                    List<String> midSwitchList = feederDeviceList.stream()
+                            .map(FeederDeviceVO::getPsrId)
+                            .filter(psrId -> !StringUtils.equals("-", psrId)).collect(Collectors.toList());
+                    // 成图对应的显示开关,需要排除结尾开关和已存在的中间开关
+                    List<String> switchMxList = Optional.ofNullable(feederSwitchMap.get(feeder))
+                            .map(en -> en.stream().filter(s -> !endSwitchList.contains(s) && !midSwitchList.contains(s)).collect(Collectors.toList()))
+                            .orElse(Lists.newArrayList());
+                    BreakerAreaVO breakerArea = new BreakerAreaVO();
+                    breakerArea.setIsFullLine("0").setOppositeLineId(feeder)
+                            .setStartSwitch(startSwitchId)
+                            .setEndSwitch(endSwitchList)
+                            .setMidSwitch(ListUtils.union(midSwitchList, switchMxList));
+                    breakerAreaList.add(breakerArea);
+                }
             });
-            List<String> feederList = feederSwitchMap.keySet().stream()
-                    .filter(strings -> !StringUtils.equals(feeder, strings)).collect(Collectors.toList());
-            if (CollectionUtils.size(feederList) > 0) {
-                // 动态表名切换
-                //*ztj ArgTableNameHandler.setArgument(fhzgOrganSuffixMapper.getOrganSuffixByPsrIdOrFeeder(null, feeder));
-                // 母线转换成线路分组数据
-                Map<String, List<FeederDeviceVO>> feederBusbar = Optional.ofNullable(fhzgGridOperationAbnormalityMapper.getFeederSwitchBusbar(feederList))
-                        .map(e -> e.stream().collect(Collectors.groupingBy(FeederDeviceVO::getFeeder))).orElse(MapUtil.newHashMap());
-                // 开关信息添加母线信息
-                feederSwitchMap.forEach((key, subList) -> {
-                    Optional.ofNullable(feederBusbar.get(key)).ifPresent(en -> subList.addAll(en.stream()
-                            .filter(f -> subList.contains(f.getSwitchId())).map(FeederDeviceVO::getPsrId).collect(Collectors.toList())));
-                });
+            if(CollectionUtils.size(breakerAreaList) > 0){
+                Map<String, List<BreakerAreaVO>> listMap = breakerAreaList.stream().collect(Collectors.groupingBy(ba -> stationMap.get(ba.getOppositeLineId())));
+                return new ArrayList<>(listMap.values());
             }
-            // 返回值处理
-            breakerAreaList.addAll(collectMap.entrySet().stream()
-                    .map(e -> {
-                        List<FeederDeviceVO> feederDevices = e.getValue();
-                        String startSwitchId = null;
-                        Optional<FeederDeviceVO> first = feederDevices.stream().filter(f -> !StringUtils.equals("-", f.getSwitchId())).findFirst();
-                        if (first.isPresent()) {
-                            startSwitchId = first.get().getSwitchId();
-                        }
-                        List<String> endSwitchList = feederDevices.stream()
-                                .map(FeederDeviceVO::getEndSwitchId)
-                                .filter(endSwitchId -> !StringUtils.equals("-", endSwitchId)).collect(Collectors.toList());
-                        List<String> midSwitchList = feederDevices.stream()
-                                .map(FeederDeviceVO::getPsrId)
-                                .filter(psrId -> !StringUtils.equals("-", psrId)).collect(Collectors.toList());
-                        // 成图对应的显示开关,需要排除结尾开关和已存在的中间开关
-                        List<String> switchMxList = Optional.ofNullable(feederSwitchMap.get(e.getKey()))
-                                .map(en -> en.stream().filter(s -> !endSwitchList.contains(s) && !midSwitchList.contains(s)).collect(Collectors.toList()))
-                                .orElse(Lists.newArrayList());
-                        BreakerAreaVO breakerArea = new BreakerAreaVO();
-                        breakerArea.setIsFullLine("0").setOppositeLineId(e.getKey())
-                                .setStartSwitch(startSwitchId)
-                                .setEndSwitch(endSwitchList)
-                                .setMidSwitch(ListUtils.union(midSwitchList, switchMxList));
-                        return breakerArea;
-                    }).collect(Collectors.toList())
-            );
-        });
-        if(CollectionUtils.size(breakerAreaList) > 0){
-            Map<String, List<BreakerAreaVO>> listMap = breakerAreaList.stream().collect(Collectors.groupingBy(ba -> stationMap.get(ba.getOppositeLineId())));
-            return new ArrayList<>(listMap.values());
         }
         return Lists.newArrayList();
     }

+ 4 - 4
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/FeederGroupController.java

@@ -62,10 +62,10 @@ public class FeederGroupController {
      */
     @PostMapping("/getOverviewSwitchByFeederGroupId")
     @ApiOperation(value = "通过接线组ID查询默认态开关段")
-    public ApiResponse<List<List<BreakerAreaVO>>> getOverviewSwitchByFeederGroupId(@RequestBody FeederGroupRequest request) {
-        boolean assertFlag = ObjectUtils.isNotEmpty(request) && StringUtils.isNotEmpty(request.getFeederGroupId());
-        Assert.isTrue(assertFlag, "接线组ID不允许为空!");
-        return ApiResponse.success(FeederGroupApplication.getOverviewSwitchByFeederGroupId(request.getFeederGroupId()));
+    public ApiResponse<List<List<BreakerAreaVO>>> getOverviewSwitchByFeederGroupId(@RequestBody FeederRequest request) {
+        boolean assertFlag = ObjectUtils.isNotEmpty(request) && StringUtils.isNotEmpty(request.getFeederId());
+        Assert.isTrue(assertFlag, "线路ID不允许为空!");
+        return ApiResponse.success(FeederGroupApplication.getOverviewSwitchByFeederGroupId(request.getFeederId()));
     }
 
 

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

@@ -2,6 +2,10 @@ package com.hdkj.lt.bf.mapper;
 
 import com.hdkj.lt.bf.entity.TJxzXl;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @author Sunlit
@@ -9,8 +13,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 * @createDate 2026-05-22 15:19:49
 * @Entity com.hdkj.lt.bf.entity.TJxzXl
 */
+@Mapper
 public interface TJxzXlMapper extends BaseMapper<TJxzXl> {
 
+    List<TJxzXl> selectJxzXlList(@Param("feederId") String feederId);
 }
 
 

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

@@ -221,12 +221,13 @@
             select t.feeder,t.psr_id,t.name, t.psr_type, t.start_kg_id ,t.normal_open
             from t_feeder_topo t
             where  t.feeder = #{feederId} and start_kg_id is null
-              and t.psr_type in <foreach collection='kgPsrTypes' item='item' open="(" separator=',' close=')'>#{item}</foreach>
+              and t.psr_type in
+                  <foreach collection='kgPsrTypes' item='item' open="('PD_31100000'," separator=',' close=')'>#{item}</foreach>
             union all
             select t.feeder,t.psr_id, t.name , t.psr_type,t.start_kg_id ,t.normal_open
             from t_feeder_topo t join res_tab p on t.start_kg_id = p.psr_id and t.feeder = p.feeder
             where p.normal_open !='true'  and t.feeder = #{feederId} and t.psr_type in
-            <foreach collection='kgPsrTypes' item='item' open="(" separator=',' close=')'>#{item}</foreach>
+            <foreach collection='kgPsrTypes' item='item' open="('PD_31100000'," separator=',' close=')'>#{item}</foreach>
             )
         select feeder, psr_id , name psrName, psr_type,
                if(start_kg_id is null,psr_id,'-') switchId,

+ 3 - 0
services/load-transfer-bf/src/main/resources/mapper/TJxzXlMapper.xml

@@ -13,4 +13,7 @@
     <sql id="Base_Column_List">
         jxz_id,xlid,city_code
     </sql>
+    <select id="selectJxzXlList" resultType="com.hdkj.lt.bf.entity.TJxzXl">
+        select a.* from t_jxz_xl a join t_jxz_xl b on a.jxz_id=b.jxz_id where b.xlid=#{feederId};
+    </select>
 </mapper>