谐波监测-详细分析:告警变电站统计 和 区域稳态指标超标明细代码优化

This commit is contained in:
wr
2023-04-24 20:31:16 +08:00
parent f32790abba
commit 8a42cf07d6
8 changed files with 482 additions and 240 deletions

View File

@@ -80,34 +80,41 @@ public class EventDetailServiceImpl extends ServiceImpl<EventDetailMapper, RmpEv
@Override @Override
public List<EventDetail> getEventDetail(List<String> lineIndexes, String startTime, String endTime, List<Integer> waveType) { public List<EventDetail> getEventDetail(List<String> lineIndexes, String startTime, String endTime, List<Integer> waveType) {
//组装sql语句 List<RmpEventDetailPO> info = this.list(new LambdaQueryWrapper<RmpEventDetailPO>()
StringBuilder stringBuilder = new StringBuilder(); .ne(RmpEventDetailPO::getMeasurementPointId, lineIndexes)
stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and ("); .ge(StrUtil.isNotBlank(startTime), RmpEventDetailPO::getStartTime,DateUtil.beginOfDay(DateUtil.parse(startTime)))
for (int i = 0; i < lineIndexes.size(); i++) { .le(StrUtil.isNotBlank(endTime), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(endTime)))
if (lineIndexes.size() - i != 1) { );
stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' or "); return BeanUtil.copyToList(info, EventDetail.class);
} else {
stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' ");
}
}
stringBuilder.append(") and (");
for (int i = 0; i < waveType.size(); i++) {
if (waveType.size() - i != 1) {
stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' or ");
} else {
stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' ");
}
}
stringBuilder.append(") order by time desc tz('Asia/Shanghai");
//sql语句
String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
//结果集 // //组装sql语句
QueryResult result = influxDbUtils.query(sql); // StringBuilder stringBuilder = new StringBuilder();
//结果集映射到对象中 // stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and (");
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); // for (int i = 0; i < lineIndexes.size(); i++) {
List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class); // if (lineIndexes.size() - i != 1) {
return eventDetailList; // stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' or ");
// } else {
// stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' ");
// }
// }
// stringBuilder.append(") and (");
// for (int i = 0; i < waveType.size(); i++) {
// if (waveType.size() - i != 1) {
// stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' or ");
// } else {
// stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' ");
// }
// }
// stringBuilder.append(") order by time desc tz('Asia/Shanghai");
// //sql语句
// String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
//
// //结果集
// QueryResult result = influxDbUtils.query(sql);
// //结果集映射到对象中
// InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
// List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
// return eventDetailList;
} }
@Override @Override

View File

@@ -2,6 +2,7 @@ package com.njcn.harmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.po.LimitRate;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.vo.MonitorOverLimitVO; import com.njcn.harmonic.pojo.vo.MonitorOverLimitVO;
import com.njcn.harmonic.pojo.vo.RStatLimitRateDVO; import com.njcn.harmonic.pojo.vo.RStatLimitRateDVO;
@@ -40,4 +41,16 @@ public interface RStatLimitRateDMapper extends BaseMapper<RStatLimitRateDPO> {
@Param("ids") List<String> lineIndexes, @Param("ids") List<String> lineIndexes,
@Param("statTime") String searchBeginTime, @Param("statTime") String searchBeginTime,
@Param("endTime") String searchEndTime); @Param("endTime") String searchEndTime);
/**
* 数据查询
* @param list
* @param startTime
* @param endTime
* @return
*/
List<RStatLimitRateDPO> getSumPassRateList( @Param("ids") List<String> list,
@Param("statTime") String startTime,
@Param("endTime") String endTime);
} }

View File

@@ -15,4 +15,15 @@ public interface RStatLimitTargetMapper extends BaseMapper<RStatLimitTargetDPO>
Page<MonitorOverLimitVO> getSumLimitTargetPage(Page<MonitorOverLimitVO>p, Page<MonitorOverLimitVO> getSumLimitTargetPage(Page<MonitorOverLimitVO>p,
@Param("ids") List<String> lineIndexes, @Param("ids") List<String> lineIndexes,
@Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
/**
*
* @param list
* @param startTime
* @param endTime
* @return
*/
List<RStatLimitTargetDPO> getSumTargetList(@Param("ids") List<String> list,
@Param("statTime") String startTime,
@Param("endTime") String endTime);
} }

View File

@@ -210,4 +210,99 @@
GROUP BY GROUP BY
`time` `time`
</select> </select>
<select id="getSumPassRateList" resultType="com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO">
SELECT
my_index as lineId ,
sum(all_time) as all_time,
sum(flicker_all_time) as flicker_all_time,
sum(freq_dev_overtime) as freq_dev_overtime,
sum(voltage_dev_overtime) as voltage_dev_overtime,
sum(ubalance_overtime) as ubalance_overtime,
sum(flicker_overtime) as flicker_overtime,
sum(uaberrance_overtime) as uaberrance_overtime,
sum(uharm_2_overtime) as uharm_2_overtime,
sum(uharm_3_overtime) as uharm_3_overtime,
sum(uharm_4_overtime) as uharm_4_overtime,
sum(uharm_5_overtime) as uharm_5_overtime,
sum(uharm_6_overtime) as uharm_6_overtime,
sum(uharm_7_overtime) as uharm_7_overtime,
sum(uharm_8_overtime) as uharm_8_overtime,
sum(uharm_9_overtime) as uharm_9_overtime,
sum(uharm_10_overtime) as uharm_10_overtime,
sum(uharm_11_overtime) as uharm_11_overtime,
sum(uharm_12_overtime) as uharm_12_overtime,
sum(uharm_13_overtime) as uharm_13_overtime,
sum(uharm_14_overtime) as uharm_14_overtime,
sum(uharm_15_overtime) as uharm_15_overtime,
sum(uharm_16_overtime) as uharm_16_overtime,
sum(uharm_17_overtime) as uharm_17_overtime,
sum(uharm_18_overtime) as uharm_18_overtime,
sum(uharm_19_overtime) as uharm_19_overtime,
sum(uharm_20_overtime) as uharm_20_overtime,
sum(uharm_21_overtime) as uharm_21_overtime,
sum(uharm_22_overtime) as uharm_22_overtime,
sum(uharm_23_overtime) as uharm_23_overtime,
sum(uharm_24_overtime) as uharm_24_overtime,
sum(uharm_25_overtime) as uharm_25_overtime,
sum(iharm_2_overtime) as iharm_2_overtime,
sum(iharm_3_overtime) as iharm_3_overtime,
sum(iharm_4_overtime) as iharm_4_overtime,
sum(iharm_5_overtime) as iharm_5_overtime,
sum(iharm_6_overtime) as iharm_6_overtime,
sum(iharm_7_overtime) as iharm_7_overtime,
sum(iharm_8_overtime) as iharm_8_overtime,
sum(iharm_9_overtime) as iharm_9_overtime,
sum(iharm_10_overtime) as iharm_10_overtime,
sum(iharm_11_overtime) as iharm_11_overtime,
sum(iharm_12_overtime) as iharm_12_overtime,
sum(iharm_13_overtime) as iharm_13_overtime,
sum(iharm_14_overtime) as iharm_14_overtime,
sum(iharm_15_overtime) as iharm_15_overtime,
sum(iharm_16_overtime) as iharm_16_overtime,
sum(iharm_17_overtime) as iharm_17_overtime,
sum(iharm_18_overtime) as iharm_18_overtime,
sum(iharm_19_overtime) as iharm_19_overtime,
sum(iharm_20_overtime) as iharm_20_overtime,
sum(iharm_21_overtime) as iharm_21_overtime,
sum(iharm_22_overtime) as iharm_22_overtime,
sum(iharm_23_overtime) as iharm_23_overtime,
sum(iharm_24_overtime) as iharm_24_overtime,
sum(iharm_25_overtime) as iharm_25_overtime,
sum(inuharm_1_overtime) as inuharm_1_overtime,
sum(inuharm_2_overtime) as inuharm_2_overtime,
sum(inuharm_3_overtime) as inuharm_3_overtime,
sum(inuharm_4_overtime) as inuharm_4_overtime,
sum(inuharm_5_overtime) as inuharm_5_overtime,
sum(inuharm_6_overtime) as inuharm_6_overtime,
sum(inuharm_7_overtime) as inuharm_7_overtime,
sum(inuharm_8_overtime) as inuharm_8_overtime,
sum(inuharm_9_overtime) as inuharm_9_overtime,
sum(inuharm_10_overtime) as inuharm_10_overtime,
sum(inuharm_11_overtime) as inuharm_11_overtime,
sum(inuharm_12_overtime) as inuharm_12_overtime,
sum(inuharm_13_overtime) as inuharm_13_overtime,
sum(inuharm_14_overtime) as inuharm_14_overtime,
sum(inuharm_15_overtime) as inuharm_15_overtime,
sum(inuharm_16_overtime) as inuharm_16_overtime,
sum(i_neg_overtime) as i_neg_overtime
from
r_stat_limit_rate_d
<where>
phasic_type = "T"
<if test=" ids != null and ids.size > 0">
AND my_index IN
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test=" statTime != null and statTime !=''">
AND time_id >= #{statTime}
</if>
<if test="endTime != null and endTime != ''">
AND time_id &lt;= #{endTime}
</if>
</where>
GROUP BY
`my_index`
</select>
</mapper> </mapper>

View File

