From 57ff679fd4d8117c1be87c06059dc1f9ddf914d3 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期五, 09 八月 2024 17:06:11 +0800
Subject: [PATCH] 优化

---
 src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java |   68 ++++++++++++++++++++++++++++++++-
 1 files changed, 65 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java b/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
index 29e9230..3093c1e 100644
--- a/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
+++ b/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
@@ -1,5 +1,8 @@
 package com.ard.utils.netty.tcp;
-
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import com.ard.alarm.radar.domain.ArdEquipRadar;
 import com.ard.alarm.radar.service.IArdEquipRadarService;
 import com.ard.utils.netty.tcp.handler.*;
@@ -15,6 +18,7 @@
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -141,8 +145,8 @@
     /**
      * 鐩戞祴闆疯揪杩炴帴鐘舵��
      */
-    @Scheduled(cron = "0/3 * * * * ?")
-    public void monitorConnectStatus() {
+//    @Scheduled(cron = "0/5 * * * * ?")
+    public void monitorConnectStatus1() {
         try {
             log.debug("瀹炴椂鐩戞祴闆疯揪杩炴帴鐘舵��...");
             List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
@@ -186,4 +190,62 @@
             log.error("瀹氭椂鐩戞祴闆疯揪杩炴帴鐘舵�佸紓甯�:" + e.getMessage());
         }
     }
+
+
+    @PostConstruct
+    public void monitorConnectStatus() {
+        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+        Runnable task = () -> {
+            try {
+                // 瀹氭椂浠诲姟鐨勯�昏緫
+                log.debug("瀹炴椂鐩戞祴闆疯揪杩炴帴鐘舵��...");
+                List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
+                ardEquipRadars.stream().forEach(ardEquipRadar -> {
+                    // 鍒ゆ柇涓庨浄杈惧鎴风杩炴帴鐘舵��
+                    boolean online = SERVER_MAP.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+                    if (online) {
+                        log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戠姸鎬侊細鍦ㄧ嚎");
+                        // 杩炴帴闆疯揪瀹㈡埛绔垚鍔� 鍒ゆ柇鍛ㄦ壂鐘舵��
+                        if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
+                            Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+                            log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戣幏鍙栧埌鍛ㄦ壂鐘舵�侊細" + state);
+                            if (state == 1) { // 1-鍛ㄦ壂鎵撳紑-杩炴帴鎴愬姛
+                                log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戝懆鎵姸鎬佸紑");
+                                if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
+                                    ardEquipRadar.setState("1");
+                                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                                }
+                            } else {
+                                log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戝懆鎵姸鎬佸叧");
+                                if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+                                    // 2-鍛ㄦ壂鏈紑
+                                    ardEquipRadar.setState("2");
+                                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                                }
+                            }
+                        } else {
+                            log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戞湭鑾峰彇鍒板懆鎵姸鎬�");
+                            if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+                                // 2-鍛ㄦ壂鏈紑
+                                ardEquipRadar.setState("2");
+                                ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                            }
+                        }
+                    } else {
+                        log.debug("闆疯揪銆�" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "銆戠姸鎬侊細绂荤嚎");
+                        // 杩炴帴闆疯揪瀹㈡埛绔け璐�
+                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) {
+                            // 0-瀹㈡埛绔笉閫�
+                            ardEquipRadar.setState("0");
+                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                        }
+                    }
+                });
+            } catch (Exception e) {
+                log.error("瀹氭椂鐩戞祴闆疯揪杩炴帴鐘舵�佸紓甯�:" + e.getMessage());
+            }
+        };
+
+        scheduler.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
+    }
 }

--
Gitblit v1.9.3