From 628b80d0452602c5c02cec9ddbbee266f89d60c8 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 30 九月 2024 18:12:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java | 26 ++++++ ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java | 22 +++++ ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 2 ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java | 119 ++++++++++++++++++++++++++++- ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java | 1 ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java | 41 ++++++++++ 6 files changed, 206 insertions(+), 5 deletions(-) diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java new file mode 100644 index 0000000..e6e7c17 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResult.java @@ -0,0 +1,26 @@ +package com.ycl.platform.domain.vo; + +import lombok.Data; + +/** + * 鐩戞祴宸ュ叿鍝嶅簲缁撴灉 + * + * @author锛歺p + * @date锛�2024/9/30 14:09 + */ +@Data +public class CheckResult { + + /** + * 鍦ㄧ嚎鐘舵�� + * + */ + private String status; + + /** + * 鎷夋祦鍙栧浘鐗� + * + */ + private String img; + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java new file mode 100644 index 0000000..aca46a9 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckUtil.java @@ -0,0 +1,22 @@ +package com.ycl.platform.domain.vo; + +import lombok.Data; + +/** + * @author锛歺p + * @date锛�2024/9/30 14:03 + */ +@Data +public class CheckUtil { + + private String ip; + + private String serialNumber; + + /** + * 1: 鍦ㄧ嚎鐩戞祴 2锛� ping + * + */ + private String type; + +} diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java new file mode 100644 index 0000000..f06de4b --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/controller/CheckUtilController.java @@ -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锛歺p + * @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(); + } + +} diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index 0d7e5db..27f6298 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/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"); // 鍙杕p4鍦板潃 + String rtspUrl = data.getString("rtsp"); // 鍙杕p4鍦板潃 if (StringUtils.hasText(rtspUrl)) { System.out.println("鐩爣鍦板潃锛�" + rtspUrl); FFmpegFrameGrabber grabber = null; 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 d86e37c..fc06f30 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; /** * 鐩戞祴鐐逛綅鍦ㄧ嚎宸ュ叿绫� @@ -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("鍥芥爣鐮佹湭鏌ユ壘鍒癐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; + } } diff --git a/ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java b/ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java index e446221..092f2ef 100644 --- a/ycl-server/src/main/java/com/ycl/utils/http/HttpUtils.java +++ b/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)"); -- Gitblit v1.8.0