|
|
@@ -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();
|
|
|
}
|