From f26e4f0e111ea27019053ac9e6bb8dabca5ed891 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Tue, 12 Aug 2025 10:39:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=97=E4=BA=AC=E6=9A=82=E9=99=8D=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LargeScreenCountServiceImpl.java | 75 ++++++++++++++++++- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java index c8e48fd5..8a85735b 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java @@ -1160,8 +1160,79 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { returnpage.setTotal(list.getTotal()); return returnpage; } - @Override + public Page devicePage(LargeScreenCountParam largeScreenCountParam) { + TimeInterval timeInterval = new TimeInterval(); + log.info("开始查询:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + LocalDateTime startTime = largeScreenCountParam.getStartTime().atStartOfDay(); + LocalDateTime endTime = LocalDateTimeUtil.endOfDay(largeScreenCountParam.getEndTime().atStartOfDay()); + Page pqsEventdetailPage = new Page<>(largeScreenCountParam.getPageNum(), largeScreenCountParam.getPageSize()); + List pqLineList = (List) redisUtil.getObjectByKey( NAME_KEY+ StrUtil.DASHED+"pqLineList"); + + + List deptslineIds = commGeneralService.getLineIdsByRedis(largeScreenCountParam.getDeptId()); + + + if(Objects.isNull(largeScreenCountParam.getGdIndex())){ + pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex())).collect(Collectors.toList()); + }else { + pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex()) && Objects.equals(temp.getGdIndex(),largeScreenCountParam.getGdIndex())).collect(Collectors.toList()); + } + if(CollUtil.isEmpty(pqLineList)){ + return new Page<>(); + } + + List devIndexs = pqLineList.stream().map(PqLine::getDevIndex).distinct().collect(Collectors.toList()); + log.info("完成从redis获取信息:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + //在运总数 + List pqDeviceList = pqDeviceService.lambdaQuery().in(PqDevice::getDevIndex, devIndexs) + .eq(PqDevice::getDevflag, 0).list(); + log.info("完成设备查询sql:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + List runDevList = pqDeviceList.stream().map(PqDevice::getDevIndex).collect(Collectors.toList()); + + pqsEventdetailPage = pqDeviceService.selectDeviceDTOPage(pqsEventdetailPage,largeScreenCountParam.getSearchValue(),runDevList,largeScreenCountParam.getState()); + log.info("完成设备分页查询sql:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + + List deviceDTOList = pqsEventdetailPage.getRecords(); + if(!CollectionUtils.isEmpty(deviceDTOList)){ + List devIds = deviceDTOList.stream().map(DeviceDTO::getDevId).collect(Collectors.toList()); + log.info("在线率查询sql开始:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + List list = pqsOnlinerateService.lambdaQuery().in(PqsOnlinerate::getDevIndex,devIds).between(PqsOnlinerate::getTimeid, startTime, endTime).list(); + log.info("在线率查询sql结束:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + + List inteList = pqLineList.stream().filter(it->devIds.contains(it.getDevIndex())).collect(Collectors.toList()); + Map> lineMap = inteList.stream().collect(Collectors.groupingBy(PqLine::getDevIndex,Collectors.mapping(PqLine::getLineIndex,Collectors.toList()))); + List inteIds = inteList.stream().map(PqLine::getLineIndex).collect(Collectors.toList()); + + Map inteDevMap = new HashMap<>(); + log.info("完整性查询sql开始:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + List pqsIntegrityList = pqsIntegrityMapper.selectList(new LambdaQueryWrapper().in(PqsIntegrity::getLineIndex,inteIds).between(PqsIntegrity::getTimeID, startTime, endTime)); + log.info("完整性查询sql结束:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + + lineMap.forEach((dev,lineList)->{ + double rate = pqsIntegrityList.stream().filter(it->lineList.contains(it.getLineIndex())).mapToDouble(it->it.getReal()*1.0/(it.getDue()+it.getReal())).average().orElse(0.0); + inteDevMap.put(dev,rate); + }); + + + for (DeviceDTO record : pqsEventdetailPage.getRecords()) { + List tempList = list.stream().filter(temp -> Objects.equals(temp.getDevIndex(), record.getDevId())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(tempList)){ + double asDouble = tempList.stream().mapToDouble(temp -> { + return Double.valueOf(temp.getOnlinemin()*100) / (temp.getOfflinemin() + temp.getOnlinemin()); + }).average().getAsDouble(); + record.setOnLineRate(new BigDecimal(asDouble).setScale(2, RoundingMode.UP).doubleValue()); + record.setIntegrityRate(inteDevMap.containsKey(record.getDevId())? new BigDecimal(inteDevMap.get(record.getDevId())*100).setScale(2,RoundingMode.UP).doubleValue():0); + } + + } + } + log.info("所有程序结束:"+timeInterval.intervalMs()+"ms; "+timeInterval.intervalSecond()+"s"); + + + return pqsEventdetailPage; + } + /* @Override public Page devicePage(LargeScreenCountParam largeScreenCountParam) { LocalDateTime startTime = largeScreenCountParam.getStartTime().atStartOfDay(); LocalDateTime endTime = LocalDateTimeUtil.endOfDay(largeScreenCountParam.getEndTime().atStartOfDay()); @@ -1217,7 +1288,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { return pqsEventdetailPage; - } + }*/ @Override public Page userEventList(LargeScreenCountParam largeScreenCountParam) {