ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java
New file @@ -0,0 +1,26 @@ package com.ycl.platform.domain.vo; import lombok.Data; /** * 监测工具响应结果 * * @author:xp * @date:2024/9/30 14:09 */ @Data public class CheckResult { /** * 在线状态 * */ private String status; /** * 拉流取图片 * */ private String img; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java
New file @@ -0,0 +1,22 @@ package com.ycl.platform.domain.vo; import lombok.Data; /** * @author:xp * @date:2024/9/30 14:03 */ @Data public class CheckUtil { private String ip; private String serialNumber; /** * 1: 在线监测 2: ping * */ private String type; } ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java
New file @@ -0,0 +1,41 @@ package com.ycl.platform.controller; import com.ycl.platform.domain.query.CheckTemplateQuery; import com.ycl.platform.domain.vo.CheckUtil; import com.ycl.platform.service.ICheckTemplateService; import com.ycl.system.Result; import com.ycl.system.page.TableDataInfo; import com.ycl.utils.CheckPointUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 检测工具 * * @author:xp * @date:2024/9/30 13:55 */ @RestController @RequestMapping("/system/util") public class CheckUtilController { @Autowired private CheckPointUtil checkPointUtil; @GetMapping("/online") public Result online(CheckUtil query) { if ("1".equals(query.getType())) { return Result.ok().data(checkPointUtil.webCheck(query)); } else if ("2".equals(query.getType())) { return Result.ok().data(checkPointUtil.ping(query)); } return Result.ok(); } } ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -819,7 +819,7 @@ String imgUrl = null; if (wvpResult.getCode() == 0) { JSONObject data = (JSONObject) wvpResult.getData(); String rtspUrl = data.getString("fmp4"); // 取mp4地址 String rtspUrl = data.getString("rtsp"); // 取mp4地址 if (StringUtils.hasText(rtspUrl)) { System.out.println("目标地址:" + rtspUrl); FFmpegFrameGrabber grabber = null; 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; /** * 监测点位在线工具类 @@ -80,4 +90,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("国标码未查找到IP"); 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未ping通;"; } 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未ping通;"; } result.setStatus(status); return result; } } ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java
@@ -64,6 +64,7 @@ log.info("sendGet - {}", urlNameString); URL realUrl = new URL(urlNameString); URLConnection connection = realUrl.openConnection(); connection.setConnectTimeout(10000); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");