| | |
| | | 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.*; |
| | |
| | | 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; |
| | |
| | | /** |
| | | * 监测雷达连接状态 |
| | | */ |
| | | @Scheduled(cron = "0/3 * * * * ?") |
| | | public void monitorConnectStatus() { |
| | | // @Scheduled(cron = "0/5 * * * * ?") |
| | | public void monitorConnectStatus1() { |
| | | try { |
| | | log.debug("实时监测雷达连接状态..."); |
| | | List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar()); |
| | |
| | | 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); |
| | | } |
| | | } |