fuliqi
2025-02-14 c6976365d5bfb39a32db8b541b1fe3ceb30c7826
ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
@@ -54,6 +54,7 @@
        String prefix = "http://";
        if ("127.0.0.1".equals(monitor.getIp())) {
            monitor.setPingOnline(Boolean.FALSE);
            log.error("ip有误"+monitor.getIp());
            return monitor;
        }
        try {
@@ -84,11 +85,7 @@
            map = new HashMap<>();
        }
        if (!monitor.getPingOnline()) {
            try {
                reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000);
            } catch (IOException e) {
                e.printStackTrace();
            }
            reachable = checkPing(monitor, reachable);
            monitor.setPingOnline(reachable);
        }
        if (!monitor.getPingOnline()) {
@@ -98,19 +95,17 @@
            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.setOffLineTimeStr(offTimeList);
                monitor.setCreateWorkOrder(Boolean.TRUE);
                //产生了一次工单则清除
                continueOffTimes = 0;
                offTimeList = new ArrayList<>();
            }
        }else {
            //如果在线了,清空连续离线次数,清空离线时间
            continueOffTimes = 0;
            offTimeList = new ArrayList<>();
        }
        map.put("checkTimes", checkTimes);
        map.put("offLineTimes", offLineTimes);
@@ -122,6 +117,22 @@
        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;
    }
    /**
     * 监测点位在线