From 1e3af78bb547429520f6c2e2d1cbd1bf7d748428 Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Mon, 12 May 2025 10:08:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=88=E7=AB=AF=E8=BF=90=E8=A1=8C=E8=AF=84?= =?UTF-8?q?=E4=BB=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/pq/pojo/po/RStatOnlinerateD.java | 3 +- .../pq/pojo/vo/TerminalEvaluateAreaVO.java | 12 + .../DeviceRunEvaluateController.java | 11 + .../pq/service/DeviceRunEvaluateService.java | 3 + .../impl/DeviceRunEvaluateServiceImpl.java | 228 +++++++++++++++--- .../Impl/line/OnlineRateServiceImpl.java | 3 +- 6 files changed, 225 insertions(+), 35 deletions(-) diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java index d764653fd..35e1e5e95 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.njcn.db.bo.BaseEntity; import java.io.Serializable; +import java.time.LocalDate; import java.time.LocalDateTime; import lombok.Data; @@ -25,7 +26,7 @@ public class RStatOnlinerateD { private static final long serialVersionUID = 1L; @MppMultiId - private LocalDateTime timeId; + private LocalDate timeId; @MppMultiId private String devIndex; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/TerminalEvaluateAreaVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/TerminalEvaluateAreaVO.java index f5c81c9d8..2badbe2bc 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/TerminalEvaluateAreaVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/TerminalEvaluateAreaVO.java @@ -2,6 +2,8 @@ package com.njcn.device.pq.pojo.vo; import lombok.Data; +import java.util.List; + /** * @Author: cdf * @CreateTime: 2025-05-08 @@ -21,4 +23,14 @@ public class TerminalEvaluateAreaVO { private Double integrity; private Double qualified; + + @Data + public static class lastWeekTrendVO{ + + private List name; + + private List> score; + + private List date; + } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceRunEvaluateController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceRunEvaluateController.java index 21704893f..565dfd120 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceRunEvaluateController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeviceRunEvaluateController.java @@ -78,4 +78,15 @@ public class DeviceRunEvaluateController extends BaseController { } + + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @PostMapping("/lastWeekTrend") + @ApiOperation("最近一周终端评价趋势") + public HttpResult lastWeekTrend(@RequestBody DeviceInfoParam.BusinessParam businessParam) { + String methodDescribe = getMethodDescribe("lastWeekTrend"); + TerminalEvaluateAreaVO.lastWeekTrendVO result = deviceRunEvaluateService.lastWeekTrend(businessParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeviceRunEvaluateService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeviceRunEvaluateService.java index 2fdfd4f8e..514469cac 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeviceRunEvaluateService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeviceRunEvaluateService.java @@ -31,4 +31,7 @@ public interface DeviceRunEvaluateService { List areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam); + + + TerminalEvaluateAreaVO.lastWeekTrendVO lastWeekTrend(DeviceInfoParam.BusinessParam businessParam); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeviceRunEvaluateServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeviceRunEvaluateServiceImpl.java index 259188211..d4a405b6d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeviceRunEvaluateServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeviceRunEvaluateServiceImpl.java @@ -1,15 +1,20 @@ package com.njcn.device.pq.service.impl; 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.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.device.pq.mapper.RStatIntegrityDMapper; import com.njcn.device.pq.mapper.RStatOnlinerateDMapper; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DevRunEvaluateParam; 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.RStatOnlinerateD; 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.supervision.api.UserLedgerFeignClient; 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 lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -218,35 +225,41 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService { } + + @Override public List areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam) { List result = new ArrayList<>(); List 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 (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) { - List userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData(); - Map userReportVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); //已经最底层,展示电站和用户场站 List lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes()); + List ids = lineDetailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList()); + List devIds = lineDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); + List rStatIntegrityDList = new ArrayList<>(); + List rStatOnlinerateDList = new ArrayList<>(); + List rStatLimitRateDPOList = new ArrayList<>(); + getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,ids,devIds,businessParam.getSearchBeginTime(),businessParam.getSearchEndTime()); List detailList = lineDetailList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(detailList)) { - List ids = detailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList()); - List devIds = detailList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); - - List rStatIntegrityDList = new ArrayList<>(); - List rStatOnlinerateDList = new ArrayList<>(); - List rStatLimitRateDPOList = new ArrayList<>(); - getData(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, ids, devIds, businessParam.getSearchBeginTime(), businessParam.getSearchEndTime()); + List objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList()); + Map userReportVOMap = getUserLedgerByObjIds(objIds); Map> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId)); map.forEach((objId, list) -> { - UserLedgerVO userLedgerVO = userReportVOMap.get(objId); - List lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList()); - List devList = list.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList()); - List temIntegrityList = rStatIntegrityDList.stream().filter(it -> lineIds.contains(it.getLineIndex())).collect(Collectors.toList()); - List temlimitList = rStatLimitRateDPOList.stream().filter(it -> lineIds.contains(it.getLineId())).collect(Collectors.toList()); - List onlineList = rStatOnlinerateDList.stream().filter(it -> devList.contains(it.getDevIndex())).collect(Collectors.toList()); - - result.add(getScoreData(userLedgerVO.getProjectName(), devList, temIntegrityList, onlineList, temlimitList)); + NewUserReportVO userLedgerVO = userReportVOMap.get(objId); + commDataCat(list,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,result,userLedgerVO.getProjectName()); + }); + } + List otherDetailList = lineDetailList.stream().filter(it -> StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(otherDetailList)){ + List subIds = otherDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList()); + List subList = lineMapper.selectList(new LambdaQueryWrapper().in(Line::getId,subIds)); + Map subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity())); + Map> 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 { @@ -254,28 +267,114 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService { List rStatIntegrityDList = new ArrayList<>(); List rStatOnlinerateDList = new ArrayList<>(); List rStatLimitRateDPOList = new ArrayList<>(); - getData(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, generalDeviceDTO.getLineIndexes(), generalDeviceDTO.getDeviceIndexes(), businessParam.getSearchBeginTime(), businessParam.getSearchEndTime()); - result.add(getScoreData(generalDeviceDTO.getName(), generalDeviceDTO.getDeviceIndexes(), rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList)); + getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,generalDeviceDTO.getLineIndexes(),generalDeviceDTO.getDeviceIndexes(),businessParam.getSearchBeginTime(),businessParam.getSearchEndTime()); + result.add(getScoreData(generalDeviceDTO.getName(),generalDeviceDTO.getDeviceIndexes(),rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList)); } } } return result; } - private TerminalEvaluateAreaVO getScoreData(String name, List devIds, List rStatIntegrityDList, List rStatOnlinerateDList, List rStatLimitRateDPOList) { + @Override + public TerminalEvaluateAreaVO.lastWeekTrendVO lastWeekTrend(DeviceInfoParam.BusinessParam businessParam) { + TerminalEvaluateAreaVO.lastWeekTrendVO lastWeekTrendVO = new TerminalEvaluateAreaVO.lastWeekTrendVO(); + List nameList = new ArrayList<>(); + List> scoreList = new ArrayList<>(); + List dateList = new ArrayList<>(); + List 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 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 lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes()); + List rStatIntegrityDList = new ArrayList<>(); + List rStatOnlinerateDList = new ArrayList<>(); + List 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> lineMap = lineDetailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId)); + lineMap.forEach((key,detailList)->{ + if (StrUtil.isNotBlank(key)) { + List objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList()); + Map userReportVOMap = getUserLedgerByObjIds(objIds); + Map> 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 subIds = detailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList()); + List subList = lineMapper.selectList(new LambdaQueryWrapper().in(Line::getId,subIds)); + Map subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity())); + Map> 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 rStatIntegrityDList = new ArrayList<>(); + List rStatOnlinerateDList = new ArrayList<>(); + List 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 scoreDetailList = new ArrayList<>(); + for (DateTime day : dateRange) { + List temIntegrityList = rStatIntegrityDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())).collect(Collectors.toList()); + List temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())).collect(Collectors.toList()); + List 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 getUserLedgerByObjIds(List objIds){ + List userReportVOList = userLedgerFeignClient.getUserReportByIds(objIds).getData(); + return userReportVOList.stream().collect(Collectors.toMap(NewUserReportVO::getId, Function.identity())); + } + + private void commDataCat(List list,List rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList,List result,String name){ + List lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList()); + List devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList()); + List temIntegrityList = rStatIntegrityDList.stream().filter(it->lineIds.contains(it.getLineIndex())).collect(Collectors.toList()); + List temlimitList = rStatLimitRateDPOList.stream().filter(it->lineIds.contains(it.getLineId())).collect(Collectors.toList()); + List 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 devIds,List rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList) { double integrityRate = 0; double onlineRate = 0; double qualifiedRate = 0; + double pingFen; TerminalEvaluateAreaVO terminalEvaluateAreaVO = new TerminalEvaluateAreaVO(); terminalEvaluateAreaVO.setName(name); terminalEvaluateAreaVO.setCount(devIds.size()); if (CollectionUtil.isNotEmpty(rStatIntegrityDList)) { integrityRate = rStatIntegrityDList.stream().mapToDouble(it -> (double) it.getRealTime() / it.getDueTime()).average().orElse(0); - terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate * 100, 2).doubleValue()); + terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate*100,2).doubleValue()); } if (CollectionUtil.isNotEmpty(rStatOnlinerateDList)) { - onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineRate() / it.getOnlineRate() + it.getOfflineMin()).average().orElse(0); - terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate * 100, 2).doubleValue()); + onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineMin() / (it.getOnlineMin() + it.getOfflineMin())).average().orElse(0); + terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate*100,2).doubleValue()); } if (CollectionUtil.isNotEmpty(rStatLimitRateDPOList)) { qualifiedRate = rStatLimitRateDPOList.stream().mapToDouble(it -> { @@ -290,20 +389,34 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService { return 1 - ((double) (limit) / it.getAllTime() * 25); } }).average().orElse(0); - 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()); + terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate*100,2).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; } + private void rangeCatData(List list,List dateRange,List rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList,List> scoreList){ + List lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList()); + List devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList()); + List scoreDetailList = new ArrayList<>(); + for (DateTime day : dateRange) { + List temIntegrityList = rStatIntegrityDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate()) && lineIds.contains(it.getLineIndex())).collect(Collectors.toList()); + List temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())&& devList.contains(it.getDevIndex())).collect(Collectors.toList()); + List 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 rStatIntegrityDList, List rStatOnlinerateDList, List rStatLimitRateDPOList, List lineIds, List devIds, String startTime, String endTime) { - if (CollUtil.isNotEmpty(lineIds)) { + + private void getData(List rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList,List lineIds,List devIds,String startTime,String endTime){ + if(CollUtil.isNotEmpty(lineIds)){ rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper() .select("sum(real_time) as realTime,sum(due_time) as dueTime,line_index as lineIndex") - .in(CollUtil.isNotEmpty(lineIds), "line_index", lineIds) - .between("time_id", startTime, endTime) + .in("line_index", lineIds) + .between("time_id",startTime,endTime) .groupBy("line_index"))); RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam(); rStatLimitQueryParam.setIds(lineIds); @@ -311,14 +424,63 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService { rStatLimitQueryParam.setEndDate(endTime); rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData()); } - if (CollectionUtil.isNotEmpty(devIds)) { + if(CollectionUtil.isNotEmpty(devIds)) { rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper() .select("sum(online_min) as onlineMin,sum(offline_min) as offlineMin,dev_index as devIndex") - .in(CollUtil.isNotEmpty(devIds), "dev_index", devIds) - .between("time_id", startTime, endTime) + .in( "dev_index", devIds) + .between("time_id",startTime,endTime) .groupBy("dev_index"))); } } + private void getRangeData(List rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList,List lineIds,List devIds,String startTime,String endTime){ + if(CollUtil.isNotEmpty(lineIds)){ + rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper() + .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() + .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 rStatIntegrityDList,List rStatOnlinerateDList,List rStatLimitRateDPOList,List lineIds,List devIds,String startTime,String endTime){ + if(CollUtil.isNotEmpty(lineIds)){ + rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper() + .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() + .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"))); + } + } + + + + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/OnlineRateServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/OnlineRateServiceImpl.java index 2fde5adc5..faa5ac91e 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/OnlineRateServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/OnlineRateServiceImpl.java @@ -24,6 +24,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; @@ -50,7 +51,7 @@ public class OnlineRateServiceImpl extends MppServiceImpl outCommunicateData = new ArrayList<>(); for (String dev : devList){ List communicateData = getCommunicateData(dev);