微调
This commit is contained in:
@@ -4,6 +4,7 @@ package com.njcn.device.pq.service.impl;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -34,6 +35,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -69,9 +71,9 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
@Override
|
||||
public List<LineDataQualityDTO> getLineDataQuality(LineDataQualityParam lineDataQualityParam) {
|
||||
List<String> lineIds = lineDataQualityParam.getLineIds();
|
||||
List<Line> lineList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,lineIds));
|
||||
List<Line> lineList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId, lineIds));
|
||||
|
||||
lineList = lineList.stream().peek(item->{
|
||||
lineList = lineList.stream().peek(item -> {
|
||||
String devId = item.getPids().split(StrUtil.COMMA)[4];
|
||||
item.setPid(devId);
|
||||
}).collect(Collectors.toList());
|
||||
@@ -81,35 +83,35 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
QueryWrapper<RStatOnlinerateD> onlineQuery = new QueryWrapper<>();
|
||||
onlineQuery.select("dev_index,avg(online_min/offline_min+online_min) as onlineRate")
|
||||
.lambda()
|
||||
.in(RStatOnlinerateD::getDevIndex,devIds)
|
||||
.between(RStatOnlinerateD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATE_PATTERN),DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATE_PATTERN))
|
||||
.in(RStatOnlinerateD::getDevIndex, devIds)
|
||||
.between(RStatOnlinerateD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATE_PATTERN), DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATE_PATTERN))
|
||||
.groupBy(RStatOnlinerateD::getDevIndex);
|
||||
List<RStatOnlinerateD> rStatOnlinerateDList = onlineRateMapper.selectList(onlineQuery);
|
||||
Map<String,RStatOnlinerateD> onlineMap = rStatOnlinerateDList.stream().collect(Collectors.toMap(RStatOnlinerateD::getDevIndex, Function.identity()));
|
||||
Map<String, RStatOnlinerateD> onlineMap = rStatOnlinerateDList.stream().collect(Collectors.toMap(RStatOnlinerateD::getDevIndex, Function.identity()));
|
||||
|
||||
|
||||
QueryWrapper<RStatIntegrityD> integrityQuery = new QueryWrapper<>();
|
||||
integrityQuery.select("line_index,avg(real_time/due_time) as integrityData")
|
||||
.lambda()
|
||||
.in(RStatIntegrityD::getLineIndex,lineIds)
|
||||
.between(RStatIntegrityD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATE_PATTERN),DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATE_PATTERN))
|
||||
.in(RStatIntegrityD::getLineIndex, lineIds)
|
||||
.between(RStatIntegrityD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATE_PATTERN), DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATE_PATTERN))
|
||||
.groupBy(RStatIntegrityD::getLineIndex);
|
||||
List<RStatIntegrityD> rStatIntegrityDList = rStatIntegrityDMapper.selectList(integrityQuery);
|
||||
Map<String,RStatIntegrityD> integrityMap = rStatIntegrityDList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex,Function.identity()));
|
||||
Map<String, RStatIntegrityD> integrityMap = rStatIntegrityDList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex, Function.identity()));
|
||||
|
||||
List<LineDataQualityDTO> result = new ArrayList<>();
|
||||
for(Line item : lineList){
|
||||
for (Line item : lineList) {
|
||||
LineDataQualityDTO lineDataQualityDTO = new LineDataQualityDTO();
|
||||
lineDataQualityDTO.setLineId(item.getId());
|
||||
lineDataQualityDTO.setLineName(item.getName());
|
||||
if(onlineMap.containsKey(item.getPid())){
|
||||
if (onlineMap.containsKey(item.getPid())) {
|
||||
lineDataQualityDTO.setOnlineRate(Double.valueOf(onlineMap.get(item.getPid()).getOnlineRate()));
|
||||
}else {
|
||||
} else {
|
||||
lineDataQualityDTO.setOnlineRate(0.00);
|
||||
}
|
||||
if(integrityMap.containsKey(item.getId())){
|
||||
if (integrityMap.containsKey(item.getId())) {
|
||||
lineDataQualityDTO.setIntegrityRate(Double.valueOf(integrityMap.get(item.getId()).getIntegrityData()));
|
||||
}else {
|
||||
} else {
|
||||
lineDataQualityDTO.setIntegrityRate(0.00);
|
||||
}
|
||||
result.add(lineDataQualityDTO);
|
||||
@@ -132,7 +134,7 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
|
||||
return rStatIntegrityD;
|
||||
}).collect(Collectors.toList());
|
||||
this.saveOrUpdateBatchByMultiId(collect1,200);
|
||||
this.saveOrUpdateBatchByMultiId(collect1, 200);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -149,13 +151,13 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
.collect(Collectors.toList());
|
||||
rate.setTotalNum(lineIds.size());
|
||||
//获取所有监测点的数据完整性
|
||||
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds,param.getSearchBeginTime(),param.getSearchEndTime());
|
||||
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||
//获取所有监测点信息信息
|
||||
List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(lineIds);
|
||||
|
||||
rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo)?calculateIntegrityRate(lineIntegrityRateInfo,90):lineIds.size());
|
||||
rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo,lineIds).toString());
|
||||
List<DeviceOnlineRate.CitDetail> citDetailList=new ArrayList<>();
|
||||
rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, lineIds.size()) : lineIds.size());
|
||||
rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, lineIds).toString());
|
||||
List<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>();
|
||||
DeviceOnlineRate.CitDetail citDetail;
|
||||
DeviceOnlineRate.LineDetail detail;
|
||||
for (GeneralDeviceDTO dto : deviceInfo) {
|
||||
@@ -163,11 +165,11 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
List<RStatIntegrityVO> citDevOnRate = lineIntegrityRateInfo.stream().filter(x -> dto.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList());
|
||||
Map<String, Double> onlineRateByDevMap = citDevOnRate.stream()
|
||||
.collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate));
|
||||
citDetail=new DeviceOnlineRate.CitDetail();
|
||||
citDetail = new DeviceOnlineRate.CitDetail();
|
||||
citDetail.setCitName(dto.getName());
|
||||
citDetail.setCitTotalNum(dto.getLineIndexes().size());
|
||||
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate)?calculateIntegrityRate(lineIntegrityRateInfo,90):dto.getLineIndexes().size());
|
||||
citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo,dto.getLineIndexes()).toString());
|
||||
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateIntegrityRate(citDevOnRate, 90, dto.getLineIndexes().size()) : dto.getLineIndexes().size());
|
||||
citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes()).toString());
|
||||
List<DeviceOnlineRate.LineDetail> detailList = new ArrayList<>();
|
||||
List<LineDetailVO.Detail> lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
|
||||
for (LineDetailVO.Detail line : lineDetail) {
|
||||
@@ -194,19 +196,19 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
return rate;
|
||||
}
|
||||
|
||||
private Double calculateIntegrityRate(List<RStatIntegrityVO> lineIntegrityRateInfo ,List<String> deviceIds){
|
||||
private Double calculateIntegrityRate(List<RStatIntegrityVO> lineIntegrityRateInfo, List<String> deviceIds) {
|
||||
List<RStatIntegrityVO> list = lineIntegrityRateInfo.stream().filter(x -> deviceIds.contains(x.getLineIndex())).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(list)){
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
BigDecimal onlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatIntegrityVO::getDueTime).sum());
|
||||
BigDecimal offlineMin =BigDecimal.valueOf( list.stream().mapToLong(RStatIntegrityVO::getRealTime).sum());
|
||||
BigDecimal sumMin= onlineMin.add(offlineMin);
|
||||
return sumMin.doubleValue();
|
||||
BigDecimal offlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatIntegrityVO::getRealTime).sum());
|
||||
BigDecimal sumMin = onlineMin.add(offlineMin);
|
||||
return onlineMin.multiply(BigDecimal.valueOf(100.0)).divide(sumMin, 2, RoundingMode.HALF_UP).doubleValue();
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
private Integer calculateIntegrityRate(List<RStatIntegrityVO> onlineRateByDev,Integer limit){
|
||||
return (int) onlineRateByDev.stream().filter(x -> x.getIntegrityRate() < limit).count();
|
||||
private Integer calculateIntegrityRate(List<RStatIntegrityVO> onlineRateByDev, Integer limit, Integer count) {
|
||||
return count - onlineRateByDev.stream().filter(x -> x.getIntegrityRate() >= limit).collect(Collectors.toList()).size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user