‘liusuyi’
2024-03-15 f485e99f717c8f4388dfb51010e41c0be62b62d8
雷达连接状态:改为0-客户端不通 1-在线 2-周扫未开
已修改2个文件
55 ■■■■■ 文件已修改
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -21,6 +21,7 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import static com.ard.utils.netty.tcp.ClientInitialize.aroundScanfMap;
import static com.ard.utils.util.ByteUtils.toLittleEndian;
/**
@@ -211,6 +212,36 @@
            String alarmTime = "";
            Integer targetNum = 0;
            log.debug("处理雷达" + radarName + "数据-->命令ID:" + cmdIdStr);
            //前端工作状态反馈
            if (Arrays.equals(cmdId, new byte[]{0x00})) {
                //region 告警信息反馈
                byte[] dfScanAngV = Arrays.copyOfRange(data, 4, 12);
                dfScanAngV = toLittleEndian(dfScanAngV);
                double ScanAngV = ByteUtils.bytesToDouble(dfScanAngV);
                log.info("设备扫描的俯仰角度:" + ScanAngV);
                byte[] dfAngDy = Arrays.copyOfRange(data, 12, 20);
                dfAngDy = toLittleEndian(dfAngDy);
                double AngDy = ByteUtils.bytesToDouble(dfAngDy);
                log.info("周视图像的垂直视场角度:" + AngDy);
                byte[] iImgW = Arrays.copyOfRange(data, 20, 24);
                iImgW = toLittleEndian(iImgW);
                int ImgW = ByteUtils.bytesToDecimal(iImgW);
                log.info("周视图像的宽:" + ImgW);
                byte[] iImgH = Arrays.copyOfRange(data, 24, 28);
                iImgH = toLittleEndian(iImgH);
                int ImgH = ByteUtils.bytesToDecimal(iImgH);
                log.info("周视图像的高:" + ImgH);
                byte[] cStat = Arrays.copyOfRange(data, 28, 29);
                // 提取第4位至第6位的值
                cStat = toLittleEndian(cStat);
                int Stat = cStat[0] & 0b00000001;
                log.info("设备当前工作状态:" + Stat);
                aroundScanfMap.put(radar.getIp()+":"+radar.getPort(),Stat);
            }
            //雷达移动防火报警
            if (Arrays.equals(cmdId, new byte[]{0x01})) {
                //region 告警信息反馈
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初始化配置
@@ -140,15 +141,36 @@
        log.debug("定时监测雷达连接状态");
        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
        ardEquipRadars.stream().forEach(ardEquipRadar -> {
            //判断与雷达客户端连接状态
            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);
                }