From 9e11e94f8a92a62695657bb2b3b59a1cf47058a5 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 17 十月 2025 13:38:11 +0800
Subject: [PATCH] 大屏显示问题以及报备导出
---
ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java | 130 +++++++++++++++++++++++++++++++-----------
1 files changed, 95 insertions(+), 35 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java b/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
index 8edbed3..cc25556 100644
--- a/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
+++ b/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -44,57 +45,105 @@
/**
* 鐩戞祴鐐逛綅鍦ㄧ嚎宸ュ叿绫�
+ *
* @return
*/
- public TMonitorResult check(TMonitorResult monitor) {
+ public TMonitorResult check(TMonitorResult monitor,Integer times) {
+ // TMonitorResult(deptId=202, ip=51.95.48.18, online=0,
+// onlineStr=null, pingOnline=true, pingOnlineStr=null,
+// checkCount=1, offLineCount=0, offLineTimeStr=null,
+// monitorType=3, name=DX_R涓変腑澶ч棬鍓嶈矾娈靛乏渚т汉琛岄亾2_鍏ㄦ櫙,
+// workOrder=null, pointId=null, createWorkOrder=null, dynamicColumnList=null),
+
// 鍏堟娴嬭兘鍚﹁闂ip鐨勭綉椤�
- ResponseEntity<Object> res = null;
- log.info("鐩戞祴IP锛�" + monitor.getIp());
+ ResponseEntity<String> res = null;
String prefix = "http://";
if ("127.0.0.1".equals(monitor.getIp())) {
- monitor.setOnline(Boolean.FALSE);
+ monitor.setPingOnline(Boolean.FALSE);
+ log.error("ip鏈夎"+monitor.getIp());
return monitor;
}
try {
res = selfHttpUtil.get(prefix + monitor.getIp(), null, null);
- monitor.setOnline(Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode());
+ monitor.setPingOnline(Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode());
} catch (Exception e) {
- monitor.setOnline(Boolean.FALSE);
+ monitor.setPingOnline(Boolean.FALSE);
}
-
// 濡傛灉http寰楀埌鐨勪笉鍦ㄧ嚎锛岄偅涔堝啀ping涓�涓�
boolean reachable = false;
Integer checkTimes = 1;
Integer offLineTimes = 0;
- Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getIp());
- if (!CollectionUtils.isEmpty(map)) {
+ Integer continueOffTimes = 0;
+ List<String> offTimeList = new ArrayList<>();
+ // 浠嶳edis鑾峰彇鏁版嵁鏃惰繘琛岀被鍨嬪畨鍏ㄧ殑杞崲
+ Map<String, Object> map = null;
+ Object mapObj = redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getNo());
+ if (mapObj != null) {
+ map = (Map<String, Object>) mapObj;
checkTimes = (Integer) map.get("checkTimes") + 1;
offLineTimes = (Integer) map.get("offLineTimes");
+ continueOffTimes = (Integer) map.get("continueOffTimes");
+ Object offTimeListObj = map.get("offTimeList");
+ if (offTimeListObj instanceof List) {
+ offTimeList = new ArrayList<>((List<String>) offTimeListObj);
+ }
} else {
map = new HashMap<>();
}
- if (!monitor.getOnline()) {
- try {
- reachable = InetAddress.getByName(monitor.getIp()).isReachable(3000);
- } catch (IOException e) {
- e.printStackTrace();
- }
- monitor.setOnline(reachable);
+ if (!monitor.getPingOnline()) {
+ reachable = checkPing(monitor, reachable);
+ monitor.setPingOnline(reachable);
}
- if (!monitor.getOnline()) {
+ if (!monitor.getPingOnline()) {
offLineTimes++;
+ continueOffTimes++;
+ //璁板綍绂荤嚎鏃堕棿
+ Date now = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ offTimeList.add(dateFormat.format(now));
+ monitor.setOffLineTimeStr(offTimeList);
+ //鍒拌揪浜х敓宸ュ崟鐨勯槇鍊兼鏁�
+ if (continueOffTimes>=times) {
+ //浜х敓浜嗗伐鍗曟墠浼氬瓨鍌ㄧ绾挎椂闂�,瀛樺偍鏈�杩戜竴娆′骇鐢熷伐鍗曠殑杩欏嚑涓绾挎椂闂寸偣
+ monitor.setCreateWorkOrder(Boolean.TRUE);
+ //浜х敓浜嗕竴娆″伐鍗曞垯娓呴櫎
+ continueOffTimes = 0;
+ }
+ }else {
+ //濡傛灉鍦ㄧ嚎浜嗭紝娓呯┖杩炵画绂荤嚎娆℃暟锛屾竻绌虹绾挎椂闂�
+ continueOffTimes = 0;
}
map.put("checkTimes", checkTimes);
map.put("offLineTimes", offLineTimes);
- redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getIp(), map);
+ map.put("continueOffTimes", continueOffTimes);
+ map.put("offTimeList", offTimeList);
+ redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getNo(), map);
monitor.setCheckCount(checkTimes);
monitor.setOffLineCount(offLineTimes);
+
return monitor;
+ }
+
+ private boolean checkPing(TMonitorResult monitor, boolean reachable) {
+ try {
+ int[] sleepTimes = {5000, 15000, 30000};
+ for (int sleepTime : sleepTimes) {
+ reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000);
+ if (reachable) {
+ break;
+ }
+ Thread.sleep(sleepTime);
+ }
+ } catch (Exception e) {
+ log.error("Ping寮傚父",e);
+ }
+ return reachable;
}
/**
* 鐩戞祴鐐逛綅鍦ㄧ嚎
+ *
* @return
*/
public CheckResult webCheck(CheckUtil checkUtil) {
@@ -116,9 +165,10 @@
}
boolean webReachable = false;
try {
- ResponseEntity<Object> res = selfHttpUtil.get(prefix + checkUtil.getIp(), null, null);
+ ResponseEntity<String> res = selfHttpUtil.get(prefix + checkUtil.getIp(), null, null);
webReachable = Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode();
} catch (Exception e) {
+ log.info("妫�娴媤eb寮傚父" + e.getMessage());
webReachable = Boolean.FALSE;
}
// ping
@@ -131,31 +181,39 @@
} catch (IOException e) {
e.printStackTrace();
}
-
String imgUrl = "";
- // 鏌ュ嚭鍥芥爣璁惧锛屽氨涓�鏉℃暟鎹�
- List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper)
- .orderByDesc(DeviceInfo::getUpdateTime)
- .last("limit 1")
- .list();
- if (! CollectionUtils.isEmpty(gbDevices)) {
- try {
- imgUrl = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), checkUtil.getSerialNumber(), IdUtils.workOrderNO(new Date(), "99999"));
- result.setImg(imgUrl);
- } catch (Exception e) {
- e.printStackTrace();
+ if (pingReachable || webReachable) {
+ // 鏌ュ嚭鍥芥爣璁惧锛屽氨涓�鏉℃暟鎹�
+ List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper)
+ .orderByDesc(DeviceInfo::getUpdateTime)
+ .last("limit 1")
+ .list();
+ if (!CollectionUtils.isEmpty(gbDevices)) {
+ try {
+ imgUrl = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), checkUtil.getSerialNumber(), IdUtils.workOrderNO(new Date(), "99999"));
+ result.setImg(imgUrl);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
-
String status = "";
- if (! webReachable) {
+ if (!webReachable) {
status += "璁惧web璁块棶澶辫触锛�";
+ } else if (webReachable) {
+ status += "璁惧web璁块棶姝e父锛�";
}
- if (! pingReachable) {
+
+ if (!pingReachable) {
status += "璁惧ip鏈猵ing閫氾紱";
+ } else if (pingReachable) {
+ status += "璁惧ipPing姝e父锛�";
}
+
if (StringUtils.isEmpty(imgUrl)) {
status += "鏈幏鍙栧埌鍥剧墖";
+ } else {
+ status += "鑾峰彇鍥剧墖姝e父";
}
result.setStatus(status);
return result;
@@ -186,8 +244,10 @@
e.printStackTrace();
}
String status = "";
- if (! pingReachable) {
+ if (!pingReachable) {
status += "ip鏈猵ing閫氾紱";
+ } else {
+ status += "鎴愬姛";
}
result.setStatus(status);
return result;
--
Gitblit v1.8.0