@@ -68,4 +68,99 @@
AND time_id BETWEEN #{startTime} AND #{endTime} AND time_id BETWEEN #{startTime} AND #{endTime}
GROUP BY my_index GROUP BY my_index
</select> </select>
<select id="getSumTargetList" resultType="com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO">
SELECT
my_index as lineId ,
sum(all_time) as all_time,
sum(flicker_all_time) as flicker_all_time,
sum(freq_dev_overtime) as freq_dev_overtime,
sum(voltage_dev_overtime) as voltage_dev_overtime,
sum(ubalance_overtime) as ubalance_overtime,
sum(flicker_overtime) as flicker_overtime,
sum(uaberrance_overtime) as uaberrance_overtime,
sum(uharm_2_overtime) as uharm_2_overtime,
sum(uharm_3_overtime) as uharm_3_overtime,
sum(uharm_4_overtime) as uharm_4_overtime,
sum(uharm_5_overtime) as uharm_5_overtime,
sum(uharm_6_overtime) as uharm_6_overtime,
sum(uharm_7_overtime) as uharm_7_overtime,
sum(uharm_8_overtime) as uharm_8_overtime,
sum(uharm_9_overtime) as uharm_9_overtime,
sum(uharm_10_overtime) as uharm_10_overtime,
sum(uharm_11_overtime) as uharm_11_overtime,
sum(uharm_12_overtime) as uharm_12_overtime,
sum(uharm_13_overtime) as uharm_13_overtime,
sum(uharm_14_overtime) as uharm_14_overtime,
sum(uharm_15_overtime) as uharm_15_overtime,
sum(uharm_16_overtime) as uharm_16_overtime,
sum(uharm_17_overtime) as uharm_17_overtime,
sum(uharm_18_overtime) as uharm_18_overtime,
sum(uharm_19_overtime) as uharm_19_overtime,
sum(uharm_20_overtime) as uharm_20_overtime,
sum(uharm_21_overtime) as uharm_21_overtime,
sum(uharm_22_overtime) as uharm_22_overtime,
sum(uharm_23_overtime) as uharm_23_overtime,
sum(uharm_24_overtime) as uharm_24_overtime,
sum(uharm_25_overtime) as uharm_25_overtime,
sum(iharm_2_overtime) as iharm_2_overtime,
sum(iharm_3_overtime) as iharm_3_overtime,
sum(iharm_4_overtime) as iharm_4_overtime,
sum(iharm_5_overtime) as iharm_5_overtime,
sum(iharm_6_overtime) as iharm_6_overtime,
sum(iharm_7_overtime) as iharm_7_overtime,
sum(iharm_8_overtime) as iharm_8_overtime,
sum(iharm_9_overtime) as iharm_9_overtime,
sum(iharm_10_overtime) as iharm_10_overtime,
sum(iharm_11_overtime) as iharm_11_overtime,
sum(iharm_12_overtime) as iharm_12_overtime,
sum(iharm_13_overtime) as iharm_13_overtime,
sum(iharm_14_overtime) as iharm_14_overtime,
sum(iharm_15_overtime) as iharm_15_overtime,
sum(iharm_16_overtime) as iharm_16_overtime,
sum(iharm_17_overtime) as iharm_17_overtime,
sum(iharm_18_overtime) as iharm_18_overtime,
sum(iharm_19_overtime) as iharm_19_overtime,
sum(iharm_20_overtime) as iharm_20_overtime,
sum(iharm_21_overtime) as iharm_21_overtime,
sum(iharm_22_overtime) as iharm_22_overtime,
sum(iharm_23_overtime) as iharm_23_overtime,
sum(iharm_24_overtime) as iharm_24_overtime,
sum(iharm_25_overtime) as iharm_25_overtime,
sum(inuharm_1_overtime) as inuharm_1_overtime,
sum(inuharm_2_overtime) as inuharm_2_overtime,
sum(inuharm_3_overtime) as inuharm_3_overtime,
sum(inuharm_4_overtime) as inuharm_4_overtime,
sum(inuharm_5_overtime) as inuharm_5_overtime,
sum(inuharm_6_overtime) as inuharm_6_overtime,
sum(inuharm_7_overtime) as inuharm_7_overtime,
sum(inuharm_8_overtime) as inuharm_8_overtime,
sum(inuharm_9_overtime) as inuharm_9_overtime,
sum(inuharm_10_overtime) as inuharm_10_overtime,
sum(inuharm_11_overtime) as inuharm_11_overtime,
sum(inuharm_12_overtime) as inuharm_12_overtime,
sum(inuharm_13_overtime) as inuharm_13_overtime,
sum(inuharm_14_overtime) as inuharm_14_overtime,
sum(inuharm_15_overtime) as inuharm_15_overtime,
sum(inuharm_16_overtime) as inuharm_16_overtime,
sum(i_neg_overtime) as i_neg_overtime
from
r_stat_limit_target_d
<where>
phasic_type = "T"
<if test=" ids != null and ids.size > 0">
AND my_index IN
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test=" statTime != null and statTime !=''">
AND time_id >= #{statTime}
</if>
<if test="endTime != null and endTime != ''">
AND time_id &lt;= #{endTime}
</if>
</where>
GROUP BY
`my_index`
</select>
</mapper> </mapper>

View File

