From ea2967b1198f617e252ba897ef4db68b7cda3680 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 30 九月 2024 15:57:03 +0800 Subject: [PATCH] 监测接口 --- ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 115 insertions(+), 4 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 e74f2c9..8edbed3 100644 --- a/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java +++ b/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java @@ -1,7 +1,16 @@ package com.ycl.utils; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.ycl.platform.domain.entity.DeviceInfo; +import com.ycl.platform.domain.entity.TMonitor; import com.ycl.platform.domain.result.SYS.TMonitorResult; +import com.ycl.platform.domain.vo.CheckResult; +import com.ycl.platform.domain.vo.CheckUtil; +import com.ycl.platform.mapper.DeviceInfoMapper; +import com.ycl.platform.mapper.TMonitorMapper; +import com.ycl.platform.service.WorkOrderService; import com.ycl.utils.http.SelfHttpUtil; +import com.ycl.utils.uuid.IdUtils; import constant.RedisConstant; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -15,9 +24,8 @@ import java.io.IOException; import java.net.InetAddress; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.net.UnknownHostException; +import java.util.*; /** * @author xp @@ -29,8 +37,10 @@ public class CheckPointUtil { private final RedisTemplate redisTemplate; - private final SelfHttpUtil selfHttpUtil; + private final DeviceInfoMapper deviceInfoMapper; + private final WorkOrderService workOrderService; + private final TMonitorMapper monitorMapper; /** * 鐩戞祴鐐逛綅鍦ㄧ嚎宸ュ叿绫� @@ -81,4 +91,105 @@ monitor.setOffLineCount(offLineTimes); return monitor; } + + + /** + * 鐩戞祴鐐逛綅鍦ㄧ嚎 + * @return + */ + public CheckResult webCheck(CheckUtil checkUtil) { + CheckResult result = new CheckResult(); + List<TMonitor> ips = new LambdaQueryChainWrapper<>(monitorMapper) + .eq(TMonitor::getSerialNumber, checkUtil.getSerialNumber()) + .list(); + if (ips.size() < 1) { + result.setStatus("鍥芥爣鐮佹湭鏌ユ壘鍒癐P"); + return result; + } + checkUtil.setIp(ips.get(0).getIp()); + + log.info("鐩戞祴IP锛�" + checkUtil.getIp()); + String prefix = "http://"; + if ("127.0.0.1".equals(checkUtil.getIp())) { + result.setStatus("ip寮傚父"); + return result; + } + boolean webReachable = false; + try { + ResponseEntity<Object> res = selfHttpUtil.get(prefix + checkUtil.getIp(), null, null); + webReachable = Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode(); + } catch (Exception e) { + webReachable = Boolean.FALSE; + } + // ping + boolean pingReachable = false; + try { + InetAddress inet = InetAddress.getByName(checkUtil.getIp()); + pingReachable = inet.isReachable(5000); // 5000姣瓒呮椂鏃堕棿 + } catch (UnknownHostException e) { + e.printStackTrace(); + } 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(); + } + } + + String status = ""; + if (! webReachable) { + status += "璁惧web璁块棶澶辫触锛�"; + } + if (! pingReachable) { + status += "璁惧ip鏈猵ing閫氾紱"; + } + if (StringUtils.isEmpty(imgUrl)) { + status += "鏈幏鍙栧埌鍥剧墖"; + } + result.setStatus(status); + return result; + } + + /** + * ping + * + * @return + */ + public CheckResult ping(CheckUtil checkUtil) { + CheckResult result = new CheckResult(); + + log.info("鐩戞祴IP锛�" + checkUtil.getIp()); + String prefix = "http://"; + if ("127.0.0.1".equals(checkUtil.getIp())) { + result.setStatus("ip寮傚父"); + return result; + } + // ping + boolean pingReachable = false; + try { + InetAddress inet = InetAddress.getByName(checkUtil.getIp()); + pingReachable = inet.isReachable(5000); // 5000姣瓒呮椂鏃堕棿 + } catch (UnknownHostException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + String status = ""; + if (! pingReachable) { + status += "ip鏈猵ing閫氾紱"; + } + result.setStatus(status); + return result; + } } -- Gitblit v1.8.0