Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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;
|
||||
|
||||
/**
|
||||
* 字段表监测点等级
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 根据监测点索引集合获取监测点详细参数
|
||||
|
||||
@@ -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') >= date_format(#{searchBeginTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
|
||||
and date_format(pro.update_Time,'%y%m%d') <= 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') >= date_format(#{searchBeginTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
|
||||
and date_format(gd.update_Time,'%y%m%d') <= 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') >= date_format(#{searchBeginTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
|
||||
and date_format(sub.update_Time,'%y%m%d') <= date_format(#{searchEndTime},'%y%m%d')
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
<!--根据监测点索引集合获取监测点详细参数-->
|
||||
|
||||
@@ -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()));
|
||||
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -105,21 +109,16 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
// 处理终端在线率
|
||||
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData, deviceList);
|
||||
|
||||
|
||||
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
|
||||
|
||||
|
||||
// 通过供电站索引查询供电站信息
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -207,7 +207,54 @@ public enum DicDataEnum {
|
||||
*/
|
||||
PEND_DISPATCH("待派单","Pend_Dispatch"),
|
||||
DISPATCHED("已派单","Dispatched"),
|
||||
CLOSED("已关闭","Closed");
|
||||
CLOSED("已关闭","Closed"),
|
||||
|
||||
/**
|
||||
* 问题类型
|
||||
*/
|
||||
VOLTAGE_LIMIT("谐波电压越限","Voltage_Limit"),
|
||||
CURRENT_LIMIT("谐波电流越限","Current_Limit"),
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
REVIEW("待审核","Review"),
|
||||
AUDITED("已审核","Audited"),
|
||||
APPROVED("审核通过","Approved"),
|
||||
NOT_APPROVED("审核通过","Not_Approved"),
|
||||
|
||||
/**
|
||||
* 审核处理
|
||||
*/
|
||||
GENERATE("生成工单","Generate"),
|
||||
NO_REQUIRED("无需处理","No_Required"),
|
||||
|
||||
/**
|
||||
* 工单流程
|
||||
*/
|
||||
GENERATED("生成工单","Generated"),
|
||||
DISPATCH("派单","Dispatch"),
|
||||
FEEDBACK("反馈","Feedback"),
|
||||
AUDITING("审核","Auditing"),
|
||||
RECTIFICATION("整改","Rectification"),
|
||||
ASSESS("评估","Assess"),
|
||||
PIGEONHOLE("归档","Pigeonhole"),
|
||||
|
||||
/**
|
||||
* 评估结果
|
||||
*/
|
||||
PASS("评估合格","Pass"),
|
||||
NOT_PASS("评估不合格","Not_Pass"),
|
||||
|
||||
/**
|
||||
* 工单类型
|
||||
*/
|
||||
RECT_ORDER("整改单","Rect_Order"),
|
||||
|
||||
/**
|
||||
* 一级业务类型
|
||||
*/
|
||||
TRANS_BUSINESS("运检业务","Trans_Business");
|
||||
|
||||
|
||||
private final String name;
|
||||
|
||||
@@ -56,7 +56,15 @@ public enum DicDataTypeEnum {
|
||||
PLAN_TAKE("计划采取实施","Plan_Take"),
|
||||
MONITOR_OBJ("监测对象","Monitor_Obj"),
|
||||
CONNET_GROUP_WAY("牵引站变压器接线方式","Connet_Group_Way"),
|
||||
WORK_ORDER_STATUS("工单状态","Work_Order_Status");
|
||||
WORK_ORDER_STATUS("工单状态","Work_Order_Status"),
|
||||
PROBLEM_TYPE("问题类型","Problem_Type"),
|
||||
CHECK_STATUS("审核状态","Check_Status"),
|
||||
CHECK_RESULT("审核处理","Check_Result"),
|
||||
WORK_ORDER_PROCESS("工单流程","Work_Order_Process"),
|
||||
ASSESS_RESULT("评估结果","Assess_Result"),
|
||||
WORK_ORDER_TYPE("工单类型","Work_Order_Type"),
|
||||
PRIMARY_TYPE("一级业务类型","Primary_Type");
|
||||
|
||||
|
||||
|
||||
private final String name;
|
||||
|
||||
Reference in New Issue
Block a user