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.List;
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
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);

View File

@@ -2,9 +2,9 @@
<!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">
<select id="selectDownCount" resultType="java.util.Map">
<select id="selectDownCount" resultType="java.lang.Integer">
select
count(ed.event_id) "count"
count(ed.event_id) "COUNT"
from r_mp_event_detail ed
where
ed.measurement_point_id in

View File

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

View File

@@ -83,12 +83,10 @@ public class LargeScreenServiceImpl implements LargeScreenService {
param.setSize(0);
list.add(param);
} 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();
param.setName(generalDeviceDTO.getName());
param.setIndex(generalDeviceDTO.getIndex());
String s = map.get("count").toString();
int count = Integer.parseInt(s);
param.setCount(count);
param.setSize(generalDeviceDTO.getLineIndexes().size());
list.add(param);
@@ -96,27 +94,6 @@ public class LargeScreenServiceImpl implements LargeScreenService {
}
result.setParam(list);
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;
}
}
}
}
}*/
}
/**