|
|
|
@@ -1,15 +1,20 @@
|
|
|
|
package com.njcn.device.pq.service.impl;
|
|
|
|
package com.njcn.device.pq.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
|
|
|
|
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
|
|
|
|
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
|
|
|
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
|
|
|
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
|
|
|
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
|
|
|
import com.njcn.device.pq.pojo.param.DevRunEvaluateParam;
|
|
|
|
import com.njcn.device.pq.pojo.param.DevRunEvaluateParam;
|
|
|
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
|
|
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
|
|
|
|
|
|
|
import com.njcn.device.pq.pojo.po.Line;
|
|
|
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
|
|
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
|
|
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
|
|
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
|
|
|
import com.njcn.device.pq.pojo.vo.DevDetailVO;
|
|
|
|
import com.njcn.device.pq.pojo.vo.DevDetailVO;
|
|
|
|
@@ -28,12 +33,14 @@ import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
|
|
|
|
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
|
|
|
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
|
|
|
import com.njcn.supervision.api.UserLedgerFeignClient;
|
|
|
|
import com.njcn.supervision.api.UserLedgerFeignClient;
|
|
|
|
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
|
|
|
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
|
|
|
|
|
|
|
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
|
|
|
|
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
|
|
|
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -218,35 +225,41 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<TerminalEvaluateAreaVO> areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam) {
|
|
|
|
public List<TerminalEvaluateAreaVO> areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam) {
|
|
|
|
List<TerminalEvaluateAreaVO> result = new ArrayList<>();
|
|
|
|
List<TerminalEvaluateAreaVO> result = new ArrayList<>();
|
|
|
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(businessParam, Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()), Stream.of(PowerFlagEnum.REAL_DEVICE.getCode()).collect(Collectors.toList()));
|
|
|
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(businessParam, Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()), Stream.of(PowerFlagEnum.REAL_DEVICE.getCode()).collect(Collectors.toList()));
|
|
|
|
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
|
|
|
|
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
|
|
|
|
if (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) {
|
|
|
|
if (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) {
|
|
|
|
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
|
|
|
|
|
|
|
|
Map<String, UserLedgerVO> userReportVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
|
|
|
|
|
|
|
|
//已经最底层,展示电站和用户场站
|
|
|
|
//已经最底层,展示电站和用户场站
|
|
|
|
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
|
|
|
|
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
|
|
|
|
List<MonitorInfoDTO> detailList = lineDetailList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
|
|
|
|
List<String> ids = lineDetailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList());
|
|
|
|
if (CollUtil.isNotEmpty(detailList)) {
|
|
|
|
List<String> devIds = lineDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList());
|
|
|
|
List<String> ids = detailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<String> devIds = detailList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
|
|
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
|
|
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
|
|
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
|
|
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
|
|
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
|
|
|
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,ids,devIds,businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
|
|
|
|
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,ids,devIds,businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
|
|
|
|
|
|
|
|
List<MonitorInfoDTO> detailList = lineDetailList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(detailList)) {
|
|
|
|
|
|
|
|
List<String> objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
Map<String,NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
|
|
|
|
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
|
|
|
|
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
|
|
|
|
map.forEach((objId, list) -> {
|
|
|
|
map.forEach((objId, list) -> {
|
|
|
|
UserLedgerVO userLedgerVO = userReportVOMap.get(objId);
|
|
|
|
NewUserReportVO userLedgerVO = userReportVOMap.get(objId);
|
|
|
|
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
|
|
|
|
commDataCat(list,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,result,userLedgerVO.getProjectName());
|
|
|
|
List<String> devList = list.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
|
|
|
|
});
|
|
|
|
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it -> lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
List<RStatLimitRateDPO> temlimitList = rStatLimitRateDPOList.stream().filter(it -> lineIds.contains(it.getLineId())).collect(Collectors.toList());
|
|
|
|
List<MonitorInfoDTO> otherDetailList = lineDetailList.stream().filter(it -> StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
|
|
|
|
List<RStatOnlinerateD> onlineList = rStatOnlinerateDList.stream().filter(it -> devList.contains(it.getDevIndex())).collect(Collectors.toList());
|
|
|
|
if(CollUtil.isNotEmpty(otherDetailList)){
|
|
|
|
|
|
|
|
List<String> subIds = otherDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
|
|
|
|
result.add(getScoreData(userLedgerVO.getProjectName(), devList, temIntegrityList, onlineList, temlimitList));
|
|
|
|
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,subIds));
|
|
|
|
|
|
|
|
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
|
|
|
|
|
|
|
|
Map<String, List<MonitorInfoDTO>> map = otherDetailList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
|
|
|
|
|
|
|
|
map.forEach((subId, list) -> {
|
|
|
|
|
|
|
|
String name = subMap.get(subId).getName();
|
|
|
|
|
|
|
|
commDataCat(list,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,result,name);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
@@ -262,10 +275,96 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public TerminalEvaluateAreaVO.lastWeekTrendVO lastWeekTrend(DeviceInfoParam.BusinessParam businessParam) {
|
|
|
|
|
|
|
|
TerminalEvaluateAreaVO.lastWeekTrendVO lastWeekTrendVO = new TerminalEvaluateAreaVO.lastWeekTrendVO();
|
|
|
|
|
|
|
|
List<String> nameList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<List<Double>> scoreList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<String> dateList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(businessParam, Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()), Stream.of(PowerFlagEnum.REAL_DEVICE.getCode()).collect(Collectors.toList()));
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
|
|
|
|
|
|
|
|
DateTime end = DateUtil.parse(businessParam.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
|
|
|
|
|
|
|
|
DateTime start = DateUtil.offsetDay(end,-7);
|
|
|
|
|
|
|
|
List<DateTime> dateRange = DateUtil.rangeToList(start, end, DateField.DAY_OF_MONTH);
|
|
|
|
|
|
|
|
for (DateTime dateTime :dateRange){
|
|
|
|
|
|
|
|
dateList.add(DateUtil.format(dateTime,DatePattern.NORM_DATE_PATTERN));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) {
|
|
|
|
|
|
|
|
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
|
|
|
|
|
|
|
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
|
|
|
|
|
|
|
getRangeData2(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,generalDeviceDTOList.get(0).getLineIndexes(),generalDeviceDTOList.get(0).getDeviceIndexes(),DateUtil.format(start,DatePattern.NORM_DATE_PATTERN),DateUtil.format(end,DatePattern.NORM_DATE_PATTERN));
|
|
|
|
|
|
|
|
Map<String,List<MonitorInfoDTO>> lineMap = lineDetailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
|
|
|
|
|
|
|
|
lineMap.forEach((key,detailList)->{
|
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(key)) {
|
|
|
|
|
|
|
|
List<String> objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
Map<String,NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
|
|
|
|
|
|
|
|
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
|
|
|
|
|
|
|
|
map.forEach((objId, list) -> {
|
|
|
|
|
|
|
|
NewUserReportVO userLedgerVO = userReportVOMap.get(objId);
|
|
|
|
|
|
|
|
nameList.add(userLedgerVO.getProjectName());
|
|
|
|
|
|
|
|
rangeCatData(list,dateRange,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,scoreList);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
List<String> subIds = detailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,subIds));
|
|
|
|
|
|
|
|
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
|
|
|
|
|
|
|
|
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
|
|
|
|
|
|
|
|
map.forEach((subId, list) -> {
|
|
|
|
|
|
|
|
String name = subMap.get(subId).getName();
|
|
|
|
|
|
|
|
nameList.add(name);
|
|
|
|
|
|
|
|
rangeCatData(list,dateRange,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,scoreList);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(generalDeviceDTO.getLineIndexes())) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
|
|
|
|
|
|
|
getRangeData(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, generalDeviceDTO.getLineIndexes(), generalDeviceDTO.getDeviceIndexes(), DateUtil.format(start, DatePattern.NORM_DATE_PATTERN), DateUtil.format(end, DatePattern.NORM_DATE_PATTERN));
|
|
|
|
|
|
|
|
nameList.add(generalDeviceDTO.getName());
|
|
|
|
|
|
|
|
List<Double> scoreDetailList = new ArrayList<>();
|
|
|
|
|
|
|
|
for (DateTime day : dateRange) {
|
|
|
|
|
|
|
|
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatOnlinerateD> temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatLimitRateDPO> temLimitRateList = rStatLimitRateDPOList.stream().filter(it -> it.getTime().equals(day.toLocalDateTime().toLocalDate())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
TerminalEvaluateAreaVO terminalEvaluateAreaVO = getScoreData("", generalDeviceDTO.getDeviceIndexes(), temIntegrityList, temOnlinerateList, temLimitRateList);
|
|
|
|
|
|
|
|
scoreDetailList.add(terminalEvaluateAreaVO.getScore());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
scoreList.add(scoreDetailList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
lastWeekTrendVO.setDate(dateList);
|
|
|
|
|
|
|
|
lastWeekTrendVO.setScore(scoreList);
|
|
|
|
|
|
|
|
lastWeekTrendVO.setName(nameList);
|
|
|
|
|
|
|
|
return lastWeekTrendVO;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Map<String,NewUserReportVO> getUserLedgerByObjIds(List<String> objIds){
|
|
|
|
|
|
|
|
List<NewUserReportVO> userReportVOList = userLedgerFeignClient.getUserReportByIds(objIds).getData();
|
|
|
|
|
|
|
|
return userReportVOList.stream().collect(Collectors.toMap(NewUserReportVO::getId, Function.identity()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void commDataCat(List<MonitorInfoDTO> list,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<TerminalEvaluateAreaVO> result,String name){
|
|
|
|
|
|
|
|
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<String> devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it->lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatLimitRateDPO> temlimitList = rStatLimitRateDPOList.stream().filter(it->lineIds.contains(it.getLineId())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatOnlinerateD> onlineList = rStatOnlinerateDList.stream().filter(it->devList.contains(it.getDevIndex())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
result.add(getScoreData(name,devList,temIntegrityList,onlineList,temlimitList));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private TerminalEvaluateAreaVO getScoreData(String name,List<String> devIds,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList) {
|
|
|
|
private TerminalEvaluateAreaVO getScoreData(String name,List<String> devIds,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList) {
|
|
|
|
double integrityRate = 0;
|
|
|
|
double integrityRate = 0;
|
|
|
|
double onlineRate = 0;
|
|
|
|
double onlineRate = 0;
|
|
|
|
double qualifiedRate = 0;
|
|
|
|
double qualifiedRate = 0;
|
|
|
|
|
|
|
|
double pingFen;
|
|
|
|
TerminalEvaluateAreaVO terminalEvaluateAreaVO = new TerminalEvaluateAreaVO();
|
|
|
|
TerminalEvaluateAreaVO terminalEvaluateAreaVO = new TerminalEvaluateAreaVO();
|
|
|
|
terminalEvaluateAreaVO.setName(name);
|
|
|
|
terminalEvaluateAreaVO.setName(name);
|
|
|
|
terminalEvaluateAreaVO.setCount(devIds.size());
|
|
|
|
terminalEvaluateAreaVO.setCount(devIds.size());
|
|
|
|
@@ -274,7 +373,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|
|
|
terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate*100,2).doubleValue());
|
|
|
|
terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate*100,2).doubleValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (CollectionUtil.isNotEmpty(rStatOnlinerateDList)) {
|
|
|
|
if (CollectionUtil.isNotEmpty(rStatOnlinerateDList)) {
|
|
|
|
onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineRate() / it.getOnlineRate() + it.getOfflineMin()).average().orElse(0);
|
|
|
|
onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineMin() / (it.getOnlineMin() + it.getOfflineMin())).average().orElse(0);
|
|
|
|
terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate*100,2).doubleValue());
|
|
|
|
terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate*100,2).doubleValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (CollectionUtil.isNotEmpty(rStatLimitRateDPOList)) {
|
|
|
|
if (CollectionUtil.isNotEmpty(rStatLimitRateDPOList)) {
|
|
|
|
@@ -291,18 +390,32 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).average().orElse(0);
|
|
|
|
}).average().orElse(0);
|
|
|
|
terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate*100,2).doubleValue());
|
|
|
|
terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate*100,2).doubleValue());
|
|
|
|
double pingFen = integrityRate * 0.5 + onlineRate * 0.2 + qualifiedRate * 0.3;
|
|
|
|
|
|
|
|
terminalEvaluateAreaVO.setScore(BigDecimal.valueOf(pingFen * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pingFen = integrityRate * 0.5 + onlineRate * 0.2 + qualifiedRate * 0.3;
|
|
|
|
|
|
|
|
terminalEvaluateAreaVO.setScore(BigDecimal.valueOf(pingFen*100).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
|
|
|
return terminalEvaluateAreaVO;
|
|
|
|
return terminalEvaluateAreaVO;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void rangeCatData(List<MonitorInfoDTO> list,List<DateTime> dateRange,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<List<Double>> scoreList){
|
|
|
|
|
|
|
|
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<String> devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<Double> scoreDetailList = new ArrayList<>();
|
|
|
|
|
|
|
|
for (DateTime day : dateRange) {
|
|
|
|
|
|
|
|
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate()) && lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatOnlinerateD> temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())&& devList.contains(it.getDevIndex())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
List<RStatLimitRateDPO> temLimitRateList = rStatLimitRateDPOList.stream().filter(it -> it.getTime().equals(day.toLocalDateTime().toLocalDate()) && lineIds.contains(it.getLineId())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
TerminalEvaluateAreaVO terminalEvaluateAreaVO = getScoreData("", new ArrayList<>(), temIntegrityList, temOnlinerateList, temLimitRateList);
|
|
|
|
|
|
|
|
scoreDetailList.add(terminalEvaluateAreaVO.getScore());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
scoreList.add(scoreDetailList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void getData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
|
|
|
|
private void getData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
|
|
|
|
if(CollUtil.isNotEmpty(lineIds)){
|
|
|
|
if(CollUtil.isNotEmpty(lineIds)){
|
|
|
|
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
|
|
|
|
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
|
|
|
|
.select("sum(real_time) as realTime,sum(due_time) as dueTime,line_index as lineIndex")
|
|
|
|
.select("sum(real_time) as realTime,sum(due_time) as dueTime,line_index as lineIndex")
|
|
|
|
.in(CollUtil.isNotEmpty(lineIds), "line_index", lineIds)
|
|
|
|
.in("line_index", lineIds)
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
.groupBy("line_index")));
|
|
|
|
.groupBy("line_index")));
|
|
|
|
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
|
|
|
|
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
|
|
|
|
@@ -314,11 +427,60 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|
|
|
if(CollectionUtil.isNotEmpty(devIds)) {
|
|
|
|
if(CollectionUtil.isNotEmpty(devIds)) {
|
|
|
|
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
|
|
|
|
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
|
|
|
|
.select("sum(online_min) as onlineMin,sum(offline_min) as offlineMin,dev_index as devIndex")
|
|
|
|
.select("sum(online_min) as onlineMin,sum(offline_min) as offlineMin,dev_index as devIndex")
|
|
|
|
.in(CollUtil.isNotEmpty(devIds), "dev_index", devIds)
|
|
|
|
.in( "dev_index", devIds)
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
.groupBy("dev_index")));
|
|
|
|
.groupBy("dev_index")));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void getRangeData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
|
|
|
|
|
|
|
|
if(CollUtil.isNotEmpty(lineIds)){
|
|
|
|
|
|
|
|
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
|
|
|
|
|
|
|
|
.select("time_id as timeId,sum(real_time) as realTime,sum(due_time) as dueTime")
|
|
|
|
|
|
|
|
.in("line_index", lineIds)
|
|
|
|
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
|
|
|
|
.groupBy("time_id")));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setIds(lineIds);
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setDate(startTime);
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setEndDate(endTime);
|
|
|
|
|
|
|
|
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(CollectionUtil.isNotEmpty(devIds)) {
|
|
|
|
|
|
|
|
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
|
|
|
|
|
|
|
|
.select("time_id as timeId,sum(online_min) as onlineMin,sum(offline_min) as offlineMin")
|
|
|
|
|
|
|
|
.in( "dev_index", devIds)
|
|
|
|
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
|
|
|
|
.groupBy("time_id")));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void getRangeData2(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
|
|
|
|
|
|
|
|
if(CollUtil.isNotEmpty(lineIds)){
|
|
|
|
|
|
|
|
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
|
|
|
|
|
|
|
|
.select("time_id as timeId,line_index as lineIndex,sum(real_time) as realTime,sum(due_time) as dueTime")
|
|
|
|
|
|
|
|
.in("line_index", lineIds)
|
|
|
|
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
|
|
|
|
.groupBy("time_id,line_index")));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setIds(lineIds);
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setDate(startTime);
|
|
|
|
|
|
|
|
rStatLimitQueryParam.setEndDate(endTime);
|
|
|
|
|
|
|
|
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(CollectionUtil.isNotEmpty(devIds)) {
|
|
|
|
|
|
|
|
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
|
|
|
|
|
|
|
|
.select("time_id as timeId,dev_index as devIndex,sum(online_min) as onlineMin,sum(offline_min) as offlineMin")
|
|
|
|
|
|
|
|
.in( "dev_index", devIds)
|
|
|
|
|
|
|
|
.between("time_id",startTime,endTime)
|
|
|
|
|
|
|
|
.groupBy("time_id,dev_index")));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|