Merge remote-tracking branch 'origin/master'

This commit is contained in:
wurui
2023-02-14 14:48:15 +08:00
8 changed files with 169 additions and 95 deletions

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.pojo.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -100,12 +101,10 @@ public class TerminalOnlineRateDataVO implements Serializable {
@ApiModelProperty(name = "lineGrade",value = "终端等级") @ApiModelProperty(name = "lineGrade",value = "终端等级")
private String lineGrade; 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 供电公司索引 * @param gdIndexes 供电公司索引
* @return 省会信息 * @return 省会信息
*/ */
List<TerminalOnlineRateDataVO> getProvinceList(@Param("gdIndex")List<String> gdIndexes, List<TerminalOnlineRateDataVO> getProvinceList(@Param("gdIndex")List<String> gdIndexes);
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
/** /**
* 获取出供电公司的信息 * 获取出供电公司的信息
* @param gdIndexes 供电公司索引 * @param gdIndexes 供电公司索引
* @return 供电公司信息 * @return 供电公司信息
*/ */
List<TerminalOnlineRateDataVO> getGdList(@Param("gdIndex")List<String> gdIndexes, List<TerminalOnlineRateDataVO> getGdList(@Param("gdIndex")List<String> gdIndexes);
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
/** /**
* 获取出变电站的信息 * 获取出变电站的信息
* @param subIndexes 变电站索引 * @param subIndexes 变电站索引
* @return 变电站信息 * @return 变电站信息
*/ */
List<TerminalOnlineRateDataVO> getSubList(@Param("subIndex")List<String> subIndexes, List<TerminalOnlineRateDataVO> getSubList(@Param("subIndex")List<String> subIndexes);
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
/** /**
* 根据监测点索引集合获取监测点详细参数 * 根据监测点索引集合获取监测点详细参数

View File

@@ -88,12 +88,6 @@
<foreach collection="gdIndex" item="item" open="(" close=")" separator=","> <foreach collection="gdIndex" item="item" open="(" close=")" separator=",">
#{item} #{item}
</foreach> </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> </select>
<!--获取出供电公司的信息--> <!--获取出供电公司的信息-->
@@ -109,12 +103,6 @@
<foreach collection="gdIndex" item="item" open="(" close=")" separator=","> <foreach collection="gdIndex" item="item" open="(" close=")" separator=",">
#{item} #{item}
</foreach> </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> </select>
<!--获取出变电站的信息--> <!--获取出变电站的信息-->
@@ -135,13 +123,6 @@
<foreach collection="subIndex" item="item" open="(" close=")" separator=","> <foreach collection="subIndex" item="item" open="(" close=")" separator=",">
#{item} #{item}
</foreach> </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> </select>
<!--根据监测点索引集合获取监测点详细参数--> <!--根据监测点索引集合获取监测点详细参数-->

View File

@@ -60,9 +60,6 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
@Override @Override
public List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam) { 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())); 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; package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.AlarmClient; import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.enums.DeviceResponseEnum; 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.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDBCommUtils; import com.njcn.influxdb.utils.InfluxDBCommUtils;
import com.njcn.influxdb.utils.InfluxDbUtils; 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.enums.StatisticsEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult; import org.influxdb.dto.QueryResult;
@@ -24,10 +29,8 @@ import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.function.Function;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -50,6 +53,8 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
private final AlarmClient alarmClient; private final AlarmClient alarmClient;
private final DicDataFeignClient dicDataFeignClient;
/** /**
* 终端在线率列表 * 终端在线率列表
* *
@@ -59,7 +64,6 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
@Override @Override
public List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) { public List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) {
// 获取所有数据 // 获取所有数据
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(terminalOnlineRateDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); 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); 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> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds);
List<String> proIds = gdList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
// 通过供电公司索引查询省会 // 通过供电公司索引查询省会
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); dealChildrenData(gdList, subList, false);
// 数据封装
terminalOnlineRateDataVO.setId(generalDeviceDTO.getIndex());
terminalOnlineRateDataVO.setName(generalDeviceDTO.getName());
terminalOnlineRateDataVO.setLevel(0);
if (terminalOnlineRateDataParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) { if (terminalOnlineRateDataParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) {
terminalOnlineRateDataVO.setChildren(gdList); terminalOnlineRateDataVO.setChildren(gdList);
} else { } else {
@@ -134,18 +139,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
dealChildrenData(proList, gdList, false); dealChildrenData(proList, gdList, false);
terminalOnlineRateDataVO.setChildren(proList); 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); pro.add(terminalOnlineRateDataVO);
} }
getAreaOnlineRateData(pro, alarmStrategyVos, terminalOnlineRateDataParam.getLineGrade());
return pro; return pro;
} else { } else {
return new ArrayList<>(); return new ArrayList<>();
@@ -218,4 +215,83 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
// 返回结果 // 返回结果
return resultMapper.toPOJO(results, TerminalOnlineRateData.class); 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

@@ -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;
}
} }

View File

@@ -207,7 +207,54 @@ public enum DicDataEnum {
*/ */
PEND_DISPATCH("待派单","Pend_Dispatch"), PEND_DISPATCH("待派单","Pend_Dispatch"),
DISPATCHED("已派单","Dispatched"), 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; private final String name;

View File

@@ -56,7 +56,15 @@ public enum DicDataTypeEnum {
PLAN_TAKE("计划采取实施","Plan_Take"), PLAN_TAKE("计划采取实施","Plan_Take"),
MONITOR_OBJ("监测对象","Monitor_Obj"), MONITOR_OBJ("监测对象","Monitor_Obj"),
CONNET_GROUP_WAY("牵引站变压器接线方式","Connet_Group_Way"), 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; private final String name;