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