1.解决暂降区域部分数据展示问题

This commit is contained in:
wr
2025-05-14 16:21:27 +08:00
parent 05e71b823d
commit b97257164a
5 changed files with 31 additions and 100 deletions

View File

@@ -36,6 +36,8 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**

View File

@@ -20,7 +20,7 @@ import java.util.Map;
@Mapper @Mapper
public interface LargeScreenMapper { public interface LargeScreenMapper {
Map<String, Object> selectDownCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); Integer selectDownCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<Map<String, Object>> selectLoadTypeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); List<Map<String, Object>> selectLoadTypeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

View File

@@ -2,9 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.event.mapper.majornetwork.LargeScreenMapper"> <mapper namespace="com.njcn.event.mapper.majornetwork.LargeScreenMapper">
<select id="selectDownCount" resultType="java.util.Map"> <select id="selectDownCount" resultType="java.lang.Integer">
select select
count(ed.event_id) "count" count(ed.event_id) "COUNT"
from r_mp_event_detail ed from r_mp_event_detail ed
where where
ed.measurement_point_id in ed.measurement_point_id in

View File

@@ -86,83 +86,36 @@ public class AreaLineServiceImpl implements AreaLineService {
List<List<Object>> listObject = new ArrayList<>(); List<List<Object>> listObject = new ArrayList<>();
// 获取暂降监测点 // 获取暂降监测点
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData();
List<String> lineIndexs; List<String> lineIds = generalDeviceDTOList.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
List<AreaLineInfoVO> lineDetails = lineFeignClient.getBaseLineAreaInfo(lineIds).getData();
List<SubstationDetailVO> substationDetailVOList = new ArrayList<>(); List<SubstationDetailVO> substationDetailVOList = new ArrayList<>();
// 获取所有终端信息 // 获取所有终端信息
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
List<Object> objectList = new ArrayList<>(); List<Object> objectList = new ArrayList<>();
List<String> subIndexs; List<AreaLineInfoVO> areaLineInfoVOS = lineDetails.stream().filter(x -> generalDeviceDTO.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
subIndexs = generalDeviceDTO.getSubIndexes(); Map<String, List<AreaLineInfoVO>> subMap = areaLineInfoVOS.stream().collect(Collectors.groupingBy(x->x.getSubId()+"_"+x.getSubName()));
lineIndexs = generalDeviceDTO.getLineIndexes(); subMap.forEach((key,value)->{
// 通讯正常个数 int j = 0;
int stateZc = 0; // 总的监测点个数
// 通讯中断个数 for (AreaLineInfoVO line : value) {
int stateZd = 0; SubstationDetailVO substationDetail = new SubstationDetailVO();
// 总次数 substationDetail.setId(line.getLineId());
int tail = 0; substationDetail.setSrbName(line.getLineName());
substationDetail.setSubName(line.getSubName());
String color = ""; substationDetail.setCoordY(line.getLng().floatValue() + 0.0035 * Math.cos(2 * Math.PI * j / value.size()));
List<SubstationDetailVO> substationDetailVOS = new ArrayList<>(); substationDetail.setCoordX(line.getLat().floatValue() + 0.0035 * Math.sin(2 * Math.PI * j / value.size()));
if (subIndexs.size() > 0) { substationDetail.setColor(line.getComFlag() == 1?"green":"red");
List<LineDeviceStateVO> lineList = lineFeignClient.getAllLine(lineIndexs).getData(); substationDetailVOList.add(substationDetail);
substationDetailVOS = lineFeignClient.getSubstationData(subIndexs).getData(); j++;
for (int i = 0; i < substationDetailVOS.size(); i++) {
List<LineDeviceStateVO> list = new ArrayList<>();
list.addAll(lineList);
Iterator<LineDeviceStateVO> iterator = list.listIterator();
// 获取监测点
while (iterator.hasNext()) {
LineDeviceStateVO line = iterator.next();
String[] ids = line.getPids().split(",");
if (!ids[3].equals(substationDetailVOS.get(i).getId())) {
iterator.remove();
}
}
List<LineDeviceStateVO> lineDataVOList = list;
// 通讯正常个数
int stateTrue;
stateTrue = 0;
// 通讯中断个数
int stateFalse = 0;
// 次数
double r = 0.0035;
int j = 0;
// 总的监测点个数
int lineTail = lineDataVOList.size();
for (LineDeviceStateVO lineDataVO : lineDataVOList) {
if (lineDataVO.getState() == 1) {
stateTrue++;
color = "green";
} else {
stateFalse++;
color = "red";
}
SubstationDetailVO substationDetail = new SubstationDetailVO();
substationDetail.setId(lineDataVO.getId());
substationDetail.setSrbName(lineDataVO.getName());
substationDetail.setSubName(lineDataVO.getSubName());
substationDetail.setCoordY(substationDetailVOS.get(i).getCoordY().floatValue() + r * Math.cos(2 * Math.PI * j / lineTail));
substationDetail.setCoordX(substationDetailVOS.get(i).getCoordX().floatValue() + r * Math.sin(2 * Math.PI * j / lineTail));
substationDetail.setColor(color);
substationDetailVOList.add(substationDetail);
j++;
}
stateZc += stateTrue;
stateZd += stateFalse;
tail += lineTail;
} }
} });
// 获取变电站 // 获取变电站
substationDetailVOList.addAll(substationDetailVOS); areaLineVO.setSubstationDetailVOList(substationDetailVOList);
if (lineIndexs.size() > 0) { objectList.add(generalDeviceDTO.getName());
areaLineVO.setSubstationDetailVOList(substationDetailVOList); objectList.add(areaLineInfoVOS.stream().filter(x->x.getComFlag()==1).count());
objectList.add(generalDeviceDTO.getName()); objectList.add(areaLineInfoVOS.stream().filter(x->x.getComFlag()==0).count());
objectList.add(tail); objectList.add(areaLineInfoVOS.size());
objectList.add(stateZc); listObject.add(objectList);
objectList.add(stateZd);
listObject.add(objectList);
}
} }
areaLineVO.setAreaValue(listObject); areaLineVO.setAreaValue(listObject);
return areaLineVO; return areaLineVO;
@@ -208,8 +161,7 @@ public class AreaLineServiceImpl implements AreaLineService {
List<AreaLineInfoVO> ev = new ArrayList<>(); List<AreaLineInfoVO> ev = new ArrayList<>();
Integer count = info.stream() Integer count = info.stream()
.filter(obj -> obj.getMeasurementPointId().equals( areaLineInfoVO.getLineId())) .filter(obj -> obj.getMeasurementPointId().equals( areaLineInfoVO.getLineId()))
.mapToInt(RmpEventDetailPO::getFileFlag) .collect(Collectors.toList()).size();
.sum();
tail+=count; tail+=count;
areaLineInfoVO.setTail(count); areaLineInfoVO.setTail(count);
ev.add(areaLineInfoVO); ev.add(areaLineInfoVO);

View File

@@ -83,12 +83,10 @@ public class LargeScreenServiceImpl implements LargeScreenService {
param.setSize(0); param.setSize(0);
list.add(param); list.add(param);
} else { } else {
Map<String, Object> map = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(), largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); int count = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(), largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime());
MonitoringPointScaleParam param = new MonitoringPointScaleParam(); MonitoringPointScaleParam param = new MonitoringPointScaleParam();
param.setName(generalDeviceDTO.getName()); param.setName(generalDeviceDTO.getName());
param.setIndex(generalDeviceDTO.getIndex()); param.setIndex(generalDeviceDTO.getIndex());
String s = map.get("count").toString();
int count = Integer.parseInt(s);
param.setCount(count); param.setCount(count);
param.setSize(generalDeviceDTO.getLineIndexes().size()); param.setSize(generalDeviceDTO.getLineIndexes().size());
list.add(param); list.add(param);
@@ -96,27 +94,6 @@ public class LargeScreenServiceImpl implements LargeScreenService {
} }
result.setParam(list); result.setParam(list);
return result; return result;
/* //获取所有监测点集合
List<String> lineIds = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList());
List<Map<String, Object>> maps = largeScreenMapper.selectDownCount(lineIds);
Map<String,Integer> countMap = new HashMap<>();
for (Map<String, Object> map : maps) {
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
for (String lineIndex : generalDeviceDTO.getLineIndexes()) {
if (map.get("id").equals(lineIndex)){
if(countMap.containsKey(generalDeviceDTO.getName())){
countMap.put(generalDeviceDTO.getName(),countMap.get(generalDeviceDTO.getName())+1);
break;
}else {
countMap.put(generalDeviceDTO.getName(),1);
break;
}
}
}
}
}*/
} }
/** /**