From 57ff679fd4d8117c1be87c06059dc1f9ddf914d3 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Fri, 09 Aug 2024 17:06:11 +0800
Subject: [PATCH] 优化
---
src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java | 68 ++++++++++++++++++++++++++++++++-
src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java | 3 -
2 files changed, 66 insertions(+), 5 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);
+ }
}
diff --git a/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
index e62372a..dd76e15 100644
--- a/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
@@ -18,8 +18,7 @@
import java.net.InetSocketAddress;
import java.text.SimpleDateFormat;
import java.util.*;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
import static com.ard.utils.netty.tcp.RadarNettyTcpClient.aroundScanfMap;
import static com.ard.utils.util.ByteUtils.toLittleEndian;
--
Gitblit v1.9.3