代码修改

This commit is contained in:
2023-02-14 08:48:04 +08:00
parent fd9edd3225
commit 7896e8237a
6 changed files with 111 additions and 92 deletions

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.pojo.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -100,12 +101,10 @@ public class TerminalOnlineRateDataVO implements Serializable {
@ApiModelProperty(name = "lineGrade",value = "终端等级")
private String lineGrade;
/*
// 终端在线率合格率
@ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率 0不合格 1合格")
private Double devicePassRate;
*/
@ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率 0不合格 1合格")
private Integer valueOver;
/**
* 字段表监测点等级
*/

View File

@@ -33,27 +33,21 @@ public interface TerminalOnlineRateDataMapper extends BaseMapper<TerminalOnlineR
* @param gdIndexes 供电公司索引
* @return 省会信息
*/
List<TerminalOnlineRateDataVO> getProvinceList(@Param("gdIndex")List<String> gdIndexes,
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
List<TerminalOnlineRateDataVO> getProvinceList(@Param("gdIndex")List<String> gdIndexes);
/**
* 获取出供电公司的信息
* @param gdIndexes 供电公司索引
* @return 供电公司信息
*/
List<TerminalOnlineRateDataVO> getGdList(@Param("gdIndex")List<String> gdIndexes,
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
List<TerminalOnlineRateDataVO> getGdList(@Param("gdIndex")List<String> gdIndexes);
/**
* 获取出变电站的信息
* @param subIndexes 变电站索引
* @return 变电站信息
*/
List<TerminalOnlineRateDataVO> getSubList(@Param("subIndex")List<String> subIndexes,
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
List<TerminalOnlineRateDataVO> getSubList(@Param("subIndex")List<String> subIndexes);
/**
* 根据监测点索引集合获取监测点详细参数

View File

@@ -88,12 +88,6 @@
<foreach collection="gdIndex" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="searchBeginTime != null and searchBeginTime != ''"><!-- 开始创建时间 -->
and date_format(pro.update_Time,'%y%m%d') &gt;= date_format(#{searchBeginTime},'%y%m%d')
</if>
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
and date_format(pro.update_Time,'%y%m%d') &lt;= date_format(#{searchEndTime},'%y%m%d')
</if>
</select>
<!--获取出供电公司的信息-->
@@ -109,12 +103,6 @@
<foreach collection="gdIndex" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="searchBeginTime != null and searchBeginTime != ''"><!-- 开始创建时间 -->
and date_format(gd.update_Time,'%y%m%d') &gt;= date_format(#{searchBeginTime},'%y%m%d')
</if>
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
and date_format(gd.update_Time,'%y%m%d') &lt;= date_format(#{searchEndTime},'%y%m%d')
</if>
</select>
<!--获取出变电站的信息-->
@@ -135,13 +123,6 @@
<foreach collection="subIndex" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="searchBeginTime != null and searchBeginTime != ''"><!-- 开始创建时间 -->
and date_format(sub.update_Time,'%y%m%d') &gt;= date_format(#{searchBeginTime},'%y%m%d')
</if>
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
and date_format(sub.update_Time,'%y%m%d') &lt;= date_format(#{searchEndTime},'%y%m%d')
</if>
</select>
<!--根据监测点索引集合获取监测点详细参数-->

View File

@@ -60,9 +60,6 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
@Override
public List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam) {
// TODO 获取部门id
// lineIntegrityDataParam.setDeptIndex(RequestUtil.getDeptIndex());
// 获取所有数据
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(lineIntegrityDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.enums.DeviceResponseEnum;
@@ -16,7 +17,11 @@ 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.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
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;
@@ -24,10 +29,8 @@ 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;
@@ -50,6 +53,8 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
private final AlarmClient alarmClient;
private final DicDataFeignClient dicDataFeignClient;
/**
* 终端在线率列表
*
@@ -59,7 +64,6 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
@Override
public List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) {
// 获取所有数据
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(terminalOnlineRateDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
@@ -89,9 +93,9 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
// 通过部分终端等级信息查询终端信息
List<TerminalOnlineRateDataVO> deviceList = terminalOnlineRateDataMapper.getDevice(generalDeviceDTO.getDeviceIndexes(),terminalOnlineRateDataParam.getLineGrade());
List<TerminalOnlineRateDataVO> deviceList = terminalOnlineRateDataMapper.getDevice(generalDeviceDTO.getDeviceIndexes(), terminalOnlineRateDataParam.getLineGrade());
if(CollectionUtil.isEmpty(deviceList)){
if (CollectionUtil.isEmpty(deviceList)) {
continue;
}
@@ -103,23 +107,18 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
List<TerminalOnlineRateData> terminalOnlineRateData = getPercentageOfOnlineRate(terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime(), devForInfluxdb);
// 处理终端在线率
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData,deviceList);
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData, deviceList);
// 通过供电站索引查询供电站信息
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(subIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(subIds);
List<String> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
// 通过供电公司索引查询供电公司信息
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
List<String> proIds = gdList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
List<String> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds);
// 通过供电公司索引查询省会
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(proIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(gdIds);
//处理变电站
@@ -127,6 +126,12 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
//处理供电公司
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.setChildren(gdList);
} else {
@@ -134,18 +139,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
dealChildrenData(proList, gdList, false);
terminalOnlineRateDataVO.setChildren(proList);
}
// 处理区域终端在线率
double areaOnlineRateData = DataStatisticsUtil.getAreaOnlineRateData(terminalOnlineRateData);
// 数据封装
terminalOnlineRateDataVO.setId(generalDeviceDTO.getIndex());
terminalOnlineRateDataVO.setName(generalDeviceDTO.getName());
terminalOnlineRateDataVO.setLevel(0);
terminalOnlineRateDataVO.setOnlineRate(areaOnlineRateData);
pro.add(terminalOnlineRateDataVO);
}
getAreaOnlineRateData(pro, alarmStrategyVos, terminalOnlineRateDataParam.getLineGrade());
return pro;
} else {
return new ArrayList<>();
@@ -218,4 +215,83 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
// 返回结果
return resultMapper.toPOJO(results, TerminalOnlineRateData.class);
}
/**
* 获取区域终端在线率
*
* @param terminalOnlineRateData
*/
public void getAreaOnlineRateData(List<TerminalOnlineRateDataVO> terminalOnlineRateData, List<AlarmStrategyVO> alarmStrategyVos, String lineGrade) {
Map<Integer, Integer> mapAlarm = new HashMap<>();
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())) {
mapAlarm.put(dictData.getAlgoDescribe(), map.get(dictData.getId()).getOnlineValue());
} else {
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
}
} else {
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_LEVEL.getCode()).getData();
dictDataList.forEach(it -> {
if (map.containsKey(it.getId())) {
mapAlarm.put(it.getAlgoDescribe(), map.get(it.getId()).getOnlineValue());
} else {
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
}
});
}
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);
if (Objects.nonNull(devItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(devItem.getAlgoDescribe())) {
if (devItem.getOnlineRate() != 3.14159 && devItem.getOnlineRate() > mapAlarm.get(devItem.getAlgoDescribe())) {
devItem.setValueOver(1);
} else {
devItem.setValueOver(0);
}
}
}
} else {
subItem.setOnlineRate(3.14159);
}
});
Double devAvg = dev.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));
gdItem.setOnlineRate(subAvg);
} else {
gdItem.setOnlineRate(3.14159);
}
});
Double gdAvg = gd.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
proItem.setOnlineRate(gdAvg);
} else {
proItem.setOnlineRate(3.14159);
}
});
}
}

