终端在线率,终端完整性开发
This commit is contained in:
@@ -27,4 +27,10 @@ public class TerminalOnlineRateDataParam extends DeviceInfoParam.BusinessParam{
|
||||
*/
|
||||
@ApiModelProperty(name = "lineGrade",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
||||
private String lineGrade;
|
||||
|
||||
/**
|
||||
* 调用模块分类
|
||||
*/
|
||||
@ApiModelProperty(name = "module",value = "接口调用方 deviceBoot:业务管理员-运维中心,harmonicBoot:谐波-区域")
|
||||
private String module;
|
||||
}
|
||||
|
||||
@@ -13,38 +13,32 @@ import java.io.Serializable;
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Measurement(name = "pqs_integrity")
|
||||
public class LineDataIntegrity implements Serializable {
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
@Column(name = "line_id",tag = true)
|
||||
private String lineId;
|
||||
|
||||
/**
|
||||
* 实际值
|
||||
*/
|
||||
@Column(name = "real")
|
||||
private Double real;
|
||||
|
||||
/**
|
||||
* 期望值
|
||||
*/
|
||||
@Column(name = "due")
|
||||
private Double due;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
@Column(name = "time")
|
||||
private String time;
|
||||
|
||||
|
||||
/**
|
||||
* 监测点数据完整性
|
||||
*/
|
||||
@Column(name = "integrityData")
|
||||
private Double integrityData;
|
||||
|
||||
}
|
||||
|
||||
@@ -7,32 +7,39 @@ import org.influxdb.annotation.Measurement;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 接收查询influxdb数据(终端在线率业务)
|
||||
* 接收查询mysql数据(终端在线率业务)
|
||||
*
|
||||
* @author yzh
|
||||
* @date 2022/9/22
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Measurement(name = "pqs_onlinerate")
|
||||
|
||||
public class TerminalOnlineRateData implements Serializable {
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
@Column(name = "time")
|
||||
private String time;
|
||||
|
||||
/**
|
||||
* 终端id
|
||||
*/
|
||||
@Column(name = "dev_id",tag = true)
|
||||
private String devId;
|
||||
|
||||
/**
|
||||
* 终端在线率
|
||||
*/
|
||||
@Column(name = "online_rate")
|
||||
private Double onlineRate = 3.14159;
|
||||
|
||||
/**
|
||||
* 在线时间(分钟)
|
||||
*/
|
||||
private Integer onlineMin;
|
||||
|
||||
/**
|
||||
* 离线时间(分钟)
|
||||
*/
|
||||
private Integer offlineMin;
|
||||
|
||||
}
|
||||
|
||||
@@ -56,5 +56,10 @@ public class AlarmStrategyVO implements Serializable {
|
||||
@ApiModelProperty("更新用户")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 字段表监测点等级
|
||||
*/
|
||||
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
||||
private Integer algoDescribe;
|
||||
|
||||
}
|
||||
|
||||
@@ -112,6 +112,13 @@ public class LineIntegrityDataVO implements Serializable {
|
||||
private String lineGradeName;
|
||||
|
||||
|
||||
/**
|
||||
* 字段表监测点等级
|
||||
*/
|
||||
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
||||
private Integer algoDescribe;
|
||||
|
||||
|
||||
|
||||
@ApiModelProperty(name = "loadType",value = "干扰源类型")
|
||||
private String loadType;
|
||||
@@ -127,7 +134,7 @@ public class LineIntegrityDataVO implements Serializable {
|
||||
* 监测点合格率
|
||||
*/
|
||||
@ApiModelProperty(name = "LinePassRate",value = "监测点合格率 0:不合格 1:合格")
|
||||
private Integer linePassRate;
|
||||
private Integer valueOver;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -110,12 +110,12 @@ public class TerminalOnlineRateDataVO implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
||||
private Integer algoDescribe;
|
||||
|
||||
|
||||
/**
|
||||
* 子节点集合
|
||||
*/
|
||||
@ApiModelProperty(name = "children",value = "子节点集合")
|
||||
private List<TerminalOnlineRateDataVO> children = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.njcn.device.pq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.common.pojo.dto.SimpleDTO;
|
||||
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||
import com.njcn.device.pq.pojo.vo.TerminalTree;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -46,4 +47,5 @@ public interface LineIntegrityDataMapper extends BaseMapper<LineIntegrityDataVO>
|
||||
@Param("lineGrade")String lineGrade);
|
||||
|
||||
|
||||
List<AlarmStrategyVO> getAlarmAlgoDescribe(@Param("list") List<AlarmStrategyVO> alarmStrategyVos);
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
msdd.`Name` AS 'manufacturer',
|
||||
pldsdd.`Name` AS 'lineGradeName',
|
||||
pldsdd.`id` AS 'lineGrade',
|
||||
pldsdd.Algo_Describe AS `algoDescribe`,
|
||||
pld.Load_Type AS 'loadType'
|
||||
FROM
|
||||
pq_line AS line
|
||||
@@ -103,5 +104,17 @@
|
||||
and pld.Line_Grade = #{lineGrade}
|
||||
</if>
|
||||
</select>
|
||||
<select id="getAlarmAlgoDescribe" resultType="com.njcn.device.pq.pojo.vo.AlarmStrategyVO">
|
||||
SELECT
|
||||
sdd.id AS id,
|
||||
sdd.Algo_Describe AS algoDescribe,
|
||||
pas.Integrity_Value AS integrityValue
|
||||
FROM sys_dict_data sdd
|
||||
LEFT JOIN pqs_alarm_strategy pas ON pas.Id = sdd.Id
|
||||
WHERE sdd.Id IN
|
||||
<foreach collection="list" item="item" open="(" close=")" separator=",">
|
||||
#{item.id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
<mapper namespace="com.njcn.device.pq.mapper.RStatIntegrityDMapper">
|
||||
|
||||
<select id="getLineIntegrityRate" resultType="LineDataIntegrity">
|
||||
select line_index lineId,avg(real_time/due_time) integrityData
|
||||
select line_index lineId,
|
||||
avg(real_time/due_time)*100 integrityData,
|
||||
sum(real_time) `real`,
|
||||
sum(due_time) due
|
||||
from r_stat_integrity_d
|
||||
where line_index in
|
||||
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
pdevice.Com_Flag AS comFlag,
|
||||
sddManufacturer.`Name` AS manufacturer,
|
||||
pdevice.Update_Time AS updateTime,
|
||||
max(sddLineGrade.Algo_Describe) as algoDescribe
|
||||
min(sddLineGrade.Algo_Describe) as algoDescribe
|
||||
FROM
|
||||
pq_line AS device
|
||||
LEFT JOIN pq_line AS voltage ON device.id = voltage.pid
|
||||
@@ -172,7 +172,11 @@
|
||||
|
||||
|
||||
<select id="getDevOnlineByDevIds" resultType="TerminalOnlineRateData">
|
||||
select dev_index devId,avg(online_min/(online_min+offline_min)) onlineRate
|
||||
select
|
||||
dev_index devId,
|
||||
avg(online_min/(online_min+offline_min))*100 onlineRate,
|
||||
sum(online_min) onlineMin,
|
||||
sum(offline_min) offlineMin
|
||||
from r_stat_onlinerate_d
|
||||
where dev_index in
|
||||
<foreach collection="devIds" item="item" open="(" close=")" separator=",">
|
||||
|
||||
@@ -14,12 +14,15 @@ import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
|
||||
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||
import com.njcn.device.pq.utils.DataStatisticsUtil;
|
||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||
import com.njcn.influxdb.utils.InfluxDBCommUtils;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.enums.StatisticsEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.influxdb.dto.QueryResult;
|
||||
@@ -27,10 +30,7 @@ import org.influxdb.impl.InfluxDBResultMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@@ -80,6 +80,9 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
if (CollectionUtil.isEmpty(alarmStrategyVos)) {
|
||||
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
|
||||
}
|
||||
List<AlarmStrategyVO> alarmAlgoDescribe = lineIntegrityDataMapper.getAlarmAlgoDescribe(alarmStrategyVos);
|
||||
Map<Integer, Integer> mapAlarm = alarmAlgoDescribe.stream().collect(Collectors.toMap(AlarmStrategyVO::getAlgoDescribe, AlarmStrategyVO::getIntegrityValue));
|
||||
|
||||
Map<String, Integer> mapA = alarmStrategyVos.stream().collect(Collectors.toMap(AlarmStrategyVO::getId, AlarmStrategyVO::getIntegrityValue));
|
||||
|
||||
|
||||
@@ -108,6 +111,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
// 通过供电公司索引查询省会
|
||||
List<LineIntegrityDataVO> proList = lineIntegrityDataMapper.getProvinceList(gdIds);
|
||||
|
||||
// 查询监测点数据完整性
|
||||
List<LineDataIntegrity> percentageOfCompleteDatas = rStatIntegrityDMapper.getLineIntegrityRate(generalDeviceDTO.getLineIndexes(),lineIntegrityDataParam.getSearchBeginTime(), lineIntegrityDataParam.getSearchEndTime());
|
||||
|
||||
|
||||
@@ -123,16 +127,16 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
if (StrUtil.isNotBlank(lineDataIntegrity.getLineGrade())) {
|
||||
if (mapA.containsKey(lineDataIntegrity.getLineGrade())) {
|
||||
if (temValue > mapA.get(lineDataIntegrity.getLineGrade())) {
|
||||
lineDataIntegrity.setLinePassRate(1);
|
||||
lineDataIntegrity.setValueOver(1);
|
||||
} else {
|
||||
lineDataIntegrity.setLinePassRate(0);
|
||||
lineDataIntegrity.setValueOver(0);
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException(DeviceResponseEnum.LINE_GRADE_LESS);
|
||||
}
|
||||
} else {
|
||||
//默认没有设置等级的监测点标志为1 0.不合格 1.合格
|
||||
lineDataIntegrity.setLinePassRate(1);
|
||||
lineDataIntegrity.setValueOver(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -140,7 +144,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
if (!flag) {
|
||||
//表示未匹配到数据完整性
|
||||
lineDataIntegrity.setIntegrityData(3.14159);
|
||||
lineDataIntegrity.setLinePassRate(0);
|
||||
lineDataIntegrity.setValueOver(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,11 +163,10 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
lineIntegrityDataVO.setChildren(proList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 数据封装
|
||||
Double temValue = lineList.stream().filter(item->item.getIntegrityData()!=3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
|
||||
|
||||
LineIntegrityDataVO temp = lineList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
|
||||
lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe());
|
||||
lineIntegrityDataVO.setId(generalDeviceDTO.getIndex());
|
||||
lineIntegrityDataVO.setName(generalDeviceDTO.getName());
|
||||
lineIntegrityDataVO.setLevel(0);
|
||||
@@ -171,12 +174,56 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
pro.add(lineIntegrityDataVO);
|
||||
|
||||
}
|
||||
|
||||
getAreaIntegrityData(mapAlarm,pro);
|
||||
return pro;
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm,List<LineIntegrityDataVO> proList) {
|
||||
for (LineIntegrityDataVO proItem : proList) {
|
||||
List<LineIntegrityDataVO> gds = proItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(gds)) {
|
||||
for (LineIntegrityDataVO gdItem : gds) {
|
||||
List<LineIntegrityDataVO> subs = gdItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(subs)) {
|
||||
for (LineIntegrityDataVO subItem : subs) {
|
||||
if (Objects.nonNull(subItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(subItem.getAlgoDescribe())) {
|
||||
if (subItem.getIntegrityData() != 3.14159 && subItem.getIntegrityData() < mapAlarm.get(subItem.getAlgoDescribe())) {
|
||||
subItem.setValueOver(1);
|
||||
} else {
|
||||
subItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(gdItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(gdItem.getAlgoDescribe())) {
|
||||
if (gdItem.getIntegrityData() != 3.14159 && gdItem.getIntegrityData() < mapAlarm.get(gdItem.getAlgoDescribe())) {
|
||||
gdItem.setValueOver(1);
|
||||
} else {
|
||||
gdItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(proItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(proItem.getAlgoDescribe()))
|
||||
if (proItem.getIntegrityData() != 3.14159 && proItem.getIntegrityData() < mapAlarm.get(proItem.getAlgoDescribe())){
|
||||
proItem.setValueOver(1);
|
||||
} else {
|
||||
proItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理变电站
|
||||
*
|
||||
@@ -204,10 +251,11 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
if (lineAdministrationTree.getId().equals(pid)) {
|
||||
List<LineIntegrityDataVO> lineIntegrityDataVOList = groupLine.get(pid);
|
||||
lineAdministrationTree.setChildren(lineIntegrityDataVOList);
|
||||
|
||||
//父级完整性匹配
|
||||
Double temValue = lineIntegrityDataVOList.stream().filter(item->item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
|
||||
lineAdministrationTree.setIntegrityData(temValue);
|
||||
LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
|
||||
lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe());
|
||||
}
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
@@ -111,35 +111,35 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
|
||||
List<String> devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList());
|
||||
|
||||
List<TerminalOnlineRateData> terminalOnlineRateData = terminalOnlineRateDataMapper.getDevOnlineByDevIds(devIds,terminalOnlineRateDataParam.getSearchBeginTime(),terminalOnlineRateDataParam.getSearchEndTime());
|
||||
// 根据装置id获取装置在线率
|
||||
List<TerminalOnlineRateData> terminalOnlineRateList = terminalOnlineRateDataMapper.getDevOnlineByDevIds(devIds,terminalOnlineRateDataParam.getSearchBeginTime(),terminalOnlineRateDataParam.getSearchEndTime());
|
||||
|
||||
// 处理终端在线率
|
||||
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData, deviceList);
|
||||
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateList, deviceList);
|
||||
|
||||
// 通过供电站索引查询供电站信息
|
||||
// 通过装置pid即供电站索引查询供电站信息
|
||||
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
|
||||
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(subIds);
|
||||
|
||||
// 通过供电公司索引查询供电公司信息
|
||||
// 通过供电站pid即供电公司索引查询供电公司信息
|
||||
List<String> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
|
||||
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds);
|
||||
|
||||
// 通过供电公司索引查询省会
|
||||
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(gdIds);
|
||||
|
||||
|
||||
//处理变电站
|
||||
dealChildrenData(subList, deviceList, false);
|
||||
//处理供电公司
|
||||
dealChildrenData(gdList, subList, false);
|
||||
|
||||
|
||||
// 数据封装
|
||||
terminalOnlineRateDataVO.setId(generalDeviceDTO.getIndex());
|
||||
terminalOnlineRateDataVO.setName(generalDeviceDTO.getName());
|
||||
terminalOnlineRateDataVO.setLevel(0);
|
||||
|
||||
if (terminalOnlineRateDataParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) {
|
||||
TerminalOnlineRateDataVO temp = gdList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(TerminalOnlineRateDataVO::getAlgoDescribe)).orElseGet(TerminalOnlineRateDataVO::new);
|
||||
terminalOnlineRateDataVO.setAlgoDescribe(temp.getAlgoDescribe());
|
||||
terminalOnlineRateDataVO.setChildren(gdList);
|
||||
} else {
|
||||
//还需要额外处理省会
|
||||
@@ -182,7 +182,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
Set<String> pids = groupLine.keySet();
|
||||
for (String pid : pids) {
|
||||
if (terminalOnlineRateDataVO.getId().equals(pid)) {
|
||||
terminalOnlineRateDataVO.setChildren(groupLine.get(pid));
|
||||
List<TerminalOnlineRateDataVO> list = groupLine.get(pid);
|
||||
TerminalOnlineRateDataVO temp = list.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(TerminalOnlineRateDataVO::getAlgoDescribe)).orElse(new TerminalOnlineRateDataVO());
|
||||
terminalOnlineRateDataVO.setAlgoDescribe(temp.getAlgoDescribe());
|
||||
terminalOnlineRateDataVO.setChildren(list);
|
||||
}
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
@@ -201,8 +204,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
Map<String, AlarmStrategyVO> map = alarmStrategyVos.stream().collect(Collectors.toMap(AlarmStrategyVO::getId, Function.identity()));
|
||||
|
||||
if (StrUtil.isNotBlank(lineGrade)) {
|
||||
// 根据入参终端等级查字典表
|
||||
DictData dictData = dicDataFeignClient.getDicDataById(lineGrade).getData();
|
||||
if (map.containsKey(dictData.getId())) {
|
||||
// key:监测点等级AlgoDescribe value:监测点对应在线率告警阈值
|
||||
mapAlarm.put(dictData.getAlgoDescribe(), map.get(dictData.getId()).getOnlineValue());
|
||||
} else {
|
||||
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
|
||||
@@ -218,21 +223,17 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
});
|
||||
}
|
||||
|
||||
terminalOnlineRateData.forEach(proItem -> {
|
||||
List<TerminalOnlineRateDataVO> gd = proItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(gd)) {
|
||||
gd.forEach(gdItem -> {
|
||||
List<TerminalOnlineRateDataVO> sub = gdItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(sub)) {
|
||||
sub.forEach(subItem -> {
|
||||
List<TerminalOnlineRateDataVO> dev = subItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(dev)) {
|
||||
dev.forEach(devItem -> {
|
||||
List<TerminalOnlineRateDataVO> tem = devItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(tem)) {
|
||||
Double temAvg = tem.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
devItem.setOnlineRate(temAvg);
|
||||
|
||||
for (TerminalOnlineRateDataVO proItem : terminalOnlineRateData) {
|
||||
List<TerminalOnlineRateDataVO> gds = proItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(gds)) {
|
||||
for (TerminalOnlineRateDataVO gdItem : gds) {
|
||||
List<TerminalOnlineRateDataVO> subs = gdItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(subs)) {
|
||||
for (TerminalOnlineRateDataVO subItem : subs) {
|
||||
// 装置集合
|
||||
List<TerminalOnlineRateDataVO> devs = subItem.getChildren();
|
||||
if (CollectionUtil.isNotEmpty(devs)) {
|
||||
for (TerminalOnlineRateDataVO devItem : devs) {
|
||||
if (Objects.nonNull(devItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(devItem.getAlgoDescribe())) {
|
||||
if (devItem.getOnlineRate() != 3.14159 && devItem.getOnlineRate() > mapAlarm.get(devItem.getAlgoDescribe())) {
|
||||
@@ -242,29 +243,51 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
subItem.setOnlineRate(3.14159);
|
||||
}
|
||||
});
|
||||
Double devAvg = dev.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
Double devAvg = devs.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
subItem.setOnlineRate(devAvg);
|
||||
} else {
|
||||
subItem.setOnlineRate(3.14159);
|
||||
}
|
||||
});
|
||||
Double subAvg = sub.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
if (Objects.nonNull(subItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(subItem.getAlgoDescribe())) {
|
||||
if (subItem.getOnlineRate() != 3.14159 && subItem.getOnlineRate() > mapAlarm.get(subItem.getAlgoDescribe())) {
|
||||
subItem.setValueOver(1);
|
||||
} else {
|
||||
subItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Double subAvg = subs.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
gdItem.setOnlineRate(subAvg);
|
||||
} else {
|
||||
gdItem.setOnlineRate(3.14159);
|
||||
}
|
||||
});
|
||||
Double gdAvg = gd.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
if (Objects.nonNull(gdItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(gdItem.getAlgoDescribe())) {
|
||||
if (gdItem.getOnlineRate() != 3.14159 && gdItem.getOnlineRate() > mapAlarm.get(gdItem.getAlgoDescribe())) {
|
||||
gdItem.setValueOver(1);
|
||||
} else {
|
||||
gdItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Double gdAvg = gds.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
|
||||
proItem.setOnlineRate(gdAvg);
|
||||
} else {
|
||||
proItem.setOnlineRate(3.14159);
|
||||
}
|
||||
});
|
||||
if (Objects.nonNull(proItem.getAlgoDescribe())) {
|
||||
if (mapAlarm.containsKey(proItem.getAlgoDescribe()))
|
||||
if (proItem.getOnlineRate() != 3.14159 && proItem.getOnlineRate() > mapAlarm.get(proItem.getAlgoDescribe())){
|
||||
proItem.setValueOver(1);
|
||||
} else {
|
||||
proItem.setValueOver(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -114,17 +114,17 @@ public class DataStatisticsUtil {
|
||||
/**
|
||||
* 获取终端在线率
|
||||
*
|
||||
* @param terminalOnlineRateData
|
||||
* @param terminalOnlineRateList
|
||||
* @param deviceList
|
||||
*/
|
||||
public static void getTerminalOnlineRateData(List<TerminalOnlineRateData> terminalOnlineRateData, List<TerminalOnlineRateDataVO> deviceList) {
|
||||
public static void getTerminalOnlineRateData(List<TerminalOnlineRateData> terminalOnlineRateList, List<TerminalOnlineRateDataVO> deviceList) {
|
||||
|
||||
if (CollectionUtil.isNotEmpty(terminalOnlineRateData)) {
|
||||
if (CollectionUtil.isNotEmpty(terminalOnlineRateList)) {
|
||||
// 根据监测点id分类
|
||||
|
||||
deviceList = deviceList.stream().peek(onlineRateDataVO -> {
|
||||
boolean flag = false;
|
||||
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateData) {
|
||||
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateList) {
|
||||
if (onlineRateDataVO.getId().equals(onlineRateData.getDevId())) {
|
||||
flag = true;
|
||||
onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate());
|
||||
|
||||
Reference in New Issue
Block a user