From 9d69a278fcb5c159ec62eec3ce78ae15eb5d5ece Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 12 十一月 2024 16:24:59 +0800
Subject: [PATCH] 离线工单ip去重只生成一个工单
---
ycl-server/src/main/java/com/ycl/task/UYTask.java | 43 +++++++++++++++++++++++++++++--------------
1 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index 49ea8ea..737fbae 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -40,6 +40,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
//浼樹簯瀵规帴鏁版嵁浠诲姟
@@ -186,7 +187,7 @@
} else {
log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
}
- // 鍏堟煡鍑哄湪绾跨殑璁惧IP闆嗗悎,鍓旈櫎鎺夊湪绾挎儏鍐垫槸鏈煡鐨�,骞朵笖鍙娴嬫鍦ㄨ�冩牳鐨勮澶囬伩鍏嶅浣欏伐鍗�
+ // 鍏堟煡鍑鸿澶嘔P闆嗗悎,鍓旈櫎鎺夊湪绾挎儏鍐垫槸鏈煡鐨�,骞朵笖鍙娴嬫鍦ㄨ�冩牳鐨勮澶囬伩鍏嶅浣欏伐鍗�
List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
List<TMonitorResult> dataList = new ArrayList<>(48);
Integer time = times;
@@ -196,6 +197,7 @@
return thread.call(); // 鍋囪 OnlineCheckThread 瀹炵幇浜� Callable 鎺ュ彛
}, executorService)
.orTimeout(60, TimeUnit.SECONDS)
+ //鍑虹幇寮傚父
.exceptionally(ex -> {
if (ex instanceof TimeoutException) {
log.error("浠诲姟鎵ц瓒呮椂:"+monitor.getIp());
@@ -245,20 +247,12 @@
Date now = new Date();
List<UpdateOnlineVO> willUpdateList = dataList.stream().filter(result->!result.getPingOnline()).map(item -> {
UpdateOnlineVO vo = new UpdateOnlineVO();
- vo.setOnline(item.getPingOnline()?ApiConstants.UY_OnlineSite_Online:ApiConstants.UY_OnlineSite_Offline);
+ vo.setOnline(ApiConstants.UY_OnlineSite_Offline);
vo.setIp(item.getIp());
vo.setUpdateTime(now);
return vo;
}).collect(Collectors.toList());
monitorMapper.updateOnline(willUpdateList);
- //宸ュ崟
- List<WorkOrder> workOrderList = dataList.stream()
- .filter(item -> Objects.nonNull(item.getWorkOrder()))
- .map(TMonitorResult::getWorkOrder)
- .collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(workOrderList)) {
- workOrderService.innerAddWorkOrder(workOrderList);
- }
//瀛樻斁鍒癿ongo
if (!CollectionUtils.isEmpty(dataList)) {
//濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
@@ -266,6 +260,21 @@
DeleteResult result = mongoTemplate.remove(query, TMonitorResult.class);
//瀛樻斁鍦╩ongo涓�
mongoTemplate.insertAll(dataList);
+ }
+ //宸ュ崟锛堝悓涓�IP鍙敓鎴愪竴涓伐鍗曪級
+ List<WorkOrder> workOrderList = dataList.stream()
+ .filter(item -> Objects.nonNull(item.getWorkOrder()))
+ .collect(Collectors.toMap(
+ TMonitorResult::getIp,
+ Function.identity(),
+ (existing, replacement) -> existing // 濡傛灉閬囧埌鐩稿悓鐨� IP锛屼繚鐣欑涓�涓� TMonitorResult 瀵硅薄
+ ))
+ .values()
+ .stream()
+ .map(TMonitorResult::getWorkOrder)
+ .collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(workOrderList)) {
+ workOrderService.innerAddWorkOrder(workOrderList);
}
log.info("鐐逛綅鍦ㄧ嚎鐩戞祴瀹屾垚");
}
@@ -311,8 +320,14 @@
return vo;
}).collect(Collectors.toList());
monitorMapper.updateOnline(willUpdateList);
- //绂荤嚎鐢熸垚宸ュ崟
- List<VideoOnlineResult> workOrders = records.stream().filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus())).collect(Collectors.toList());
+ //绂荤嚎鐢熸垚宸ュ崟,涓�涓猧p鍙敓鎴愪竴涓伐鍗�
+ List<VideoOnlineResult> workOrders = (List<VideoOnlineResult>) records.stream()
+ .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus()))
+ .collect(Collectors.toMap(
+ VideoOnlineResult::getIpAddr,
+ Function.identity(),
+ (existing, replacement) -> existing // 濡傛灉閬囧埌鐩稿悓鐨� IP锛屼繚鐣欑涓�涓紙existing锛�
+ )).values();
uyErrorTypeCheckService.videoOnlineCheck(workOrders);
} else {
log.error("鐐逛綅鍦ㄧ嚎缁撴灉鏁版嵁涓虹┖{}", data);
@@ -362,8 +377,8 @@
pointService.setDeviceTagByGB(records);
//瀛樻斁鍦╩ongo涓�
mongoTemplate.insertAll(records);
- // 宸ュ崟鐢熸垚
- uyErrorTypeCheckService.recordMetaDSumCheck(records);
+// // 宸ュ崟鐢熸垚
+// uyErrorTypeCheckService.recordMetaDSumCheck(records);
}
} else {
log.error("褰曞儚鍙敤鏁版嵁涓虹┖{}", jsonObject);
--
Gitblit v1.8.0