From 97b1e0d4820606bef726f60e459b66afb1e8eab1 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 21 十一月 2025 11:50:51 +0800
Subject: [PATCH] 优化与日志
---
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 80 +++++++++++++++++++++------------------
1 files changed, 43 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 d5a28ce..bc7a065 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
@@ -608,8 +608,8 @@
List<TMonitorResult> onlineResult = mongoTemplate.find(query, TMonitorResult.class);
log.info("澶у皬:{}",onlineResult.size());
//姝ゅ闇�瑕佽繃婊ゆ帀璁惧鍏ㄦ櫙鍦ㄧ嚎 缁嗚妭涓嶅湪绾跨殑鎯呭喌 鍙互鎸� point鍒嗙粍 鍒嗘垜璁稿缁勪箣鍚庡啀鍋氬鐞�
- Map<String, List<TMonitorResult>> ipToDevices = onlineResult.stream()
- .collect(Collectors.groupingBy(TMonitorResult::getIp));
+// Map<String, List<TMonitorResult>> ipToDevices = onlineResult.stream()
+// .collect(Collectors.groupingBy(TMonitorResult::getIp)); //閲嶈鎿嶄綔 鎸塱p鍒嗙粍
// onlineResult = ipToDevices.values().stream()
// .map(devices -> {
@@ -632,7 +632,7 @@
log.info("鏈堜唤鍦ㄧ嚎鏁版嵁:{}鏉℃暟", onlineResult.size());
// 浣跨敤Collectors.toMap鍘婚噸锛屼繚鐣欐瘡涓狽o鐨勭涓�涓亣鍒扮殑鍏冪礌
- Map<String, TMonitorResult> uniqueResultsMap = onlineResult.stream()
+ Map<String, TMonitorResult> fullDataMap = onlineResult.stream()
.collect(Collectors.toMap(
TMonitorResult::getNo, // keyMapper锛岃繖閲屽亣璁� getNo() 杩斿洖 No 瀛楁
Function.identity(), // valueMapper锛岀洿鎺ヤ娇鐢ㄥ璞℃湰韬�
@@ -640,16 +640,14 @@
));
- // 灏� Map 杞崲涓� List
- List<TMonitorResult> tMonitorResults = new ArrayList<>(uniqueResultsMap.values());
- log.info("鍘婚噸鍚庡ぇ灏�:{}", tMonitorResults.size());
-
-
+ // 灏� Map 杞崲涓� List 鍘婚噸鍚庡噺灏戞暟鎹簱娑堣��
+ List<TMonitorResult> tMonitorResults = new ArrayList<>(fullDataMap.values());
+// log.info("鍘婚噸鍚庡ぇ灏�:{}", tMonitorResults.size());
// 鑾峰彇鍔ㄦ�佸垪鏁版嵁骞舵瀯寤虹紦瀛楳ap
Map<Integer, List<DynamicColumnVO>> dynamicColumnMap = new HashMap<>();
if (!tMonitorResults.isEmpty()) {
- //鑾峰彇鐐逛綅闆嗗悎
+ //鑾峰彇ip闆嗗悎
List<Integer> pointIds = tMonitorResults.stream()
.map(TMonitorResult::getPointId)
.distinct() // 鍘婚噸锛屽噺灏戞暟鎹簱鏌ヨ
@@ -664,36 +662,34 @@
}
// 琛ュ厖鍔ㄦ�佸垪鏁版嵁
+ // 鍘婚噸鍚庣殑鍔ㄦ�佸垪淇℃伅
for (TMonitorResult result : tMonitorResults) {
result.setDynamicColumnList(dynamicColumnMap.getOrDefault(result.getPointId(), Collections.emptyList()));
}
}
-
// 鎸夐儴闂ㄥ垎缁勶紝鍑忓皯鍚庣画寰幆涓殑杩囨护鎿嶄綔
- Map<Integer, List<TMonitorResult>> deptMonitorMap = tMonitorResults.stream()
+ Map<Integer, List<TMonitorResult>> deptMonitorMap = tMonitorResults.stream() //鍘婚噸鍚庢寚鍚� 姣忎釜璁惧鍙湁绗竴澶╃殑鏁版嵁
.collect(Collectors.groupingBy(TMonitorResult::getDeptId));
// 鎸夎澶囩紪鍙峰垎缁刼nlineResult锛屽姞閫熷悗缁煡鎵�
- Map<String, List<TMonitorResult>> noToOnlineMap = onlineResult.stream()
+ Map<String, List<TMonitorResult>> noToOnlineMap = onlineResult.stream() //杩欓噷鍊兼墍浠ユ暟鎹互璁惧鏍囧彿鍒嗙粍锛屽緱鍒板叾璇︽儏 濡� 1鍙峰埌31鍙风殑褰曞儚鎯呭喌
.collect(Collectors.groupingBy(TMonitorResult::getNo));
// 骞惰澶勭悊鍚勯儴闂ㄦ暟鎹�
- List<CompletableFuture<ExcelExp>> futures = new ArrayList<>(exportForm.getDeptIds().size());
- Map<Integer, List<VideoDailyExp>> deptExpMap = new ConcurrentHashMap<>();
+ List<CompletableFuture<ExcelExp>> futures = new ArrayList<>(exportForm.getDeptIds().size());//鎸夊墠绔紶鍏ョ殑 閮ㄩ棬缂栧彿 鏉ュ垽鏂渶瑕佸紑澶氬皯涓嚎绋�
+ Map<Integer, List<VideoDailyExp>> deptExpMap = new ConcurrentHashMap<>();
for (Integer deptId : exportForm.getDeptIds()) {
// 浣跨敤閮ㄩ棬ID鐨勬渶缁堝彉閲�
final Integer currentDeptId = deptId;
CompletableFuture<ExcelExp> future = CompletableFuture.supplyAsync(() -> {
- // 鐩存帴浠庨鍒嗙粍鐨凪ap涓幏鍙栵紝閬垮厤姣忔杩囨护
+ // deptMonitorMap涓婇潰宸茬粡鍦ㄥ幓閲嶅悗鍒嗚繃缁勪簡锛堣繖閲屽彧鏄綋鐜颁簡鍘婚噸鐨勪綔鐢紝涓嬫柟姣忔棩鏁版嵁鏄�氳繃no鍦╪oToOnlineMap涓彇鍒扮殑锛�
+
List<TMonitorResult> monitors = deptMonitorMap.getOrDefault(currentDeptId, Collections.emptyList());
-
-
if (monitors.isEmpty()) {
return null;
}
-
List<VideoDailyExp> videoDailyExps = new ArrayList<>(monitors.size());
AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(currentDeptId);
String areaName = areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName();
@@ -726,21 +722,22 @@
}
videoDailyExp.setTag(tag.toString());
- // 璁剧疆鍦ㄧ嚎鏁版嵁
+ // 璁剧疆鍦ㄧ嚎鏁版嵁閲嶇偣浣嶇疆
try {
- // 浠庨鏋勫缓鐨凪ap涓幏鍙栵紝閬垮厤姣忔杩囨护
+ // 浠庨鏋勫缓鐨凪ap涓幏鍙栵紝閬垮厤姣忔杩囨护 姝g‘鑾峰緱鍦ㄧ嚎鏁版嵁浣嶇疆
List<TMonitorResult> onlines = noToOnlineMap.getOrDefault(result.getNo(), Collections.emptyList());
+ // 閲嶇偣鏌ョ湅涓嬮潰杩欎釜鏂规硶 videoDailyExp 浼犲叆闇�瑕佺粍瑁呭璞$殑 videoDailyExp 鍜� 鏁版嵁婧恟esult鍖呭惈鍔ㄦ�佸垪淇℃伅鐨勫璞� 鍜屼粬瀵瑰簲1鍒�31澶╃殑鍦ㄧ绾跨姸鎬�
setOnlineDaily(videoDailyExp, result, onlines);
} catch (Exception e) {
log.error("璁剧疆鍦ㄧ嚎鏁版嵁寮傚父", e);
}
-
+//
videoDailyExps.add(videoDailyExp);
}
-
- // 瀛樺偍缁撴灉鍒扮嚎绋嬪畨鍏ㄧ殑Map
+//
+ // 瀛樺偍缁撴灉鍒扮嚎绋嬪畨鍏ㄧ殑Map 缁撴灉濡� 鎸夊尯鍒嗗垎缁� 瀵瑰簲璁惧鐨� 1鍒�31鏃ョ殑鍦ㄧ绾胯鎯�
deptExpMap.put(currentDeptId, videoDailyExps);
-
+//
return new ExcelExp(areaName, videoDailyExps, VideoDailyExp.class);
}, threadPoolTaskExecutor);
@@ -778,8 +775,9 @@
log.info("car鏁�:{}", car);
log.info("video鏁�:{}", video);
- // 澶勭悊绂荤嚎鏁扮粺璁″拰鍦ㄧ嚎鐜囩粺璁�
+ // 绂荤嚎鏁扮粺璁�
List<VideoTypeOffOnlineExp> videoTypeOffOnlineExps = new ArrayList<>();
+ // 鍦ㄧ嚎鐜囩粺璁�
List<VideoOnlineRateExp> videoOnlineRateExps = new ArrayList<>();
for (Map.Entry<Integer, List<VideoDailyExp>> entry : deptExpMap.entrySet()) {
@@ -787,7 +785,7 @@
List<VideoDailyExp> list = entry.getValue();
AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(deptId);
- // 鎵归噺澶勭悊涓夌璁惧绫诲瀷
+ // 鎵归噺澶勭悊涓夌璁惧绫诲瀷 姣忎釜璁惧1鍒�31鍙峰湪绂荤嚎鎯呭喌
addDeviceStats(list, areaDeptEnum, "1", "浜鸿劯", videoTypeOffOnlineExps, videoOnlineRateExps);
addDeviceStats(list, areaDeptEnum, "2", "鍗″彛", videoTypeOffOnlineExps, videoOnlineRateExps);
addDeviceStats(list, areaDeptEnum, "3", "瑙嗛", videoTypeOffOnlineExps, videoOnlineRateExps);
@@ -893,7 +891,7 @@
videoTypeOffOnlineExp.setArea("鑷础甯�");
videoTypeOffOnlineExp.setType(type + "鍚堣");
}
- //鍦ㄧ嚎璁惧鏁版嵁锛屽悎璁″璞★紝淇℃伅瑁呴厤
+// 鍦ㄧ嚎璁惧鏁版嵁锛屽悎璁″璞★紝淇℃伅瑁呴厤
public void setAllVideoTypeOnlineExpCount(
long allVideoCount,List<VideoOnlineRateExp> videoOnlineRateExps,
VideoOnlineRateExp videoOnlineRateExp,
@@ -1069,18 +1067,27 @@
String fieldName = "day" + i;
String countName = "count" + i;
for(VideoDailyExp videoDailyExp: videoDailyExps){
- // 鏋勯�犲瓧娈靛悕
- Field field = videoDailyExp.getClass().getDeclaredField(fieldName);
- // 纭繚瀛楁鏄鏈夌殑鍙互璁块棶
- field.setAccessible(true);
- // 鑾峰彇瀛楁鍊�
- String value = (String) field.get(videoDailyExp);
- if ("鍦ㄧ嚎".equals(value)) {
- count ++;
+ try {
+ // 鏋勯�犲瓧娈靛悕
+ Field field = videoDailyExp.getClass().getDeclaredField(fieldName);
+ // 纭繚瀛楁鏄鏈夌殑鍙互璁块棶
+ field.setAccessible(true);
+ // 鑾峰彇瀛楁鍊�
+ String value = (String) field.get(videoDailyExp);
+ if ("鍦ㄧ嚎".equals(value)) {
+ count ++;
+ }
+ } catch (NoSuchFieldException e) {
+ // 瀛楁涓嶅瓨鍦ㄦ椂璺宠繃褰撳墠寰幆锛岃褰曟棩蹇�
+ log.warn("VideoDailyExp 涓嶅瓨鍦ㄥ瓧娈�: {}", fieldName, e);
+ } catch (IllegalAccessException e) {
+ // 瀛楁璁块棶寮傚父鏃惰烦杩囷紝璁板綍鏃ュ織
+ log.error("璁块棶瀛楁 {} 澶辫触", fieldName, e);
}
}
//姣忔棩鍦ㄧ嚎鐜�
double rate = (double) count / videoDailyExps.size();
+ log.info("鎵撳嵃璁$畻鍑虹殑count:{}",count);
//鍙嶅皠娣诲姞鍒板璞″睘鎬т腑
Field field = videoOnlineRateExp.getClass().getDeclaredField(fieldName);
Field countField = videoOnlineRateExp.getClass().getDeclaredField(countName);
@@ -1898,6 +1905,7 @@
List<TMonitorResult> onlineResult = onlines.stream().filter(online -> online.getNo().equals(result.getNo())).collect(Collectors.toList());
videoDailyExp.setOnlineStateList(onlineResult);
for (TMonitorResult monitorResult : onlineResult) {
+ //涓虹┖鐧界殑鍘熷洜 濡傝繘鍏ョ1鍙锋椂 monitorResult娌℃湁瀵瑰簲涓�鍙风殑鏁版嵁锛屽氨鏄竴鍙穖ongodb閲岄潰娌℃湁瀵瑰簲璇ヨ澶囩殑鏁版嵁
int dayOfMonth = monitorResult.getMongoCreateTime().getDayOfMonth();
String online = "";
if (ApiConstants.UY_OnlineSite_Online.equals(monitorResult.getOnline())) {
@@ -1912,8 +1920,6 @@
field.setAccessible(true);
field.set(videoDailyExp, online);
}
-
-
}
//璁剧疆姣忔棩褰曞儚鏁版嵁
--
Gitblit v1.8.0