@@ -2,6 +2,7 @@ package com.njcn.harmonic.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
@@ -16,7 +17,7 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.dto.OverLimitLineDTO; import com.njcn.device.pq.pojo.dto.OverLimitLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
import com.njcn.device.pq.pojo.dto.WarningSubstationDTO; import com.njcn.device.pq.pojo.dto.WarningSubstationDTO;
import com.njcn.device.pq.pojo.vo.AreaLineInfoVO; import com.njcn.event.api.EventDetailFeignClient;
import com.njcn.harmonic.constant.Param; import com.njcn.harmonic.constant.Param;
import com.njcn.harmonic.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.mapper.RStatLimitRateDMapper;
import com.njcn.harmonic.mapper.RStatLimitTargetMapper; import com.njcn.harmonic.mapper.RStatLimitTargetMapper;
@@ -27,7 +28,6 @@ import com.njcn.harmonic.pojo.excel.monitor.OverLimitDays;
import com.njcn.harmonic.pojo.excel.monitor.UTimes; import com.njcn.harmonic.pojo.excel.monitor.UTimes;
import com.njcn.harmonic.pojo.excel.substation.SubstationExcel; import com.njcn.harmonic.pojo.excel.substation.SubstationExcel;
import com.njcn.harmonic.pojo.po.EventDetail; import com.njcn.harmonic.pojo.po.EventDetail;
import com.njcn.harmonic.pojo.po.LimitRate;
import com.njcn.harmonic.pojo.po.LimitTarget; import com.njcn.harmonic.pojo.po.LimitTarget;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
@@ -38,6 +38,10 @@ import com.njcn.harmonic.pojo.vo.WarningSubstationVO;
import com.njcn.harmonic.service.IAnalyzeService; import com.njcn.harmonic.service.IAnalyzeService;
import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.poi.excel.ExcelUtil; import com.njcn.poi.excel.ExcelUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -78,31 +82,33 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private final RStatLimitRateDMapper rateDMapper; private final RStatLimitRateDMapper rateDMapper;
private final RStatLimitTargetMapper targetMapper; private final RStatLimitTargetMapper targetMapper;
private final EventDetailFeignClient eventDetailFeignClient;
private final DicDataFeignClient dicDataFeignClient;
@Override @Override
public Page<OverAreaLimitVO> getAreaData(OverAreaVO param) { public Page<OverAreaLimitVO> getAreaData(OverAreaVO param) {
Page<OverAreaLimitVO> page = new Page<>(); Page<OverAreaLimitVO> page = new Page<>();
page.setSize(param.getPageSize()); page.setSize(param.getPageSize());
page.setCurrent(param.getPageNum()); page.setCurrent(param.getPageNum());
List<OverAreaLimitVO> list = new ArrayList<>(); List<OverAreaLimitVO> list = new ArrayList<>();
param.setServerName(generalInfo.getMicroServiceName()); param.setServerName(generalInfo.getMicroServiceName());
List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData(); List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
if (!CollectionUtils.isEmpty(deptList)){ if (!CollectionUtils.isEmpty(deptList)) {
page.setTotal(deptList.size()); page.setTotal(deptList.size());
int pages = (int)Math.ceil(deptList.size()*1.0/param.getPageSize()); int pages = (int) Math.ceil(deptList.size() * 1.0 / param.getPageSize());
page.setPages(pages); page.setPages(pages);
List<List<GeneralDeviceDTO>> pageList = Lists.partition(deptList,param.getPageSize()); List<List<GeneralDeviceDTO>> pageList = Lists.partition(deptList, param.getPageSize());
List<GeneralDeviceDTO> temList = pageList.get(param.getPageNum()-1); List<GeneralDeviceDTO> temList = pageList.get(param.getPageNum() - 1);
temList.forEach(item->{ temList.forEach(item -> {
OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO(); OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO();
if (!CollectionUtils.isEmpty(item.getLineIndexes())){ if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
List<LimitTarget> limitTargetList = harmonicService.getLimitTarget(item.getLineIndexes(),param.getSearchBeginTime(),param.getSearchEndTime()); List<LimitTarget> limitTargetList = harmonicService.getLimitTarget(item.getLineIndexes(), param.getSearchBeginTime(), param.getSearchEndTime());
overAreaLimitVO = handleAreaData(limitTargetList,item.getLineIndexes(),param); overAreaLimitVO = handleAreaData(limitTargetList, item.getLineIndexes(), param);
} }
overAreaLimitVO.setName(item.getName()); overAreaLimitVO.setName(item.getName());
list.add(overAreaLimitVO); list.add(overAreaLimitVO);
}); });
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)) {
List<OverAreaLimitVO> recordList = new ArrayList<>(); List<OverAreaLimitVO> recordList = new ArrayList<>();
//默认 根据在线监测点个数 倒叙排序 //默认 根据在线监测点个数 倒叙排序
recordList = list.stream().sorted(Comparator.comparing(OverAreaLimitVO::getOnlineMonitorNumber).reversed().thenComparing(OverAreaLimitVO::getName)).collect(Collectors.toList()); recordList = list.stream().sorted(Comparator.comparing(OverAreaLimitVO::getOnlineMonitorNumber).reversed().thenComparing(OverAreaLimitVO::getName)).collect(Collectors.toList());
@@ -116,157 +122,170 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Page<WarningSubstationVO> getWarningSubstation(OverAreaVO param) { public Page<WarningSubstationVO> getWarningSubstation(OverAreaVO param) {
//获取暂态统计指标
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(
DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
Page<WarningSubstationVO> page = new Page<>(); Page<WarningSubstationVO> page = new Page<>();
page.setSize(param.getPageSize()); page.setSize(param.getPageSize());
page.setCurrent(param.getPageNum()); page.setCurrent(param.getPageNum());
List<String> line = new ArrayList<>(),subInfo = new ArrayList<>(); List<String> line = new ArrayList<>(), subInfo = new ArrayList<>();
List<WarningSubstationDTO> substationDTOList = new ArrayList<>(); List<WarningSubstationDTO> substationDTOList = new ArrayList<>();
Map<String,List<LimitRate>> map = new HashMap<>(); Map<String, List<RStatLimitRateDPO>> map = new HashMap<>();
Map<String,List<EventDetail>> map2 = new HashMap<>(); Map<String, List<com.njcn.event.pojo.po.EventDetail>> map2 = new HashMap<>();
param.setServerName(generalInfo.getMicroServiceName()); param.setServerName(generalInfo.getMicroServiceName());
List<WarningSubstationVO> list = new ArrayList<>(); List<WarningSubstationVO> list = new ArrayList<>();
List<GeneralDeviceDTO> subList = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(param).getData(); List<GeneralDeviceDTO> subList = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(param).getData();
if (!CollectionUtils.isEmpty(subList)){ if (!CollectionUtils.isEmpty(subList)) {
page.setTotal(subList.size()); page.setTotal(subList.size());
int pages = (int)Math.ceil(subList.size()*1.0/param.getPageSize()); int pages = (int) Math.ceil(subList.size() * 1.0 / param.getPageSize());
page.setPages(pages); page.setPages(pages);
List<List<GeneralDeviceDTO>> pageList = Lists.partition(subList,param.getPageSize()); List<List<GeneralDeviceDTO>> pageList = Lists.partition(subList, param.getPageSize());
List<GeneralDeviceDTO> temList = pageList.get(param.getPageNum()-1); List<GeneralDeviceDTO> temList = pageList.get(param.getPageNum() - 1);
temList.forEach(item->{ temList.forEach(item -> {
line.addAll(item.getLineIndexes()); line.addAll(item.getLineIndexes());
subInfo.add(item.getIndex()); subInfo.add(item.getIndex());
}); });
if (!CollectionUtils.isEmpty(line)){ if (!CollectionUtils.isEmpty(line)) {
substationDTOList = lineFeignClient.getWarningSub(subInfo).getData(); substationDTOList = lineFeignClient.getWarningSub(subInfo).getData();
List<LimitRate> limitRateList = (List<LimitRate>)getAllData(line,param.getSearchBeginTime(),param.getSearchEndTime(),Param.LIMIT_RATE); List<RStatLimitRateDPO> limitRateList = (List<RStatLimitRateDPO>) getAllData(line, param.getSearchBeginTime(), param.getSearchEndTime(), Param.LIMIT_RATE);
if (!CollectionUtils.isEmpty(limitRateList)){ if (!CollectionUtils.isEmpty(limitRateList)) {
map = limitRateList.stream().collect(Collectors.groupingBy(LimitRate::getLineId)); map = limitRateList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
} }
List<EventDetail> eventDetailList = getEventDetail(line,param.getSearchBeginTime(),param.getSearchEndTime()); List<com.njcn.event.pojo.po.EventDetail> eventDetailList = getEventDetail(line, param.getSearchBeginTime(), param.getSearchEndTime());
if (!CollectionUtils.isEmpty(eventDetailList)){ if (!CollectionUtils.isEmpty(eventDetailList)) {
map2 = eventDetailList.stream().collect(Collectors.groupingBy(EventDetail::getLineId)); map2 = eventDetailList.stream().collect(Collectors.groupingBy(com.njcn.event.pojo.po.EventDetail::getLineId));
} }
} }
for (GeneralDeviceDTO item : temList) { for (GeneralDeviceDTO item : temList) {
int onlineMonitorCount = 0,alertMonitorCount = 0,alertCount = 0,freqCount = 0,voltageCount = 0,ubalanceCount = 0,flickerCount = 0,iNegCount = 0,uharmCount = 0,iharmCount = 0,inuharmCount = 0; int onlineMonitorCount = 0, alertMonitorCount = 0, alertCount = 0, freqCount = 0, voltageCount = 0, ubalanceCount = 0, flickerCount = 0, iNegCount = 0, uharmCount = 0, iharmCount = 0, inuharmCount = 0;
int freqCounts = 0,voltageCounts = 0,uharmCounts = 0,iharmCounts = 0,ubalanceCounts = 0,flickerCounts = 0,inuharmCounts = 0,iNegCounts = 0; int freqCounts = 0, voltageCounts = 0, uharmCounts = 0, iharmCounts = 0, ubalanceCounts = 0, flickerCounts = 0, inuharmCounts = 0, iNegCounts = 0;
int eventUp = 0,eventDown = 0,eventInterrupt = 0,eventUps = 0,eventDowns = 0,eventInterrupts = 0; int eventUp = 0, eventDown = 0, eventInterrupt = 0, eventUps = 0, eventDowns = 0, eventInterrupts = 0;
WarningSubstationVO warningSubstationVO = new WarningSubstationVO(); WarningSubstationVO warningSubstationVO = new WarningSubstationVO();
//电站id //电站id
warningSubstationVO.setId(item.getIndex()); warningSubstationVO.setId(item.getIndex());
//电站名称 //电站名称
warningSubstationVO.setPlantName(item.getName()); warningSubstationVO.setPlantName(item.getName());
List<String> lineList = item.getLineIndexes(); List<String> lineList = item.getLineIndexes();
if (!CollectionUtils.isEmpty(lineList)){ if (!CollectionUtils.isEmpty(lineList)) {
for (String item2 : lineList) { for (String item2 : lineList) {
//谐波统计 //谐波统计
if (!CollectionUtils.isEmpty(map.get(item2))){ if (!CollectionUtils.isEmpty(map.get(item2))) {
LimitRate limitRate = map.get(item2).get(0); RStatLimitRateDPO limitRate = map.get(item2).get(0);
if (!Objects.isNull(limitRate)){ if (!Objects.isNull(limitRate)) {
onlineMonitorCount++; onlineMonitorCount++;
if (limitRate.getFreqDevOverTime() > 0 || limitRate.getVoltageDevOverTime() > 0 || limitRate.getUBalanceOverTime() > 0 || limitRate.getFlickerOverTime() > 0 || limitRate.getINegOverTime() > 0 || limitRate.getUHarm2OverTime() > 0 || limitRate.getIHarm2OverTime() > 0 || limitRate.getInuHarm1OverTime() > 0){ if (limitRate.getFreqDevOvertime() > 0 || limitRate.getVoltageDevOvertime() > 0 || limitRate.getUbalanceOvertime() > 0 || limitRate.getFlickerOvertime() > 0 || limitRate.getINegOvertime() > 0 || limitRate.getUharm2Overtime() > 0 || limitRate.getIharm2Overtime() > 0 || limitRate.getInuharm1Overtime() > 0) {
alertMonitorCount++; alertMonitorCount++;
} }
if (limitRate.getFreqDevOverTime() > 0){ if (limitRate.getFreqDevOvertime() > 0) {
freqCount++; freqCount++;
freqCounts = freqCounts + limitRate.getFreqDevOverTime(); freqCounts = freqCounts + limitRate.getFreqDevOvertime();
} }
if (limitRate.getVoltageDevOverTime() > 0){ if (limitRate.getVoltageDevOvertime() > 0) {
voltageCount++; voltageCount++;
voltageCounts = voltageCounts + limitRate.getVoltageDevOverTime(); voltageCounts = voltageCounts + limitRate.getVoltageDevOvertime();
} }
if (limitRate.getUHarm2OverTime() > 0){ if (limitRate.getUharm2Overtime() > 0) {
uharmCount++; uharmCount++;
uharmCounts = uharmCounts + limitRate.getUHarm2OverTime(); uharmCounts = uharmCounts + limitRate.getUharm2Overtime();
} }
if (limitRate.getIHarm2OverTime() > 0){ if (limitRate.getIharm2Overtime() > 0) {
iharmCount++; iharmCount++;
iharmCounts = iharmCounts + limitRate.getIHarm2OverTime(); iharmCounts = iharmCounts + limitRate.getIharm2Overtime();
} }
if (limitRate.getUBalanceOverTime() > 0){ if (limitRate.getUbalanceOvertime() > 0) {
ubalanceCount++; ubalanceCount++;
ubalanceCounts = ubalanceCounts + limitRate.getUBalanceOverTime(); ubalanceCounts = ubalanceCounts + limitRate.getUbalanceOvertime();
} }
if (limitRate.getFlickerOverTime() > 0){ if (limitRate.getFlickerOvertime() > 0) {
flickerCount++; flickerCount++;
flickerCounts = flickerCounts + limitRate.getFlickerOverTime(); flickerCounts = flickerCounts + limitRate.getFlickerOvertime();
} }
if (limitRate.getInuHarm1OverTime() > 0){ if (limitRate.getInuharm1Overtime() > 0) {
inuharmCount++; inuharmCount++;
inuharmCounts = inuharmCounts + limitRate.getInuHarm1OverTime(); inuharmCounts = inuharmCounts + limitRate.getInuharm1Overtime();
} }
if (limitRate.getINegOverTime() > 0){ if (limitRate.getINegOvertime() > 0) {
iNegCount++; iNegCount++;
iNegCounts = iNegCounts + limitRate.getINegOverTime(); iNegCounts = iNegCounts + limitRate.getINegOvertime();
} }
alertCount = limitRate.getFreqDevOverTime() + limitRate.getVoltageDevOverTime() + limitRate.getUBalanceOverTime() + limitRate.getFlickerOverTime() + limitRate.getINegOverTime() + limitRate.getUHarm2OverTime() + limitRate.getIHarm2OverTime() + limitRate.getInuHarm1OverTime(); alertCount = limitRate.getFreqDevOvertime() + limitRate.getVoltageDevOvertime() + limitRate.getUbalanceOvertime() + limitRate.getFlickerOvertime() + limitRate.getINegOvertime() + limitRate.getUharm2Overtime() + limitRate.getIharm2Overtime() + limitRate.getInuharm1Overtime();
} }
} }
//暂降统计 //暂降统计
if (!CollectionUtils.isEmpty(map2.get(item2))){ if (!CollectionUtils.isEmpty(map2.get(item2))) {
List<EventDetail> eventDetailList = map2.get(item2); List<com.njcn.event.pojo.po.EventDetail> eventDetailList = map2.get(item2);
if (!CollectionUtils.isEmpty(eventDetailList)){ if (!CollectionUtils.isEmpty(eventDetailList)) {
for (EventDetail item3 : eventDetailList) { for (com.njcn.event.pojo.po.EventDetail item3 : eventDetailList) {
if (item3.getWaveType() == 1){ String eventType = item3.getEventType();
eventDowns++; List<String> code = eventStatis.stream().filter(x -> x.getId().equals(eventType))
} else if (item3.getWaveType() == 2){ .map(DictData::getCode).collect(Collectors.toList());
eventUps++; if (CollUtil.isNotEmpty(code)) {
} else if (item3.getWaveType() == 3){ if (DicDataEnum.VOLTAGE_DIP.getCode().equals(code.get(0))) {
eventInterrupts++; eventDowns++;
}
if (DicDataEnum.VOLTAGE_RISE.getCode().equals(code.get(0))) {
eventUps++;
}
if (DicDataEnum.SHORT_INTERRUPTIONS.getCode().equals(code.get(0))) {
eventInterrupts++;
}
} }
} }
} }
} }
if (eventDowns > 0){ if (eventDowns > 0) {
eventDown++; eventDown++;
} }
if (eventUps > 0){ if (eventUps > 0) {
eventUp++; eventUp++;
} }
if (eventInterrupts > 0){ if (eventInterrupts > 0) {
eventInterrupt++; eventInterrupt++;
} }
} }
} }
//在线监测点数量(个) //在线监测点数量(个)
warningSubstationVO.setOnlineMonitorCounts(onlineMonitorCount); warningSubstationVO.setOnlineMonitorCounts(onlineMonitorCount);
if (onlineMonitorCount != 0){ if (onlineMonitorCount != 0) {
//告警监测点数量(个) //告警监测点数量(个)
warningSubstationVO.setAlertMonitorCounts(alertMonitorCount); warningSubstationVO.setAlertMonitorCounts(alertMonitorCount);
//告警次数 //告警次数
warningSubstationVO.setAlertCounts(alertCount); warningSubstationVO.setAlertCounts(alertCount);
//告警频次(次/点) //告警频次(次/点)
warningSubstationVO.setAlertAlarmFrequency(alertMonitorCount==0?0:BigDecimal.valueOf(alertCount*1.0/alertMonitorCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setAlertAlarmFrequency(alertMonitorCount == 0 ? 0 : BigDecimal.valueOf(alertCount * 1.0 / alertMonitorCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//频率偏差 //频率偏差
warningSubstationVO.setFrequencyDeviation(freqCount==0?0:BigDecimal.valueOf(freqCounts*1.0/freqCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setFrequencyDeviation(freqCount == 0 ? 0 : BigDecimal.valueOf(freqCounts * 1.0 / freqCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//电压偏差 //电压偏差
warningSubstationVO.setVoltageDeviation(voltageCount==0?0:BigDecimal.valueOf(voltageCounts*1.0/voltageCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setVoltageDeviation(voltageCount == 0 ? 0 : BigDecimal.valueOf(voltageCounts * 1.0 / voltageCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//谐波电压 //谐波电压
warningSubstationVO.setHarmonicVoltage(uharmCount==0?0:BigDecimal.valueOf(uharmCounts*1.0/uharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setHarmonicVoltage(uharmCount == 0 ? 0 : BigDecimal.valueOf(uharmCounts * 1.0 / uharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//谐波电流 //谐波电流
warningSubstationVO.setHarmonicCurrent(iharmCount==0?0:BigDecimal.valueOf(iharmCounts*1.0/iharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setHarmonicCurrent(iharmCount == 0 ? 0 : BigDecimal.valueOf(iharmCounts * 1.0 / iharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//三相电压不平衡 //三相电压不平衡
warningSubstationVO.setThreePhaseVoltageUnbalance(ubalanceCount==0?0:BigDecimal.valueOf(ubalanceCounts*1.0/ubalanceCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setThreePhaseVoltageUnbalance(ubalanceCount == 0 ? 0 : BigDecimal.valueOf(ubalanceCounts * 1.0 / ubalanceCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//闪变 //闪变
warningSubstationVO.setFlicker(flickerCount==0?0:BigDecimal.valueOf(flickerCounts*1.0/flickerCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setFlicker(flickerCount == 0 ? 0 : BigDecimal.valueOf(flickerCounts * 1.0 / flickerCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//间谐波电压 //间谐波电压
warningSubstationVO.setInterHarmonic(inuharmCount==0?0:BigDecimal.valueOf(inuharmCounts*1.0/inuharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setInterHarmonic(inuharmCount == 0 ? 0 : BigDecimal.valueOf(inuharmCounts * 1.0 / inuharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//负序电流 //负序电流
warningSubstationVO.setNegative(iNegCount==0?0:BigDecimal.valueOf(iNegCounts*1.0/iNegCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setNegative(iNegCount == 0 ? 0 : BigDecimal.valueOf(iNegCounts * 1.0 / iNegCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
//电压暂降 //电压暂降
warningSubstationVO.setVoltageDip(eventDown==0?0:BigDecimal.valueOf(eventDowns*1.0/eventDown).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setVoltageDip(eventDown == 0 ? 0 : BigDecimal.valueOf(eventDowns * 1.0 / eventDown).setScale(2, RoundingMode.HALF_UP).doubleValue());
//电压暂升 //电压暂升
warningSubstationVO.setVoltageSwell(eventUp==0?0:BigDecimal.valueOf(eventUps*1.0/eventUp).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setVoltageSwell(eventUp == 0 ? 0 : BigDecimal.valueOf(eventUps * 1.0 / eventUp).setScale(2, RoundingMode.HALF_UP).doubleValue());
//短时中断 //短时中断
warningSubstationVO.setShortInterruption(eventInterrupt==0?0:BigDecimal.valueOf(eventInterrupts*1.0/eventInterrupt).setScale(2, RoundingMode.HALF_UP).doubleValue()); warningSubstationVO.setShortInterruption(eventInterrupt == 0 ? 0 : BigDecimal.valueOf(eventInterrupts * 1.0 / eventInterrupt).setScale(2, RoundingMode.HALF_UP).doubleValue());
} }
list.add(warningSubstationVO); list.add(warningSubstationVO);
} }
} }
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)) {
for (WarningSubstationVO item1 : list) { for (WarningSubstationVO item1 : list) {
for (WarningSubstationDTO item2 : substationDTOList) { for (WarningSubstationDTO item2 : substationDTOList) {
if (Objects.equals(item1.getId(),item2.getId())){ if (Objects.equals(item1.getId(), item2.getId())) {
item1.setProvinceCompany(item2.getProvince()); item1.setProvinceCompany(item2.getProvince());
item1.setCityCompany(item2.getCity()); item1.setCityCompany(item2.getCity());
item1.setPlantVoltageLevel(item2.getScale()); item1.setPlantVoltageLevel(item2.getScale());
@@ -291,12 +310,12 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
List<String> lineList = new ArrayList<>(); List<String> lineList = new ArrayList<>();
List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData(); List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
if (!CollectionUtils.isEmpty(deptList)) { if (!CollectionUtils.isEmpty(deptList)) {
deptList.forEach(item->{ deptList.forEach(item -> {
lineList.addAll(item.getLineIndexes()); lineList.addAll(item.getLineIndexes());
}); });
} }
if (CollectionUtil.isNotEmpty(lineList)) { if (CollectionUtil.isNotEmpty(lineList)) {
page = targetMapper.getSumLimitTargetPage(page, lineList, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())), page = targetMapper.getSumLimitTargetPage(page, lineList, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))); DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())));
List<MonitorOverLimitVO> pageRecords = page.getRecords(); List<MonitorOverLimitVO> pageRecords = page.getRecords();
if (CollectionUtils.isEmpty(pageRecords)) { if (CollectionUtils.isEmpty(pageRecords)) {
@@ -309,12 +328,12 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
pollutionParamDTO.setLineList(list); pollutionParamDTO.setLineList(list);
List<OverLimitLineDTO> overLimitLineList = lineFeignClient.getOverLimitLineInfo(pollutionParamDTO).getData(); List<OverLimitLineDTO> overLimitLineList = lineFeignClient.getOverLimitLineInfo(pollutionParamDTO).getData();
List<RStatLimitTargetDPO> rStatLimitTargetDPOS = targetMapper.selectList(new QueryWrapper<RStatLimitTargetDPO>() List<RStatLimitTargetDPO> rStatLimitTargetDPOS = targetMapper.selectList(new QueryWrapper<RStatLimitTargetDPO>()
.in("r_stat_limit_target_d.my_index", list).between("r_stat_limit_target_d.time_id",DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())), .in("r_stat_limit_target_d.my_index", list).between("r_stat_limit_target_d.time_id", DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())))); DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))));
Map<String, List<RStatLimitTargetDPO>> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId)); Map<String, List<RStatLimitTargetDPO>> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
for (OverLimitLineDTO vo : overLimitLineList) { for (OverLimitLineDTO vo : overLimitLineList) {
MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO(); MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO();
BeanUtil.copyProperties(vo,monitorOverLimitVO); BeanUtil.copyProperties(vo, monitorOverLimitVO);
MonitorOverLimitVO source = monMap.get(vo.getId()).get(0); MonitorOverLimitVO source = monMap.get(vo.getId()).get(0);
monitorOverLimitVO.setOverDay(source.getOverDay()); monitorOverLimitVO.setOverDay(source.getOverDay());
monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay()); monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay());
@@ -356,7 +375,7 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
} }
} }
if (!CollectionUtils.isEmpty(result)){ if (!CollectionUtils.isEmpty(result)) {
//默认 根据在线监测点个数 倒叙排序 //默认 根据在线监测点个数 倒叙排序
List<MonitorOverLimitVO> recordList = result.stream().sorted(Comparator.comparing(MonitorOverLimitVO::getOverDay).reversed()).collect(Collectors.toList()); List<MonitorOverLimitVO> recordList = result.stream().sorted(Comparator.comparing(MonitorOverLimitVO::getOverDay).reversed()).collect(Collectors.toList());
page.setRecords(recordList); page.setRecords(recordList);
@@ -509,15 +528,15 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private boolean filterNotQualifiedHarmVolData(RStatLimitTargetDPO t) { private boolean filterNotQualifiedHarmVolData(RStatLimitTargetDPO t) {
// 电压畸变率+谐波电压含有率2-25次 // 电压畸变率+谐波电压含有率2-25次
int i = t.getUaberranceOvertime() + t.getUharm2Overtime() + t.getUharm3Overtime() + t.getUharm4Overtime() + t.getUharm5Overtime() + t.getUharm6Overtime() + t.getUharm7Overtime() + t.getUharm8Overtime() + t.getUharm9Overtime() + t.getUharm10Overtime() + t.getUharm11Overtime() + t.getUharm12Overtime() + t.getUharm13Overtime() + t.getUharm14Overtime() + t.getUharm15Overtime() + t.getUharm16Overtime() + t.getUharm17Overtime() + t.getUharm18Overtime() + t.getUharm19Overtime() + t.getUharm20Overtime() + t.getUharm21Overtime() + t.getUharm22Overtime() + t.getUharm23Overtime() + t.getUharm24Overtime() + t.getUharm25Overtime(); int i = t.getUaberranceOvertime() + t.getUharm2Overtime() + t.getUharm3Overtime() + t.getUharm4Overtime() + t.getUharm5Overtime() + t.getUharm6Overtime() + t.getUharm7Overtime() + t.getUharm8Overtime() + t.getUharm9Overtime() + t.getUharm10Overtime() + t.getUharm11Overtime() + t.getUharm12Overtime() + t.getUharm13Overtime() + t.getUharm14Overtime() + t.getUharm15Overtime() + t.getUharm16Overtime() + t.getUharm17Overtime() + t.getUharm18Overtime() + t.getUharm19Overtime() + t.getUharm20Overtime() + t.getUharm21Overtime() + t.getUharm22Overtime() + t.getUharm23Overtime() + t.getUharm24Overtime() + t.getUharm25Overtime();
if (i > 0){ if (i > 0) {
return true; return true;
} }
return false; return false;
} }
private boolean filterNotQualifiedInuharmData(RStatLimitTargetDPO t) { private boolean filterNotQualifiedInuharmData(RStatLimitTargetDPO t) {
int i =t.getInuharm1Overtime()+ t.getInuharm2Overtime() + t.getInuharm3Overtime() + t.getInuharm4Overtime() + t.getInuharm5Overtime() + t.getInuharm6Overtime() + t.getInuharm7Overtime() + t.getInuharm8Overtime() + t.getInuharm9Overtime() + t.getInuharm10Overtime() + t.getInuharm11Overtime() + t.getInuharm12Overtime() + t.getInuharm13Overtime() + t.getInuharm14Overtime() + t.getInuharm15Overtime() + t.getInuharm16Overtime(); int i = t.getInuharm1Overtime() + t.getInuharm2Overtime() + t.getInuharm3Overtime() + t.getInuharm4Overtime() + t.getInuharm5Overtime() + t.getInuharm6Overtime() + t.getInuharm7Overtime() + t.getInuharm8Overtime() + t.getInuharm9Overtime() + t.getInuharm10Overtime() + t.getInuharm11Overtime() + t.getInuharm12Overtime() + t.getInuharm13Overtime() + t.getInuharm14Overtime() + t.getInuharm15Overtime() + t.getInuharm16Overtime();
if (i > 0){ if (i > 0) {
return true; return true;
} }
return false; return false;
@@ -525,14 +544,14 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private boolean filterNotQualifiedIharmData(RStatLimitTargetDPO t) { private boolean filterNotQualifiedIharmData(RStatLimitTargetDPO t) {
int i = t.getIharm2Overtime() + t.getIharm3Overtime() + t.getIharm4Overtime() + t.getIharm5Overtime() + t.getIharm6Overtime() + t.getIharm7Overtime() + t.getIharm8Overtime() + t.getIharm9Overtime() + t.getIharm10Overtime() + t.getIharm11Overtime() + t.getIharm12Overtime() + t.getIharm13Overtime() + t.getIharm14Overtime() + t.getIharm15Overtime() + t.getIharm16Overtime() + t.getIharm17Overtime() + t.getIharm18Overtime() + t.getIharm19Overtime() + t.getIharm20Overtime() + t.getIharm21Overtime() + t.getIharm22Overtime() + t.getIharm23Overtime() + t.getIharm24Overtime() + t.getIharm25Overtime(); int i = t.getIharm2Overtime() + t.getIharm3Overtime() + t.getIharm4Overtime() + t.getIharm5Overtime() + t.getIharm6Overtime() + t.getIharm7Overtime() + t.getIharm8Overtime() + t.getIharm9Overtime() + t.getIharm10Overtime() + t.getIharm11Overtime() + t.getIharm12Overtime() + t.getIharm13Overtime() + t.getIharm14Overtime() + t.getIharm15Overtime() + t.getIharm16Overtime() + t.getIharm17Overtime() + t.getIharm18Overtime() + t.getIharm19Overtime() + t.getIharm20Overtime() + t.getIharm21Overtime() + t.getIharm22Overtime() + t.getIharm23Overtime() + t.getIharm24Overtime() + t.getIharm25Overtime();
if (i > 0){ if (i > 0) {
return true; return true;
} }
return false; return false;
} }
private boolean filterNotQualifiedUharmData(RStatLimitTargetDPO t) { private boolean filterNotQualifiedUharmData(RStatLimitTargetDPO t) {
if (t.getUharm2Overtime()!=0 || t.getUharm3Overtime()!=0 || t.getUharm4Overtime()!=0 || t.getUharm5Overtime()!=0 || t.getUharm6Overtime()!=0 || t.getUharm7Overtime()!=0 || t.getUharm8Overtime()!=0 || t.getUharm9Overtime()!=0 || t.getUharm10Overtime()!=0 || t.getUharm11Overtime()!=0 ||t.getUharm12Overtime()!=0 || t.getUharm13Overtime()!=0 || t.getUharm14Overtime()!=0 || t.getUharm15Overtime()!=0 || t.getUharm16Overtime()!=0 || t.getUharm17Overtime()!=0 ||t.getUharm18Overtime()!=0 || t.getUharm19Overtime() !=0|| t.getUharm20Overtime()!=0 || t.getUharm21Overtime() !=0|| t.getUharm22Overtime() !=0|| t.getUharm23Overtime() !=0|| t.getUharm24Overtime()!=0 || t.getUharm25Overtime() !=0) { if (t.getUharm2Overtime() != 0 || t.getUharm3Overtime() != 0 || t.getUharm4Overtime() != 0 || t.getUharm5Overtime() != 0 || t.getUharm6Overtime() != 0 || t.getUharm7Overtime() != 0 || t.getUharm8Overtime() != 0 || t.getUharm9Overtime() != 0 || t.getUharm10Overtime() != 0 || t.getUharm11Overtime() != 0 || t.getUharm12Overtime() != 0 || t.getUharm13Overtime() != 0 || t.getUharm14Overtime() != 0 || t.getUharm15Overtime() != 0 || t.getUharm16Overtime() != 0 || t.getUharm17Overtime() != 0 || t.getUharm18Overtime() != 0 || t.getUharm19Overtime() != 0 || t.getUharm20Overtime() != 0 || t.getUharm21Overtime() != 0 || t.getUharm22Overtime() != 0 || t.getUharm23Overtime() != 0 || t.getUharm24Overtime() != 0 || t.getUharm25Overtime() != 0) {
return true; return true;
} }
return false; return false;
@@ -541,16 +560,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override @Override
public String exportArea(OverAreaVO param, String methodDescribe) { public String exportArea(OverAreaVO param, String methodDescribe) {
List<AreaExcel> result = new ArrayList<>(); List<AreaExcel> result = new ArrayList<>();
String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime()+ CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() +".xlsx"; String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime() + CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() + ".xlsx";
String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex(); String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex();
log.error("文件路径" + targetDir); log.error("文件路径" + targetDir);
log.error("文件名" + fileName); log.error("文件名" + fileName);
File excel = new File(targetDir, fileName); File excel = new File(targetDir, fileName);
List<OverAreaLimitVO> list = getAreaData(param).getRecords(); List<OverAreaLimitVO> list = getAreaData(param).getRecords();
if (!CollectionUtil.isEmpty(list)) { if (!CollectionUtil.isEmpty(list)) {
list.forEach(item->{ list.forEach(item -> {
AreaExcel areaExcel = new AreaExcel(); AreaExcel areaExcel = new AreaExcel();
BeanUtil.copyProperties(item,areaExcel); BeanUtil.copyProperties(item, areaExcel);
result.add(areaExcel); result.add(areaExcel);
}); });
} }
@@ -561,16 +580,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override @Override
public String exportSubstation(OverAreaVO param, String methodDescribe) { public String exportSubstation(OverAreaVO param, String methodDescribe) {
List<SubstationExcel> result = new ArrayList<>(); List<SubstationExcel> result = new ArrayList<>();
String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime()+ CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() +".xlsx"; String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime() + CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() + ".xlsx";
String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex(); String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex();
log.error("文件路径" + targetDir); log.error("文件路径" + targetDir);
log.error("文件名" + fileName); log.error("文件名" + fileName);
File excel = new File(targetDir, fileName); File excel = new File(targetDir, fileName);
List<WarningSubstationVO> list = getWarningSubstation(param).getRecords(); List<WarningSubstationVO> list = getWarningSubstation(param).getRecords();
if (!CollectionUtil.isEmpty(list)) { if (!CollectionUtil.isEmpty(list)) {
list.forEach(item->{ list.forEach(item -> {
SubstationExcel substationExcel = new SubstationExcel(); SubstationExcel substationExcel = new SubstationExcel();
BeanUtil.copyProperties(item,substationExcel); BeanUtil.copyProperties(item, substationExcel);
result.add(substationExcel); result.add(substationExcel);
}); });
} }
@@ -581,32 +600,32 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override @Override
public String exportMonitor(OverAreaVO param, String methodDescribe) { public String exportMonitor(OverAreaVO param, String methodDescribe) {
List<MonitorExcel> result = new ArrayList<>(); List<MonitorExcel> result = new ArrayList<>();
String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime()+ CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() +".xlsx"; String fileName = methodDescribe + CharUtil.UNDERLINE + param.getSearchBeginTime() + CharUtil.DASHED + param.getSearchEndTime() + CharUtil.UNDERLINE + param.getStatisticalType().getName() + ".xlsx";
String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex(); String targetDir = generalInfo.getBusinessTempPath() + File.separator + RequestUtil.getUserIndex();
log.error("文件路径" + targetDir); log.error("文件路径" + targetDir);
log.error("文件名" + fileName); log.error("文件名" + fileName);
File excel = new File(targetDir, fileName); File excel = new File(targetDir, fileName);
List<MonitorOverLimitVO> list = monitorOverLimitVO(param).getRecords(); List<MonitorOverLimitVO> list = monitorOverLimitVO(param).getRecords();
if (!CollectionUtil.isEmpty(list)) { if (!CollectionUtil.isEmpty(list)) {
list.forEach(item->{ list.forEach(item -> {
MonitorExcel monitorExcel = new MonitorExcel(); MonitorExcel monitorExcel = new MonitorExcel();
BeanUtil.copyProperties(item,monitorExcel); BeanUtil.copyProperties(item, monitorExcel);
OverLimitDays overLimitDays = new OverLimitDays(); OverLimitDays overLimitDays = new OverLimitDays();
List<UTimes> list1 = new ArrayList<>(); List<UTimes> list1 = new ArrayList<>();
UTimes uTimes = new UTimes(); UTimes uTimes = new UTimes();
BeanUtil.copyProperties(item,uTimes); BeanUtil.copyProperties(item, uTimes);
list1.add(uTimes); list1.add(uTimes);
overLimitDays.setUTimes(list1); overLimitDays.setUTimes(list1);
List<ITimes> list2 = new ArrayList<>(); List<ITimes> list2 = new ArrayList<>();
ITimes iTimes = new ITimes(); ITimes iTimes = new ITimes();
BeanUtil.copyProperties(item,iTimes); BeanUtil.copyProperties(item, iTimes);
list2.add(iTimes); list2.add(iTimes);
overLimitDays.setITimes(list2); overLimitDays.setITimes(list2);
List<OverLimitDays> list3 = new ArrayList<>(); List<OverLimitDays> list3 = new ArrayList<>();
BeanUtil.copyProperties(item,overLimitDays); BeanUtil.copyProperties(item, overLimitDays);
list3.add(overLimitDays); list3.add(overLimitDays);
monitorExcel.setOverLimitDays(list3); monitorExcel.setOverLimitDays(list3);
result.add(monitorExcel); result.add(monitorExcel);
@@ -619,177 +638,142 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
/** /**
* 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比 * 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比
*
* @param list 集合 * @param list 集合
* type 类型 * type 类型
* @return * @return
* @author xy * @author xy
* @date 2022/2/25 15:05 * @date 2022/2/25 15:05
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public OverAreaLimitVO handleAreaData(List<LimitTarget> list, List<String> line, OverAreaVO param) { public OverAreaLimitVO handleAreaData(List<LimitTarget> list, List<String> line, OverAreaVO param) {
int onlineCount = 0,overLineCount = 0,freqCount = 0,voltageCount = 0,ubalanceCount = 0,flickerCount = 0,iNegCount = 0,uharmCount = 0,iharmCount = 0,inuharmCount = 0; int onlineCount = 0, overLineCount = 0, freqCount = 0, voltageCount = 0, ubalanceCount = 0, flickerCount = 0, iNegCount = 0, uharmCount = 0, iharmCount = 0, inuharmCount = 0;
int freqOverDay = 0,voltageOverDay = 0, ubalanceOverDay = 0,flickerOverDay = 0,iNegOverDay = 0,uharmOverDay = 0,iharmOverDay = 0,inuharmOverDay = 0; int freqOverDay = 0, voltageOverDay = 0, ubalanceOverDay = 0, flickerOverDay = 0, iNegOverDay = 0, uharmOverDay = 0, iharmOverDay = 0, inuharmOverDay = 0;
OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO(); OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO();
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)) {
List<LimitTarget> data = (List<LimitTarget>)getAllData(line,param.getSearchBeginTime(),param.getSearchEndTime(),Param.LIMIT_TARGET); List<RStatLimitTargetDPO> data = (List<RStatLimitTargetDPO>) getAllData(line, param.getSearchBeginTime(), param.getSearchEndTime(), Param.LIMIT_TARGET);
if (!CollectionUtils.isEmpty(data)) { if (!CollectionUtils.isEmpty(data)) {
onlineCount = data.size(); onlineCount = data.size();
//在线监测点个数 //在线监测点个数
overAreaLimitVO.setOnlineMonitorNumber(onlineCount); overAreaLimitVO.setOnlineMonitorNumber(onlineCount);
for (LimitTarget item : data) { for (RStatLimitTargetDPO item : data) {
if (item.getFreqDevOverTime() > 0 || item.getVoltageDevOverTime() > 0 || item.getUBalanceOverTime() > 0 || item.getFlickerOverTime() > 0 || item.getINegOverTime() > 0 ||item.getUHarm2OverTime() > 0 || item.getIHarm2OverTime() > 0 || item.getInuHarm1OverTime() > 0) { if (item.getFreqDevOvertime() > 0 || item.getVoltageDevOvertime() > 0 || item.getUbalanceOvertime() > 0 || item.getFlickerOvertime() > 0 || item.getINegOvertime() > 0 || item.getUharm2Overtime() > 0 || item.getIharm2Overtime() > 0 || item.getInuharm1Overtime() > 0) {
overLineCount++; overLineCount++;
} }
if (item.getFreqDevOverTime() > 0){ if (item.getFreqDevOvertime() > 0) {
freqCount++; freqCount++;
} }
if (item.getVoltageDevOverTime() > 0){ if (item.getVoltageDevOvertime() > 0) {
voltageCount++; voltageCount++;
} }
if (item.getUBalanceOverTime() > 0){ if (item.getUbalanceOvertime() > 0) {
ubalanceCount++; ubalanceCount++;
} }
if (item.getFlickerOverTime() > 0){ if (item.getFlickerOvertime() > 0) {
flickerCount++; flickerCount++;
} }
if (item.getINegOverTime() > 0){ if (item.getINegOvertime() > 0) {
iNegCount++; iNegCount++;
} }
if (item.getUHarm2OverTime() > 0){ if (item.getUharm2Overtime() > 0) {
uharmCount++; uharmCount++;
} }
if (item.getIHarm2OverTime() > 0){ if (item.getIharm2Overtime() > 0) {
iharmCount++; iharmCount++;
} }
if (item.getInuHarm1OverTime() > 0){ if (item.getInuharm1Overtime() > 0) {
inuharmCount++; inuharmCount++;
} }
} }
//超标监测点个数 //超标监测点个数
overAreaLimitVO.setOverLimitMonitorNumber(overLineCount); overAreaLimitVO.setOverLimitMonitorNumber(overLineCount);
//超标监测点数占比 //超标监测点数占比
overAreaLimitVO.setOverBiLi(BigDecimal.valueOf(overLineCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setOverBiLi(BigDecimal.valueOf(overLineCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//频率偏差 //频率偏差
overAreaLimitVO.setFrequencyMonitorNumber(freqCount); overAreaLimitVO.setFrequencyMonitorNumber(freqCount);
overAreaLimitVO.setFrequencyBiLi(BigDecimal.valueOf(freqCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setFrequencyBiLi(BigDecimal.valueOf(freqCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//电压偏差 //电压偏差
overAreaLimitVO.setVoltageMonitorNumber(voltageCount); overAreaLimitVO.setVoltageMonitorNumber(voltageCount);
overAreaLimitVO.setVoltageBiLi(BigDecimal.valueOf(voltageCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setVoltageBiLi(BigDecimal.valueOf(voltageCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//谐波电压 //谐波电压
overAreaLimitVO.setHarmonicVoltageMonitorNumber(uharmCount); overAreaLimitVO.setHarmonicVoltageMonitorNumber(uharmCount);
overAreaLimitVO.setHarmonicVoltageBiLi(BigDecimal.valueOf(uharmCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setHarmonicVoltageBiLi(BigDecimal.valueOf(uharmCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//谐波电流 //谐波电流
overAreaLimitVO.setHarmonicCurrentMonitorNumber(iharmCount); overAreaLimitVO.setHarmonicCurrentMonitorNumber(iharmCount);
overAreaLimitVO.setHarmonicCurrentBiLi(BigDecimal.valueOf(iharmCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setHarmonicCurrentBiLi(BigDecimal.valueOf(iharmCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//三相电压不平衡度 //三相电压不平衡度
overAreaLimitVO.setThreePhaseVoltageMonitorNumber(ubalanceCount); overAreaLimitVO.setThreePhaseVoltageMonitorNumber(ubalanceCount);
overAreaLimitVO.setThreePhaseVoltageBiLi(BigDecimal.valueOf(ubalanceCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setThreePhaseVoltageBiLi(BigDecimal.valueOf(ubalanceCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//闪变 //闪变
overAreaLimitVO.setFlickerMonitorNumber(flickerCount); overAreaLimitVO.setFlickerMonitorNumber(flickerCount);
overAreaLimitVO.setFlickerBiLi(BigDecimal.valueOf(flickerCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setFlickerBiLi(BigDecimal.valueOf(flickerCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//负序电流 //负序电流
overAreaLimitVO.setNegativeMonitorNumber(iNegCount); overAreaLimitVO.setNegativeMonitorNumber(iNegCount);
overAreaLimitVO.setNegativeBiLi(BigDecimal.valueOf(iNegCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setNegativeBiLi(BigDecimal.valueOf(iNegCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
//间谐波电压 //间谐波电压
overAreaLimitVO.setInterHarmonicMonitorNumber(inuharmCount); overAreaLimitVO.setInterHarmonicMonitorNumber(inuharmCount);
overAreaLimitVO.setInterHarmonicBiLi(BigDecimal.valueOf(inuharmCount*1.0/data.size()*100).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setInterHarmonicBiLi(BigDecimal.valueOf(inuharmCount * 1.0 / data.size() * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
} }
} }
Map<Instant,List<LimitTarget>> map = list.stream().collect(Collectors.groupingBy(LimitTarget::getTime)); Map<Instant, List<LimitTarget>> map = list.stream().collect(Collectors.groupingBy(LimitTarget::getTime));
for (Instant key : map.keySet()) { for (Instant key : map.keySet()) {
List<LimitTarget> l = map.get(key); List<LimitTarget> l = map.get(key);
for (LimitTarget pojo : l) { for (LimitTarget pojo : l) {
if (pojo.getFreqDevOverTime() > 0){ if (pojo.getFreqDevOverTime() > 0) {
freqOverDay++; freqOverDay++;
} }
if (pojo.getVoltageDevOverTime() > 0){ if (pojo.getVoltageDevOverTime() > 0) {
voltageOverDay++; voltageOverDay++;
} }
if (pojo.getUBalanceOverTime() > 0){ if (pojo.getUBalanceOverTime() > 0) {
ubalanceOverDay++; ubalanceOverDay++;
} }
if (pojo.getFlickerOverTime() > 0){ if (pojo.getFlickerOverTime() > 0) {
flickerOverDay++; flickerOverDay++;
} }
if (pojo.getINegOverTime() > 0){ if (pojo.getINegOverTime() > 0) {
iNegOverDay++; iNegOverDay++;
} }
if (pojo.getUHarm2OverTime() > 0){ if (pojo.getUHarm2OverTime() > 0) {
uharmOverDay++; uharmOverDay++;
} }
if (pojo.getIHarm2OverTime() > 0){ if (pojo.getIHarm2OverTime() > 0) {
iharmOverDay++; iharmOverDay++;
} }
if (pojo.getInuHarm1OverTime() > 0){ if (pojo.getInuHarm1OverTime() > 0) {
inuharmOverDay++; inuharmOverDay++;
} }
} }
} }
if (onlineCount != 0){ if (onlineCount != 0) {
overAreaLimitVO.setFrequencyOverDayBiLi(freqCount == 0?0.0:BigDecimal.valueOf(freqOverDay*1.0/freqCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setFrequencyOverDayBiLi(freqCount == 0 ? 0.0 : BigDecimal.valueOf(freqOverDay * 1.0 / freqCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setVoltageOverDayBiLi(voltageCount == 0?0.0:BigDecimal.valueOf(voltageOverDay*1.0/voltageCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setVoltageOverDayBiLi(voltageCount == 0 ? 0.0 : BigDecimal.valueOf(voltageOverDay * 1.0 / voltageCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setThreePhaseVoltageOverDayBiLi(ubalanceCount == 0?0.0:BigDecimal.valueOf(ubalanceOverDay*1.0/ubalanceCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setThreePhaseVoltageOverDayBiLi(ubalanceCount == 0 ? 0.0 : BigDecimal.valueOf(ubalanceOverDay * 1.0 / ubalanceCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setFlickerOverDayBiLi(flickerCount == 0?0.0:BigDecimal.valueOf(flickerOverDay*1.0/flickerCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setFlickerOverDayBiLi(flickerCount == 0 ? 0.0 : BigDecimal.valueOf(flickerOverDay * 1.0 / flickerCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setNegativeOverDayBiLi(iNegCount == 0?0.0:BigDecimal.valueOf(iNegOverDay*1.0/iNegCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setNegativeOverDayBiLi(iNegCount == 0 ? 0.0 : BigDecimal.valueOf(iNegOverDay * 1.0 / iNegCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setHarmonicVoltageOverDayBiLi(uharmCount == 0?0.0:BigDecimal.valueOf(uharmOverDay*1.0/uharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setHarmonicVoltageOverDayBiLi(uharmCount == 0 ? 0.0 : BigDecimal.valueOf(uharmOverDay * 1.0 / uharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setHarmonicCurrentOverDayBiLi(iharmCount == 0?0.0:BigDecimal.valueOf(iharmOverDay*1.0/iharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setHarmonicCurrentOverDayBiLi(iharmCount == 0 ? 0.0 : BigDecimal.valueOf(iharmOverDay * 1.0 / iharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
overAreaLimitVO.setInterHarmonicOverDayBiLi(inuharmCount == 0?0.0:BigDecimal.valueOf(inuharmOverDay*1.0/inuharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue()); overAreaLimitVO.setInterHarmonicOverDayBiLi(inuharmCount == 0 ? 0.0 : BigDecimal.valueOf(inuharmOverDay * 1.0 / inuharmCount).setScale(2, RoundingMode.HALF_UP).doubleValue());
} }
return overAreaLimitVO; return overAreaLimitVO;
} }
/** /**
* 功能描述: 处理区域在线监测点数、超标监测点数 * 功能描述: 处理区域在线监测点数、超标监测点数
*
* @param list 集合 * @param list 集合
* @return * @return
* @author xy * @author xy
* @date 2022/2/25 15:05 * @date 2022/2/25 15:05
*/ */
private List<?> getAllData(List<String> list, String startTime, String endTime, String databaseName){ private List<?> getAllData(List<String> list, String startTime, String endTime, String databaseName) {
List<?> result = new ArrayList<>(); List<?> result = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder1 = new StringBuilder();
stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and (");
for (int i=0;i<list.size();i++){
if (list.size() - i != 1){
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("' or ");
} else {
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("')");
}
}
stringBuilder.append(" group by line_id tz('Asia/Shanghai')");
stringBuilder1.append("sum(freq_dev_overtime) AS freq_dev_overtime,sum(voltage_dev_overtime) AS voltage_dev_overtime,sum(ubalance_overtime) AS ubalance_overtime,sum(flicker_overtime) AS flicker_overtime,sum(i_neg_overtime) AS i_neg_overtime,");
stringBuilder1.append("sum(uaberrance_overtime)+");
for (int i = 2; i <= 25; i++) {
if (i==25){
stringBuilder1.append("sum(uharm_").append(i).append("_overtime) AS ").append("uharm_2").append("_overtime,");
} else {
stringBuilder1.append("sum(uharm_").append(i).append("_overtime)+");
}
}
for (int i = 2; i <= 25; i++) {
if (i==25){
stringBuilder1.append("sum(iharm_").append(i).append("_overtime) AS ").append("iharm_2").append("_overtime,");
} else {
stringBuilder1.append("sum(iharm_").append(i).append("_overtime)+");
}
}
for (int i = 1; i <= 16; i++) {
if (i==16){
stringBuilder1.append("sum(inuharm_").append(i).append("_overtime) AS ").append("inuharm_1").append("_overtime");
} else {
stringBuilder1.append("sum(inuharm_").append(i).append("_overtime)+");
}
}
String sql = "select "+stringBuilder1+" from "+databaseName+" where " + stringBuilder;
QueryResult sqlResult = influxDbUtils.query(sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
switch (databaseName) { switch (databaseName) {
case Param.LIMIT_TARGET: case Param.LIMIT_TARGET:
result = resultMapper.toPOJO(sqlResult,LimitTarget.class); result = targetMapper.getSumTargetList(list, startTime, endTime);
break; break;
case Param.LIMIT_RATE: case Param.LIMIT_RATE:
result = resultMapper.toPOJO(sqlResult,LimitRate.class); result = rateDMapper.getSumPassRateList(list, startTime, endTime);
break; break;
default: default:
break; break;
@@ -797,29 +781,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
return result; return result;
} }
public List<EventDetail> getEventDetail(List<String> list, String startTime, String endTime){ public List<com.njcn.event.pojo.po.EventDetail> getEventDetail(List<String> list, String startTime, String endTime) {
StringBuilder stringBuilder = new StringBuilder(); return eventDetailFeignClient.getEventDetail(list, startTime, endTime).getData();
stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and (");
for (int i=0;i<list.size();i++){
if (list.size() - i != 1){
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("' or ");
} else {
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("')");
}
}
stringBuilder.append(" group by line_id tz('Asia/Shanghai')");
String sql = "select * from pqs_eventdetail where " + stringBuilder;
QueryResult sqlResult = influxDbUtils.query(sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
return resultMapper.toPOJO(sqlResult, EventDetail.class);
} }
public List<LimitTarget> getOverDays(List<String> list, String startTime, String endTime){ public List<LimitTarget> getOverDays(List<String> list, String startTime, String endTime) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder1 = new StringBuilder(); StringBuilder stringBuilder1 = new StringBuilder();
stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and ("); stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and (");
for (int i=0;i<list.size();i++){ for (int i = 0; i < list.size(); i++) {
if (list.size() - i != 1){ if (list.size() - i != 1) {
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("' or "); stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("' or ");
} else { } else {
stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("')"); stringBuilder.append(Param.LINE_ID + "='").append(list.get(i)).append("')");
@@ -828,21 +799,21 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
stringBuilder.append(" group by line_id tz('Asia/Shanghai')"); stringBuilder.append(" group by line_id tz('Asia/Shanghai')");
stringBuilder1.append("freq_dev_overtime AS freq_dev_overtime,voltage_dev_overtime AS voltage_dev_overtime,ubalance_overtime AS ubalance_overtime,flicker_overtime AS flicker_overtime,i_neg_overtime AS i_neg_overtime,uaberrance_overtime AS uaberrance_overtime,"); stringBuilder1.append("freq_dev_overtime AS freq_dev_overtime,voltage_dev_overtime AS voltage_dev_overtime,ubalance_overtime AS ubalance_overtime,flicker_overtime AS flicker_overtime,i_neg_overtime AS i_neg_overtime,uaberrance_overtime AS uaberrance_overtime,");
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
if (i==25){ if (i == 25) {
stringBuilder1.append("uharm_").append(i).append("_overtime AS uharm_all_overtime,"); stringBuilder1.append("uharm_").append(i).append("_overtime AS uharm_all_overtime,");
} else { } else {
stringBuilder1.append("uharm_").append(i).append("_overtime+"); stringBuilder1.append("uharm_").append(i).append("_overtime+");
} }
} }
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
if (i==25){ if (i == 25) {
stringBuilder1.append("iharm_").append(i).append("_overtime AS iharm_all_overtime,"); stringBuilder1.append("iharm_").append(i).append("_overtime AS iharm_all_overtime,");
} else { } else {
stringBuilder1.append("iharm_").append(i).append("_overtime+"); stringBuilder1.append("iharm_").append(i).append("_overtime+");
} }
} }
for (int i = 1; i <= 16; i++) { for (int i = 1; i <= 16; i++) {
if (i==16){ if (i == 16) {
stringBuilder1.append("inuharm_").append(i).append("_overtime AS inuharm_all_overtime,"); stringBuilder1.append("inuharm_").append(i).append("_overtime AS inuharm_all_overtime,");
} else { } else {
stringBuilder1.append("inuharm_").append(i).append("_overtime+"); stringBuilder1.append("inuharm_").append(i).append("_overtime+");
@@ -850,8 +821,8 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
} }
stringBuilder1.append("uharm_3_overtime,uharm_5_overtime,uharm_7_overtime,uharm_11_overtime,uharm_13_overtime,uharm_23_overtime,uharm_25_overtime,"); stringBuilder1.append("uharm_3_overtime,uharm_5_overtime,uharm_7_overtime,uharm_11_overtime,uharm_13_overtime,uharm_23_overtime,uharm_25_overtime,");
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
if (i!=3 && i!=5 && i!=7 && i!=11 && i!=13 && i!=23 && i!=25){ if (i != 3 && i != 5 && i != 7 && i != 11 && i != 13 && i != 23 && i != 25) {
if (i==24){ if (i == 24) {
stringBuilder1.append("uharm_").append(i).append("_overtime AS uOtherTimes,"); stringBuilder1.append("uharm_").append(i).append("_overtime AS uOtherTimes,");
} else { } else {
stringBuilder1.append("uharm_").append(i).append("_overtime+"); stringBuilder1.append("uharm_").append(i).append("_overtime+");
@@ -860,15 +831,15 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
} }
stringBuilder1.append("iharm_3_overtime,iharm_5_overtime,iharm_7_overtime,iharm_11_overtime,iharm_13_overtime,iharm_23_overtime,iharm_25_overtime,"); stringBuilder1.append("iharm_3_overtime,iharm_5_overtime,iharm_7_overtime,iharm_11_overtime,iharm_13_overtime,iharm_23_overtime,iharm_25_overtime,");
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
if (i!=3 && i!=5 && i!=7 && i!=11 && i!=13 && i!=23 && i!=25){ if (i != 3 && i != 5 && i != 7 && i != 11 && i != 13 && i != 23 && i != 25) {
if (i==24){ if (i == 24) {
stringBuilder1.append("iharm_").append(i).append("_overtime AS iOtherTimes"); stringBuilder1.append("iharm_").append(i).append("_overtime AS iOtherTimes");
} else { } else {
stringBuilder1.append("iharm_").append(i).append("_overtime+"); stringBuilder1.append("iharm_").append(i).append("_overtime+");
} }
} }
} }
String sql = "select "+stringBuilder1+" from limit_target where " + stringBuilder; String sql = "select " + stringBuilder1 + " from limit_target where " + stringBuilder;
QueryResult sqlResult = influxDbUtils.query(sql); QueryResult sqlResult = influxDbUtils.query(sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
return resultMapper.toPOJO(sqlResult, LimitTarget.class); return resultMapper.toPOJO(sqlResult, LimitTarget.class);

View File

@@ -303,7 +303,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
); );
if(CollUtil.isNotEmpty(limitRates)){ if(CollUtil.isNotEmpty(limitRates)){
limitRates.forEach(list ->{ limitRates.forEach(list ->{
LimitTarget limitRatePO = BeanUtil.copyProperties(list,LimitTarget.class); LimitTarget limitRatePO = BeanUtil.copyProperties(list, LimitTarget.class);
limitRatePO.setTime(list.getTime().toInstant()); limitRatePO.setTime(list.getTime().toInstant());
limitRatePO.setLineId(list.getLineId()); limitRatePO.setLineId(list.getLineId());
limitRatePO.setPhasicType(list.getPhasicType()); limitRatePO.setPhasicType(list.getPhasicType());
@@ -362,7 +362,30 @@ public class HarmonicServiceImpl implements IHarmonicService {
limitRatePO.setUHarm23OverTime(list.getUharm23Overtime()); limitRatePO.setUHarm23OverTime(list.getUharm23Overtime());
limitRatePO.setUHarm24OverTime(list.getUharm24Overtime()); limitRatePO.setUHarm24OverTime(list.getUharm24Overtime());
limitRatePO.setUHarm25OverTime(list.getUharm25Overtime()); limitRatePO.setUHarm25OverTime(list.getUharm25Overtime());
limitRatePO.setInuHarm1OverTime(list.getInuharm1Overtime());
limitRatePO.setInuHarm2OverTime(list.getInuharm2Overtime());
limitRatePO.setInuHarm3OverTime(list.getInuharm3Overtime());
limitRatePO.setInuHarm4OverTime(list.getInuharm4Overtime());
limitRatePO.setInuHarm5OverTime(list.getInuharm5Overtime());
limitRatePO.setInuHarm6OverTime(list.getInuharm6Overtime());
limitRatePO.setInuHarm7OverTime(list.getInuharm7Overtime());
limitRatePO.setInuHarm8OverTime(list.getInuharm8Overtime());
limitRatePO.setInuHarm9OverTime(list.getInuharm9Overtime());
limitRatePO.setInuHarm10OverTime(list.getInuharm10Overtime());
limitRatePO.setInuHarm11OverTime(list.getInuharm11Overtime());
limitRatePO.setInuHarm12OverTime(list.getInuharm12Overtime());
limitRatePO.setInuHarm13OverTime(list.getInuharm13Overtime());
limitRatePO.setInuHarm14OverTime(list.getInuharm14Overtime());
limitRatePO.setInuHarm15OverTime(list.getInuharm15Overtime());
limitRatePO.setInuHarm16OverTime(list.getInuharm16Overtime());
limitRatePO.setFlickerOverTime(list.getFlickerOvertime());
limitRatePO.setFlickerAllTime(list.getFlickerAllTime());
limitRatePO.setFreqDevOverTime(list.getFreqDevOvertime());
limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime()); limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime());
limitRatePO.setUAberranceOverTime(list.getUaberranceOvertime());
limitRatePO.setINegOverTime(list.getINegOvertime());
listInfo.add(limitRatePO); listInfo.add(limitRatePO);
}); });
} }
@@ -625,6 +648,31 @@ public class HarmonicServiceImpl implements IHarmonicService {
limitRatePO.setUHarm24OverTime(list.getUharm24Overtime()); limitRatePO.setUHarm24OverTime(list.getUharm24Overtime());
limitRatePO.setUHarm25OverTime(list.getUharm25Overtime()); limitRatePO.setUHarm25OverTime(list.getUharm25Overtime());
limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime()); limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime());
limitRatePO.setInuHarm1OverTime(list.getInuharm1Overtime());
limitRatePO.setInuHarm2OverTime(list.getInuharm2Overtime());
limitRatePO.setInuHarm3OverTime(list.getInuharm3Overtime());
limitRatePO.setInuHarm4OverTime(list.getInuharm4Overtime());
limitRatePO.setInuHarm5OverTime(list.getInuharm5Overtime());
limitRatePO.setInuHarm6OverTime(list.getInuharm6Overtime());
limitRatePO.setInuHarm7OverTime(list.getInuharm7Overtime());
limitRatePO.setInuHarm8OverTime(list.getInuharm8Overtime());
limitRatePO.setInuHarm9OverTime(list.getInuharm9Overtime());
limitRatePO.setInuHarm10OverTime(list.getInuharm10Overtime());
limitRatePO.setInuHarm11OverTime(list.getInuharm11Overtime());
limitRatePO.setInuHarm12OverTime(list.getInuharm12Overtime());
limitRatePO.setInuHarm13OverTime(list.getInuharm13Overtime());
limitRatePO.setInuHarm14OverTime(list.getInuharm14Overtime());
limitRatePO.setInuHarm15OverTime(list.getInuharm15Overtime());
limitRatePO.setInuHarm16OverTime(list.getInuharm16Overtime());
limitRatePO.setFlickerOverTime(list.getFlickerOvertime());
limitRatePO.setFlickerAllTime(list.getFlickerAllTime());
limitRatePO.setFreqDevOverTime(list.getFreqDevOvertime());
limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime());
limitRatePO.setUAberranceOverTime(list.getUaberranceOvertime());
limitRatePO.setINegOverTime(list.getINegOvertime());
listInfo.add(limitRatePO); listInfo.add(limitRatePO);
}); });
} }

View File

@@ -50,7 +50,9 @@ public enum DicDataEnum {
*/ */
COMM_ERR("通讯异常", "Comm_Err"), COMM_ERR("通讯异常", "Comm_Err"),
/**
* 暂态统计指标
*/
TOTAL_INDICATORS("总暂态指标", "Total_Indicators"), TOTAL_INDICATORS("总暂态指标", "Total_Indicators"),
VOLTAGE_DIP("电压暂降", "Voltage_Dip"), VOLTAGE_DIP("电压暂降", "Voltage_Dip"),
VOLTAGE_RISE("电压暂升", "Voltage_Rise"), VOLTAGE_RISE("电压暂升", "Voltage_Rise"),