View File

@@ -131,7 +131,7 @@ public class DataStatisticsUtil {
break;
}
}
if(!flag){
if (!flag) {
onlineRateDataVO.setOnlineRate(3.14159);
}
}).collect(Collectors.toList());
@@ -140,36 +140,8 @@ public class DataStatisticsUtil {
}
}
/**
* 获取区域终端在线率
*
* @param terminalOnlineRateData
*/
public static double getAreaOnlineRateData(List<TerminalOnlineRateData> terminalOnlineRateData) {
double data = 0.0;
// 将influxdb数据用时间进行分组
Map<String, List<TerminalOnlineRateData>> groupByTime = terminalOnlineRateData.stream().collect(Collectors.groupingBy(TerminalOnlineRateData::getTime));
if (CollectionUtil.isNotEmpty(groupByTime)) {
Set<String> times = groupByTime.keySet();
for (String time : times) {
List<TerminalOnlineRateData> onlineRateDatas = groupByTime.get(time);
double onlineRateData = 0.0;
int size = onlineRateDatas.size();
for (TerminalOnlineRateData devDate : onlineRateDatas) {
onlineRateData += devDate.getOnlineRate();
}
Double devOnlineRateDouble = (onlineRateData / size);
String devOnlineRateString = String.format("%.2f", devOnlineRateDouble);
data = Double.parseDouble(devOnlineRateString);
}
} else {
data = 3.14159;
}
return data;
}
}