‘liusuyi’
2024-03-15 f485e99f717c8f4388dfb51010e41c0be62b62d8
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -41,6 +41,7 @@
    public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//成功连接的ip端口对应的雷达
    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//成功连接的ip端口对应的报文解析器
    public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//成功连接的ip端口对应的netty通道
    public static ConcurrentHashMap<String, Integer> aroundScanfMap = new ConcurrentHashMap();//是否启动周视
    /**
     * Netty初始化配置
@@ -74,7 +75,7 @@
                                }
                            });
                        }
                        Thread.sleep(10000);
                        Thread.sleep(nettyTcpConfig.getReConnectInterval());
                    } catch (Exception e) {
                        log.error("Netty初始化配置监听地址出现异常");
                        e.printStackTrace();
@@ -135,23 +136,44 @@
    /**
     * 监测雷达连接状态
     */
    @Scheduled(cron = "0/5 * * * * ?")
    @Scheduled(cron = "0/3 * * * * ?")
    public void monitorConnectStatus() {
        log.debug("定时监测雷达连接状态");
        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
        ardEquipRadars.stream().forEach(ardEquipRadar -> {
            if (ardEquipRadar.getState() == null || (ardEquipRadar.getState() != null && !ardEquipRadar.getState().equals("0"))) {
                ardEquipRadar.setState("0");
                ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
            }
            else
            {
                if (trueConnectMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
                    if (!ardEquipRadar.getState().equals("1")) {
                        ardEquipRadar.setState("1");
            //判断与雷达客户端连接状态
            boolean online = trueConnectMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
            if (online) {
                //连接雷达客户端成功 判断周扫状态
                if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
                    Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
                    if (state == 1) {//1-周扫打开-连接成功
                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
                            ardEquipRadar.setState("1");
                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
                        }
                    } else {
                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
                            //2-周扫未开
                            ardEquipRadar.setState("2");
                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
                        }
                    }
                } else {
                    if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
                        //2-周扫未开
                        ardEquipRadar.setState("2");
                        ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
                    }
                }
            } else {
                //连接雷达客户端失败
                if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) {
                    //0-客户端不通
                    ardEquipRadar.setState("0");
                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
                }
            }
        });
    }