From 90276a76b56cc1e744f7fa68ce921a28a8a9c92f Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 08 一月 2025 11:52:10 +0800 Subject: [PATCH] 运行监控报表导出时间少一天问题 --- ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 83 +++++++++++++++++++++++------------------ 1 files changed, 46 insertions(+), 37 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java index 5a5f199..8aaa8bf 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java @@ -477,12 +477,16 @@ //涓�涓儴闂ㄤ竴涓猻heet for (Integer deptId : exportForm.getDeptIds()) { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); //绛涢�夐儴闂ㄦ暟鎹� Set<String> ids = onlineResult.stream().filter(tMonitorResult -> deptId.equals(tMonitorResult.getDeptId())).map(BaseResult::getNo).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(ids)) return; //绛涢�夐儴闂ㄦ暟鎹� List<TMonitorResult> onlineList = onlineResult.stream().filter(tMonitorResult -> deptId.equals(tMonitorResult.getDeptId())).collect(Collectors.toList()); + Map<LocalDate, List<TMonitorResult>> onlineMap = onlineList.stream() + .collect(Collectors.groupingBy(TMonitorResult::getMongoCreateTime)); List<RecordMetaDSumResult> recordList = recordResult.stream().filter(result -> ids.contains(result.getNo())).collect(Collectors.toList()); + Map<Date, List<RecordMetaDSumResult>> recordMap = recordList.stream().collect(Collectors.groupingBy(RecordMetaDSumResult::getStatTime)); List<VideoTotalExp> videoTotalExps = new ArrayList<>(); for (int i = 0; i < 31; i++) { String date = exportForm.getMonth(); @@ -490,41 +494,46 @@ //鎬婚噺 VideoTotalExp totalExp = totalMap.computeIfAbsent(date, k -> new VideoTotalExp()); LocalDate parseTime = LocalDate.parse(date, formatter); - //鑾峰彇鏄熸湡鍑� - String week = weeks[parseTime.getDayOfWeek().getValue() - 1]; - VideoTotalExp videoExp = new VideoTotalExp(); - videoExp.setDate(date); - videoExp.setWeek(week); - //璁剧疆鐐逛綅鍦ㄧ嚎鎬婚噺 - List<TMonitorResult> onlines = onlineList.stream().filter(tMonitorResult -> tMonitorResult.getMongoCreateTime().minusDays(1).equals(parseTime)).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(onlines)) { - videoExp.setTotal(onlines.size()); - long count = onlines.stream() - .filter(item -> ApiConstants.UY_OnlineSite_Online.equals(item.getOnline())) - .count(); - videoExp.setOnline(Integer.valueOf(count + "")); - videoExp.setOffline(videoExp.getTotal() - videoExp.getOnline()); + try { + Date parseDate = simpleDateFormat.parse(date); + //鑾峰彇鏄熸湡鍑� + String week = weeks[parseTime.getDayOfWeek().getValue() - 1]; + VideoTotalExp videoExp = new VideoTotalExp(); + videoExp.setDate(date); + videoExp.setWeek(week); + //璁剧疆鐐逛綅鍦ㄧ嚎鎬婚噺 + List<TMonitorResult> onlines = onlineMap.get(parseTime); + if (!CollectionUtils.isEmpty(onlines)) { + videoExp.setTotal(onlines.size()); + long count = onlines.stream() + .filter(item -> ApiConstants.UY_OnlineSite_Online.equals(item.getOnline())) + .count(); + videoExp.setOnline(Integer.valueOf(count + "")); + videoExp.setOffline(videoExp.getTotal() - videoExp.getOnline()); + } + //璁剧疆瀛樺偍鎯呭喌 + List<RecordMetaDSumResult> records = recordMap.get(parseDate); + if (!CollectionUtils.isEmpty(records)) { + videoExp.setNoStore(Integer.valueOf(records.stream() + .filter(record -> ApiConstants.UY_RecordStatus_Abnormal.equals(record.getRecordStatus())) + .count() + "")); + videoExp.setPartStore(Integer.valueOf(records.stream() + .filter(record -> ApiConstants.UY_RecordStatus_Interval.equals(record.getRecordStatus())) + .count() + "")); + } + videoTotalExps.add(videoExp); + //绱姞浣滀负鍏ㄩ噺琛� + totalExp.setDate(date); + totalExp.setWeek(week); + totalExp.setTotal((totalExp.getTotal() == null ? 0 : totalExp.getTotal()) + (videoExp.getTotal() == null ? 0 : videoExp.getTotal())); + totalExp.setOnline((totalExp.getOnline() == null ? 0 : totalExp.getOnline()) + (videoExp.getOnline() == null ? 0 : videoExp.getOnline())); + totalExp.setOffline((totalExp.getOffline() == null ? 0 : totalExp.getOffline()) + (videoExp.getOffline() == null ? 0 : videoExp.getOffline())); + totalExp.setNoStore((totalExp.getNoStore() == null ? 0 : totalExp.getNoStore()) + (videoExp.getNoStore() == null ? 0 : videoExp.getNoStore())); + totalExp.setPartStore((totalExp.getPartStore() == null ? 0 : totalExp.getPartStore()) + (videoExp.getPartStore() == null ? 0 : videoExp.getPartStore())); + totalMap.put(date, totalExp); + } catch (ParseException e) { + e.printStackTrace(); } - //璁剧疆瀛樺偍鎯呭喌 - List<RecordMetaDSumResult> records = recordList.stream().filter(record -> record.getMongoCreateTime().minusDays(1).equals(parseTime)).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(records)) { - videoExp.setNoStore(Integer.valueOf(records.stream() - .filter(record -> ApiConstants.UY_RecordStatus_Abnormal.equals(record.getRecordStatus())) - .count() + "")); - videoExp.setPartStore(Integer.valueOf(records.stream() - .filter(record -> ApiConstants.UY_RecordStatus_Interval.equals(record.getRecordStatus())) - .count() + "")); - } - videoTotalExps.add(videoExp); - //绱姞浣滀负鍏ㄩ噺琛� - totalExp.setDate(date); - totalExp.setWeek(week); - totalExp.setTotal((totalExp.getTotal() == null ? 0 : totalExp.getTotal()) + (videoExp.getTotal() == null ? 0 : videoExp.getTotal())); - totalExp.setOnline((totalExp.getOnline() == null ? 0 : totalExp.getOnline()) + (videoExp.getOnline() == null ? 0 : videoExp.getOnline())); - totalExp.setOffline((totalExp.getOffline() == null ? 0 : totalExp.getOffline()) + (videoExp.getOffline() == null ? 0 : videoExp.getOffline())); - totalExp.setNoStore((totalExp.getNoStore() == null ? 0 : totalExp.getNoStore()) + (videoExp.getNoStore() == null ? 0 : videoExp.getNoStore())); - totalExp.setPartStore((totalExp.getPartStore() == null ? 0 : totalExp.getPartStore()) + (videoExp.getPartStore() == null ? 0 : videoExp.getPartStore())); - totalMap.put(date, totalExp); } AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(deptId); ExcelExp excelExp = new ExcelExp(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName(), videoTotalExps, VideoTotalExp.class); @@ -535,7 +544,6 @@ // 绛夊緟鎵�鏈変换鍔″畬鎴� CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); allFutures.join(); // 杩欏皢闃诲鐩村埌鎵�鏈変换鍔″畬鎴� - //娣诲姞鍏ㄩ噺琛� List<VideoTotalExp> totalExps = new ArrayList<>(totalMap.values()); totalExps = totalExps.stream().sorted(Comparator.comparing(VideoTotalExp::getDate)).collect(Collectors.toList()); @@ -750,7 +758,8 @@ // 浣跨敤Map鐩存帴鑾峰彇璁板綍锛岄伩鍏峟ilter鎿嶄綔 List<RecordMetaDSumResult> recordsResult = recordMap.get(result.getNo()); try { - if(!CollectionUtils.isEmpty(recordsResult)) setRecordDaily(videoDailyExp, result, recordsResult); + if (!CollectionUtils.isEmpty(recordsResult)) + setRecordDaily(videoDailyExp, result, recordsResult); } catch (Exception e) { log.error(e.getMessage()); } @@ -869,7 +878,7 @@ // 浣跨敤Map鐩存帴鑾峰彇璁板綍锛岄伩鍏峟ilter鎿嶄綔 List<RecordMetaDSumResult> recordsResult = recordMap.get(result.getNo()); try { - if(!CollectionUtils.isEmpty(recordsResult)) setLoseDaily(videoDailyExp, recordsResult); + if (!CollectionUtils.isEmpty(recordsResult)) setLoseDaily(videoDailyExp, recordsResult); } catch (Exception e) { log.error(e.getMessage()); } -- Gitblit v1.8.0