1.解决暂降区域部分数据展示问题
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -86,83 +86,36 @@ 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;
|
||||
|
||||
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;
|
||||
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;
|
||||
// 总的监测点个数
|
||||
for (AreaLineInfoVO line : value) {
|
||||
SubstationDetailVO substationDetail = new SubstationDetailVO();
|
||||
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++;
|
||||
}
|
||||
}
|
||||
});
|
||||
// 获取变电站
|
||||
substationDetailVOList.addAll(substationDetailVOS);
|
||||
if (lineIndexs.size() > 0) {
|
||||
areaLineVO.setSubstationDetailVOList(substationDetailVOList);
|
||||
objectList.add(generalDeviceDTO.getName());
|
||||
objectList.add(tail);
|
||||
objectList.add(stateZc);
|
||||
objectList.add(stateZd);
|
||||
listObject.add(objectList);
|
||||
}
|
||||
areaLineVO.setSubstationDetailVOList(substationDetailVOList);
|
||||
objectList.add(generalDeviceDTO.getName());
|
||||
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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user