From 5c978147b913754adbf913acdb6e4dcf995f0609 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 06 九月 2024 15:14:03 +0800
Subject: [PATCH] 新的点位在线率查询方式
---
ycl-server/src/main/java/com/ycl/task/UYTask.java | 67 +++++++++++++++++++++++++++++++++
1 files changed, 67 insertions(+), 0 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 e75cd04..2c3ae39 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,12 +3,17 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
+import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.param.UY.*;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.domain.vo.UpdateOnlineVO;
+import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.UYErrorTypeCheckService;
import com.ycl.platform.service.YwPointService;
import com.ycl.utils.DateUtils;
+import com.ycl.utils.http.HttpUtils;
+import com.ycl.utils.http.SelfHttpUtil;
import constant.ApiConstants;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -16,14 +21,23 @@
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
+import java.io.IOException;
+import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
//浼樹簯瀵规帴鏁版嵁浠诲姟
@Slf4j
@@ -35,6 +49,8 @@
private final UYClient uyClient;
private final UYErrorTypeCheckService uyErrorTypeCheckService;
private final YwPointService pointService;
+ private final TMonitorMapper monitorMapper;
+ private final SelfHttpUtil selfHttpUtil;
@Value("${youYun.tenantId}")
private String tenantId;
@@ -46,6 +62,14 @@
private String email;
@Value("${youYun.passwd}")
private String passwd;
+
+ private static final ExecutorService executorService = new ThreadPoolExecutor(16,
+ 128,
+ 5000,
+ TimeUnit.SECONDS,
+ new ArrayBlockingQueue<>(1000),
+ new ThreadPoolExecutor.CallerRunsPolicy()
+ );
// 鍥惧儚妫�娴�
public void imageDetection() {
@@ -143,6 +167,49 @@
log.info("缁撴潫涓�鏈轰竴妗e悎鏍肩巼鏁版嵁鍚屾");
}
+ /**
+ * 鐐逛綅鍦ㄧ嚎妫�娴�
+ */
+ public void pointOnline() {
+ log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
+ // 鍏堟煡鍑鸿澶嘔P闆嗗悎
+ List<String> ipList = monitorMapper.getDistinctIP();
+ String prefix = "http://";
+ Date now = new Date();
+ for (String ip : ipList) {
+ executorService.submit(() -> {
+ // 鍏堟娴嬭兘鍚﹁闂ip鐨勭綉椤�
+ ResponseEntity<Object> res = null;
+ UpdateOnlineVO online = new UpdateOnlineVO();
+ online.setIp(ip);
+ if ("127.0.0.1".equals(ip)) {
+ online.setOnline(Boolean.FALSE);
+ monitorMapper.updateOnline(online);
+ return;
+ }
+ try {
+ res = selfHttpUtil.get(prefix + ip, null, null);
+ online.setOnline(Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode());
+ } catch (Exception e) {
+ online.setOnline(Boolean.FALSE);
+ }
+ online.setUpdateTime(now);
+
+ // 濡傛灉http寰楀埌鐨勪笉鍦ㄧ嚎锛岄偅涔堝啀ping涓�涓�
+ boolean reachable = false;
+ if (! online.getOnline()) {
+ try {
+ reachable = InetAddress.getByName(ip).isReachable(3000);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ online.setOnline(reachable);
+ }
+ monitorMapper.updateOnline(online);
+ });
+ }
+ }
+
//鐐逛綅鍦ㄧ嚎鐜�
public void videoOnlineTask() {
//瑙嗛鍥惧儚璐ㄩ噺
--
Gitblit v1.8.0