From 9b55891e6dd57bc244e6c5654434b32e05c83496 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 25 九月 2024 15:10:25 +0800
Subject: [PATCH] 异常监控排除已经审核过的工单作为状态
---
ycl-server/src/main/java/com/ycl/task/UYTask.java | 103 +++++++++++++++++++++++++++++----------------------
1 files changed, 59 insertions(+), 44 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 2c3ae39..c070048 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,24 +3,33 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.entity.WorkOrder;
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.OnlineThreadVO;
import com.ycl.platform.domain.vo.UpdateOnlineVO;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.UYErrorTypeCheckService;
+import com.ycl.platform.service.WorkOrderService;
import com.ycl.platform.service.YwPointService;
+import com.ycl.system.domain.SysConfig;
+import com.ycl.system.mapper.SysConfigMapper;
+import com.ycl.thread.OnlineCheckThread;
import com.ycl.utils.DateUtils;
import com.ycl.utils.http.HttpUtils;
import com.ycl.utils.http.SelfHttpUtil;
import constant.ApiConstants;
+import constant.RedisConstant;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
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.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
@@ -30,14 +39,10 @@
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;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
//浼樹簯瀵规帴鏁版嵁浠诲姟
@Slf4j
@@ -51,6 +56,9 @@
private final YwPointService pointService;
private final TMonitorMapper monitorMapper;
private final SelfHttpUtil selfHttpUtil;
+ private final RedisTemplate redisTemplate;
+ private final WorkOrderService workOrderService;
+ private final SysConfigMapper sysConfigMapper;
@Value("${youYun.tenantId}")
private String tenantId;
@@ -170,44 +178,51 @@
/**
* 鐐逛綅鍦ㄧ嚎妫�娴�
*/
- public void pointOnline() {
+ public void pointOnline() throws ExecutionException, InterruptedException {
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);
- });
+ Integer times = 2;
+ SysConfig config = new SysConfig();
+ config.setConfigKey("DAY_OF_POINT_OUTLINE_TIMES");
+ SysConfig sysConfig = sysConfigMapper.selectConfig(config);
+ if (Objects.nonNull(sysConfig)) {
+ times = Integer.valueOf(sysConfig.getConfigValue());
+ } else {
+ log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
}
+ // 鍏堟煡鍑鸿澶嘔P闆嗗悎
+ List<TMonitor> monitorList = monitorMapper.getDistinctIP();
+ List<Future<OnlineThreadVO>> futureList = new ArrayList<>(48);
+ List<OnlineThreadVO> dataList = new ArrayList<>(48);
+ for (TMonitor monitor : monitorList) {
+ OnlineCheckThread thread = new OnlineCheckThread(monitor, redisTemplate, selfHttpUtil, times);
+ Future<OnlineThreadVO> future = executorService.submit(thread);
+ futureList.add(future);
+ }
+ for (Future<OnlineThreadVO> future : futureList) {
+ dataList.add(future.get()); // get鏂规硶浼氶樆濉烇紝鐭ラ亾鎷垮埌缁撴灉鎵嶇户缁墽琛宖or
+ }
+
+ // 鏇存柊point琛ㄧ殑鍦ㄧ嚎鏍囪瘑
+ Date now = new Date();
+ List<UpdateOnlineVO> willUpdateList = dataList.stream().map(item -> {
+ UpdateOnlineVO vo = new UpdateOnlineVO();
+ vo.setOnline(item.getOnline());
+ 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(OnlineThreadVO::getWorkOrder)
+ .collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(workOrderList)) {
+ return;
+ }
+ workOrderService.innerAddWorkOrder(workOrderList);
+ log.info("鐐逛綅鍦ㄧ嚎鐩戞祴瀹屾垚");
}
//鐐逛綅鍦ㄧ嚎鐜�
--
Gitblit v1.8.0