liusuyi
2024-08-09 57ff679fd4d8117c1be87c06059dc1f9ddf914d3
优化
已修改2个文件
71 ■■■■■ 文件已修改
src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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;