稳态指标超标明细接口优化

This commit is contained in:
zhuxinyu
2023-04-14 15:30:18 +08:00
parent 1cc3ce4c3b
commit fd3101c9ef
3 changed files with 118 additions and 61 deletions

View File

@@ -296,39 +296,49 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
p.setSize(param.getPageSize());
p.setCurrent(param.getPageNum());
if (CollectionUtil.isNotEmpty(lineList)) {
QueryWrapper<RStatLimitRateDPO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("r_stat_limit_rate_d.my_index",lineList)
.between("r_stat_limit_rate_d.time_id",
DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())));
Page<RStatLimitRateDPO> rateDPOPage = rateDMapper.selectPage(p,queryWrapper);
List<RStatLimitRateDPO> records = rateDPOPage.getRecords();
Map<String, List<RStatLimitRateDPO>> lineMap = records.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
Page<MonitorOverLimitVO> sumLimitRatePage = rateDMapper.getSumLimitRatePage(p, lineList, param.getSearchBeginTime(), param.getSearchEndTime());
List<MonitorOverLimitVO> pageRecords = sumLimitRatePage.getRecords();
Map<String, List<MonitorOverLimitVO>> monMap = pageRecords.stream().collect(Collectors.groupingBy(MonitorOverLimitVO::getId));
ArrayList<String> list = new ArrayList<>();
list.addAll(lineMap.keySet());
list.addAll(monMap.keySet());
PollutionParamDTO pollutionParamDTO = new PollutionParamDTO();
pollutionParamDTO.setLineList(list);
List<OverLimitLineDTO> overLimitLineList = lineFeignClient.getOverLimitLineInfo(pollutionParamDTO).getData();
List<MonitorOverLimitVO> groupList = rateDMapper.getSumLimitRateByLineIndexes(list, param.getSearchBeginTime(), param.getSearchEndTime());
Map<String, List<MonitorOverLimitVO>> groupMap = groupList.stream().collect(Collectors.groupingBy(MonitorOverLimitVO::getId));
List<RStatLimitRateDPO> rStatLimitRateDPOS = rateDMapper.selectList(new QueryWrapper<RStatLimitRateDPO>()
.in("r_stat_limit_rate_d.my_index", list)
.between("r_stat_limit_rate_d.time_id",
DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())))
);
Map<String, List<RStatLimitRateDPO>> rsMap = rStatLimitRateDPOS.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
for (OverLimitLineDTO vo : overLimitLineList) {
MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO();
BeanUtil.copyProperties(vo,monitorOverLimitVO);
List<RStatLimitRateDPO> limitRateDPOS = lineMap.get(vo.getId());
MonitorOverLimitVO overLimitVO = groupMap.get(vo.getId()).get(0);
BeanUtil.copyProperties(overLimitVO,monitorOverLimitVO);
System.out.println(monitorOverLimitVO);
// 超标天数
// long allTimeCount = limitRateDPOS.stream().filter(t -> t.getAllTime() != 0).count();
// 频率偏差超标天数
// long freqDevOverCount = limitRateDPOS.stream().filter(t -> t.getFreqDevOvertime() != 0).count();
// 电压偏差超标天数
// long voltageDevOverCount = limitRateDPOS.stream().filter(t -> t.getVoltageDevOvertime() != 0).count();
// 电压谐波畸变率越限次数
// long UaberranceOverCount = limitRateDPOS.stream().filter(t -> t.getUaberranceOvertime() != 0).count();
MonitorOverLimitVO source = monMap.get(vo.getId()).get(0);
monitorOverLimitVO.setOverDay(source.getOverDay());
monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay());
monitorOverLimitVO.setFreqOverDay(source.getFreqOverDay());
monitorOverLimitVO.setFlickerOverDay(source.getFlickerOverDay());
monitorOverLimitVO.setNegativeOverDay(source.getNegativeOverDay());
monitorOverLimitVO.setThreeUnbalance(source.getThreeUnbalance());
monitorOverLimitVO.setVolDisOverDay(source.getVolDisOverDay());
monitorOverLimitVO.setOverVolThreeTimes(source.getOverVolThreeTimes());
monitorOverLimitVO.setOverVolFiveTimes(source.getOverVolFiveTimes());
monitorOverLimitVO.setOverVolSevenTimes(source.getOverVolSevenTimes());
monitorOverLimitVO.setOverVolElevenTimes(source.getOverVolElevenTimes());
monitorOverLimitVO.setOverVolThirteenTimes(source.getOverVolThirteenTimes());
monitorOverLimitVO.setOverVolTwentyThreeTimes(source.getOverVolTwentyThreeTimes());
monitorOverLimitVO.setOverVolTwentyFiveTimes(source.getOverVolTwentyFiveTimes());
monitorOverLimitVO.setOverVolOtherTimes(source.getOverVolOtherTimes());
monitorOverLimitVO.setOverCurThreeTimes(source.getOverCurThreeTimes());
monitorOverLimitVO.setOverCurFiveTimes(source.getOverCurFiveTimes());
monitorOverLimitVO.setOverCurSevenTimes(source.getOverCurSevenTimes());
monitorOverLimitVO.setOverCurElevenTimes(source.getOverCurElevenTimes());
monitorOverLimitVO.setOverCurThirteenTimes(source.getOverCurThirteenTimes());
monitorOverLimitVO.setOverCurTwentyThreeTimes(source.getOverCurTwentyThreeTimes());
monitorOverLimitVO.setOverCurTwentyFiveTimes(source.getOverCurTwentyFiveTimes());
monitorOverLimitVO.setOverCurOtherTimes(source.getOverCurOtherTimes());
List<RStatLimitRateDPO> limitRateDPOS = rsMap.get(vo.getId());
// 谐波电压含有率超标天数
long volContainOverDay = limitRateDPOS.stream().filter(t -> FilterNotQualifiedUharmData(t)).count();
// 谐波电流超标天数
@@ -350,41 +360,6 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
return page;
}
return page;
// if (CollectionUtil.isNotEmpty (lineList)) {
// page.setTotal(lineList.size());
// int pages = (int)Math.ceil(lineList.size()*1.0/param.getPageSize());
// page.setPages(pages);
// List<List<String>> pageList = Lists.partition(lineList,param.getPageSize());
// List<String> temList = pageList.get(param.getPageNum()-1);
// List<MonitorOverLimitVO> list = rateDMapper.getSumLimitRateByLineIndexes(lineList, param.getSearchBeginTime(), param.getSearchEndTime());
// Map<String, List<MonitorOverLimitVO>> mapperMap = list.stream().collect(Collectors.groupingBy(MonitorOverLimitVO::getId));
// PollutionParamDTO pollutionParamDTO = new PollutionParamDTO();
// pollutionParamDTO.setLineList(temList);
// List<OverLimitLineDTO> overLimitLineList = lineFeignClient.getOverLimitLineInfo(pollutionParamDTO).getData();
// for (OverLimitLineDTO overLimitLineDTO : overLimitLineList) {
// MonitorOverLimitVO vo = mapperMap.get(overLimitLineDTO.getId()).get(0);
// if (Objects.isNull(vo)) {
// continue;
// }
// vo.setProvinceCompany(overLimitLineDTO.getProvinceCompany());
// vo.setCityCompany(overLimitLineDTO.getCityCompany());
// vo.setLineName(overLimitLineDTO.getLineName());
// vo.setLoadType(overLimitLineDTO.getLoadType());
// vo.setLineObjectName(overLimitLineDTO.getLineObjectName());
// vo.setLineScale(overLimitLineDTO.getLineScale());
// vo.setSubName(overLimitLineDTO.getSubName());
// vo.setSubScale(overLimitLineDTO.getSubScale());
// result.add(vo);
// }
// }
// if (!CollectionUtils.isEmpty(result)){
// List<MonitorOverLimitVO> recordList = new ArrayList<>();
// //默认 根据在线监测点个数 倒叙排序
// recordList = result.stream().sorted(Comparator.comparing(MonitorOverLimitVO::getOverDay).reversed()).collect(Collectors.toList());
// page.setRecords(recordList);
// return page;
// }
// return page;
// if (!CollectionUtils.isEmpty(lineList)){
// page.setTotal(lineList.size());
// int pages = (int)Math.ceil(lineList.size()*1.0/param.getPageSize());