From 4920f3a1290f2061f7b81db78ce0dab7b6ae8fc2 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Tue, 08 Aug 2023 09:02:32 +0800
Subject: [PATCH] 优化
---
src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java | 6
src/main/java/com/ard/utils/tcp/ClientHandler.java | 28 +--
src/main/java/com/ard/utils/other/LonlatConver.java | 2
src/main/java/com/ard/utils/other/DateUtils.java | 2
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 4
/dev/null | 363 ---------------------------------------------
src/main/java/com/ard/utils/udp/NettyUdpHandler.java | 2
src/main/java/com/ard/utils/other/GisUtils.java | 2
src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 6
src/main/java/com/ard/utils/other/SpringTool.java | 3
src/main/java/com/ard/utils/other/ByteUtils.java | 3
src/main/java/com/ard/utils/tcp/MessageParsing.java | 5
src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java | 5
src/main/java/com/ard/config/MinioClientSingleton.java | 10 -
14 files changed, 24 insertions(+), 417 deletions(-)
diff --git a/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java b/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
index a096f37..70dd870 100644
--- a/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
+++ b/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
@@ -4,14 +4,8 @@
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.mapper.ArdEquipRadarMapper;
import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.ard.utils.tcp.ClientInitialize;
-import com.ard.utils.tcp.NettyTcpClient;
-import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
/**
* radarService业务层处理
diff --git a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
index b645cb3..f524b99 100644
--- a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
+++ b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -1,14 +1,11 @@
package com.ard.alarm.tube.service;
import com.alibaba.fastjson2.JSON;
-import com.ard.utils.DateUtils;
+import com.ard.utils.other.DateUtils;
import com.ard.utils.mqtt.MqttConsumer;
-import com.ard.utils.tcp.NettyTcpClient;
import com.ard.utils.udp.NettyUdpServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/com/ard/config/MinioClientSingleton.java b/src/main/java/com/ard/config/MinioClientSingleton.java
index 713af81..a4bc199 100644
--- a/src/main/java/com/ard/config/MinioClientSingleton.java
+++ b/src/main/java/com/ard/config/MinioClientSingleton.java
@@ -1,20 +1,12 @@
package com.ard.config;
-import com.ard.utils.SpringTool;
+import com.ard.utils.other.SpringTool;
import io.minio.MinioClient;
-import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
import org.springframework.integration.channel.DefaultHeaderChannelRegistry;
import org.springframework.integration.channel.PublishSubscribeChannel;
import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-import java.util.Properties;
/**
* @Description:
diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
index 7fe8ac7..b7f1376 100644
--- a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
+++ b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
@@ -7,15 +7,15 @@
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.alarm.external.service.IArdEquipExternalService;
import com.ard.config.MinioClientSingleton;
-import com.ard.utils.ByteUtils;
+import com.ard.utils.other.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.AccessControlHostEventInfo;
import com.ard.utils.hiksdk.domain.CameraEventInfo;
import com.ard.utils.hiksdk.domain.ExternalAlarmEventInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.hiksdk.util.minio.MinioUtils;
-import com.ard.utils.DateUtils;
-import com.ard.utils.SpringTool;
+import com.ard.utils.other.DateUtils;
+import com.ard.utils.other.SpringTool;
import com.ard.utils.mqtt.MqttConsumer;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
index 594b3c1..2e6faf9 100644
--- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
+++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -4,7 +4,7 @@
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.config.MinioClientSingleton;
-import com.ard.utils.ByteUtils;
+import com.ard.utils.other.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
@@ -14,8 +14,6 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
import java.io.*;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/ard/utils/ByteUtils.java b/src/main/java/com/ard/utils/other/ByteUtils.java
similarity index 98%
rename from src/main/java/com/ard/utils/ByteUtils.java
rename to src/main/java/com/ard/utils/other/ByteUtils.java
index c121eaf..752b333 100644
--- a/src/main/java/com/ard/utils/ByteUtils.java
+++ b/src/main/java/com/ard/utils/other/ByteUtils.java
@@ -1,6 +1,5 @@
-package com.ard.utils;
+package com.ard.utils.other;
-import javax.xml.bind.DatatypeConverter;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/ard/utils/DateUtils.java b/src/main/java/com/ard/utils/other/DateUtils.java
similarity index 99%
rename from src/main/java/com/ard/utils/DateUtils.java
rename to src/main/java/com/ard/utils/other/DateUtils.java
index c735626..3b3d209 100644
--- a/src/main/java/com/ard/utils/DateUtils.java
+++ b/src/main/java/com/ard/utils/other/DateUtils.java
@@ -1,4 +1,4 @@
-package com.ard.utils;
+package com.ard.utils.other;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.lang.management.ManagementFactory;
diff --git a/src/main/java/com/ard/utils/GisUtils.java b/src/main/java/com/ard/utils/other/GisUtils.java
similarity index 97%
rename from src/main/java/com/ard/utils/GisUtils.java
rename to src/main/java/com/ard/utils/other/GisUtils.java
index df21a12..17bcc3c 100644
--- a/src/main/java/com/ard/utils/GisUtils.java
+++ b/src/main/java/com/ard/utils/other/GisUtils.java
@@ -1,4 +1,4 @@
-package com.ard.utils;
+package com.ard.utils.other;
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
diff --git a/src/main/java/com/ard/utils/LonlatConver.java b/src/main/java/com/ard/utils/other/LonlatConver.java
similarity index 99%
rename from src/main/java/com/ard/utils/LonlatConver.java
rename to src/main/java/com/ard/utils/other/LonlatConver.java
index cd8c092..a47e40d 100644
--- a/src/main/java/com/ard/utils/LonlatConver.java
+++ b/src/main/java/com/ard/utils/other/LonlatConver.java
@@ -1,4 +1,4 @@
-package com.ard.utils;
+package com.ard.utils.other;
/**
* 经纬度转换工具
* 刘苏义
diff --git a/src/main/java/com/ard/utils/SpringTool.java b/src/main/java/com/ard/utils/other/SpringTool.java
similarity index 96%
rename from src/main/java/com/ard/utils/SpringTool.java
rename to src/main/java/com/ard/utils/other/SpringTool.java
index 123317b..1c0844d 100644
--- a/src/main/java/com/ard/utils/SpringTool.java
+++ b/src/main/java/com/ard/utils/other/SpringTool.java
@@ -1,4 +1,4 @@
-package com.ard.utils;
+package com.ard.utils.other;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
@@ -8,7 +8,6 @@
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
-import java.nio.ByteBuffer;
import java.util.Properties;
/**
diff --git a/src/main/java/com/ard/utils/tcp/ClientHandler.java b/src/main/java/com/ard/utils/tcp/ClientHandler.java
index 5a7e3ac..dc27a7c 100644
--- a/src/main/java/com/ard/utils/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/tcp/ClientHandler.java
@@ -1,24 +1,14 @@
package com.ard.utils.tcp;
-
-/**
- * @Description:
- * @ClassName: ClientHandler
- * @Author: 刘苏义
- * @Date: 2023年07月05日13:13
- * @Version: 1.0
- **/
-
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.radar.domain.ArdAlarmRadar;
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.domain.RadarAlarmData;
-import com.ard.utils.ByteUtils;
-import com.ard.utils.GisUtils;
+import com.ard.utils.other.ByteUtils;
+import com.ard.utils.other.GisUtils;
import com.ard.utils.mqtt.MqttConsumer;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelId;
-import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.SimpleChannelInboundHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -31,12 +21,14 @@
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-
/**
- * 客户端处理器
- *
- * @author lijiamin
- */
+ * @Description: 客户端处理器
+ * @ClassName: ClientHandler
+ * @Author: 刘苏义
+ * @Date: 2023年07月05日13:13
+ * @Version: 1.0
+ **/
+
@Slf4j(topic = "netty")
public class ClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
private ChannelHandlerContext context;
@@ -307,7 +299,7 @@
afTy = ByteUtils.toLittleEndian(afTy);
float fTy = ByteUtils.bytesToFloat(afTy);
// log.info("垂直角度:" + fTy);
- Double[] radarXY = {radarLagitude, radarLagitude};
+ Double[] radarXY = {radarLongitude, radarLagitude};
Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
// log.info("报警信息:" + "【id】" + id + "【name】" + alarmPointName + "【alarmType】" + alarmType + "【alarmTime】" + alarmTime + "【distance】" + Distance + "【P】" + fTx + "【T】" + fTy + "【X】" + alarmXY[0] + "【Y】" + alarmXY[1]);
ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
diff --git a/src/main/java/com/ard/utils/tcp/MessageParsing.java b/src/main/java/com/ard/utils/tcp/MessageParsing.java
index e468e9d..92c9ef8 100644
--- a/src/main/java/com/ard/utils/tcp/MessageParsing.java
+++ b/src/main/java/com/ard/utils/tcp/MessageParsing.java
@@ -1,6 +1,6 @@
package com.ard.utils.tcp;
-import com.ard.utils.ByteUtils;
+import com.ard.utils.other.ByteUtils;
import javax.xml.bind.DatatypeConverter;
import java.util.ArrayList;
@@ -65,8 +65,7 @@
// System.out.println(DatatypeConverter.printHexBinary(payload));
//计算负载的crc32值
byte[] NewCrc32 = ByteUtils.parseCrc32(payload);
- System.out.println("old:"+DatatypeConverter.printHexBinary(oldCrc32));
- System.out.println("new:"+DatatypeConverter.printHexBinary(NewCrc32));
+
//判断数据的crc32校验值和计算值是否相同
if (Arrays.equals(oldCrc32, NewCrc32)) {
return true;
diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClient.java b/src/main/java/com/ard/utils/tcp/NettyTcpClient.java
deleted file mode 100644
index 464bba5..0000000
--- a/src/main/java/com/ard/utils/tcp/NettyTcpClient.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.ard.utils.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @Description: 另一种tcp客户端 目前弃用
- * @ClassName: NettyTcpClient
- * @Author: 刘苏义
- * @Date: 2023年06月25日17:00
- * @Version: 1.0
- **/
-@EnableAsync
-@Component
-@Slf4j(topic = "netty")
-public class NettyTcpClient {
- @Async("alarm")
- public void init(ArdEquipRadar ardEquipRadar) {
- while (true) {
- NioEventLoopGroup group = new NioEventLoopGroup();
- try {
- Bootstrap bootstrap = new Bootstrap();
- bootstrap.group(group)
- .channel(NioSocketChannel.class)
- .handler(new ChannelInitializer<SocketChannel>() {
- @Override
- protected void initChannel(SocketChannel ch) throws Exception {
- ch.pipeline().addLast(new NettyTcpClientHandler(ardEquipRadar));
- }
- });
- String host = ardEquipRadar.getIp();
- Integer port = ardEquipRadar.getPort();
- ChannelFuture future = bootstrap.connect(host, port).sync();
- // 添加连接成功的监听器
- future.addListener((ChannelFutureListener) future1 -> {
- if (future1.isSuccess()) {
- log.info("tcp连接成功" + host + ":" + port);
- } else {
- log.info("tcp连接失败" + host + ":" + port);
- }
- });
- future.channel().closeFuture().sync();
-
- } catch (Exception e) {
- log.error("nettyTcp客户端初始化异常:" + e.getMessage());
- try {
- TimeUnit.SECONDS.sleep(5); // 等待5秒后重新连接
- } catch (InterruptedException ex) {
- Thread.currentThread().interrupt();
- }
- } finally {
- group.shutdownGracefully();
- }
- }
- }
-}
diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
deleted file mode 100644
index 82d9685..0000000
--- a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
+++ /dev/null
@@ -1,363 +0,0 @@
-package com.ard.utils.tcp;
-
-import com.alibaba.fastjson2.JSON;
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.domain.RadarAlarmData;
-import com.ard.alarm.radar.domain.ArdAlarmRadar;
-import com.ard.utils.ByteUtils;
-import com.ard.utils.GisUtils;
-import com.ard.utils.mqtt.MqttConsumer;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import javax.xml.bind.DatatypeConverter;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * @Description: tcp客户端处理-弃用
- * @ClassName: NettyTcpClientHandler
- * @Author: 刘苏义
- * @Date: 2023年06月25日17:02
- * @Version: 1.0
- **/
-@Slf4j(topic = "netty")
-public class NettyTcpClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
-
- private String host;
- private Integer port;
- private Double longitude;
- private Double lagitude;
- private Double altitude;
- private String name;
- private String id;
-
- public NettyTcpClientHandler(ArdEquipRadar ardEquipRadar) {
- this.host = ardEquipRadar.getIp();
- this.port = ardEquipRadar.getPort();
- this.longitude = ardEquipRadar.getLongitude();
- this.lagitude = ardEquipRadar.getLatitude();
- this.name = ardEquipRadar.getName();
- this.id = ardEquipRadar.getId();
- this.altitude = ardEquipRadar.getAltitude();
- }
-
- private ChannelHandlerContext context;
- private ScheduledFuture<?> heartbeatTask;
-
- @Override
- protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
- // 处理接收到的消息
- byte[] byteArray = new byte[msg.readableBytes()];
- msg.getBytes(msg.readerIndex(), byteArray);
- byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
- if (bytes != null) {
- processData(bytes);
- }
- }
-
- @Override
- public void channelActive(ChannelHandlerContext ctx) {
- context = ctx;
- startHeartbeatTask();//开始发送心跳
- }
-
- /**
- * 开始心跳任务
- */
- private void startHeartbeatTask() {
- heartbeatTask = context.executor().scheduleAtFixedRate(() -> {
- // 发送心跳消息
- ByteBuf message = context.alloc().buffer();
- byte[] header = {0x01, 0x02, 0x01};
- byte[] payload = {0x10, 0x00, 0x00, 0x00};
- byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);
- byte[] footer = {0x01, 0x02, 0x00};
- byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
-// byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
- String hexString = DatatypeConverter.printHexBinary(heart);
- log.info("发送心跳:" + hexString);
- message.writeBytes(heart);
- context.writeAndFlush(message);
-
- }, 0, 5, TimeUnit.SECONDS);
- }
-
- /**
- * 停止心跳任务
- */
- private void stopHeartbeatTask() {
- if (heartbeatTask != null) {
- heartbeatTask.cancel(false);
- heartbeatTask = null;
- }
- }
-
- @Override
- public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
- log.info("tcp客户端连接异常");
- // 发生异常时的处理
- cause.printStackTrace();
- ctx.close();
- stopHeartbeatTask();//停止心跳发送
- }
-
- /**
- * 解析报警数据
- */
- public void processData(byte[] data) {
- try {
- //region crc校验-目前仅用于显示校验结果
- Boolean crc32Check = MessageParsing.CRC32Check(data);
- if (!crc32Check) {
- log.info("CRC32校验不通过");
- } else {
- log.info("CRC32校验通过");
- }
- //endregion
- //log.info("原始数据:" + DatatypeConverter.printHexBinary(data));
- //log.info("雷达信息:" + host + "【port】" + port + "【X】" + longitude + "【Y】" + lagitude + "【Z】" + altitude);
- data = MessageParsing.transferData(data);//去掉包头和包尾、校验及转义
- //region 负载头解析
- byte[] type = Arrays.copyOfRange(data, 0, 1);//命令类型
- // log.info("命令类型:" + DatatypeConverter.printHexBinary(type));
- byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//命令ID
- // log.info("命令ID:" + DatatypeConverter.printHexBinary(cmdId));
- byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//有效负载大小
- payloadSize = ByteUtils.toLittleEndian(payloadSize);
- int payloadSizeToDecimal = ByteUtils.bytesToDecimal(payloadSize);
- // log.info("有效负载大小(转整型):" + payloadSizeToDecimal);
- //endregion
- List<ArdAlarmRadar> radarAlarmInfos = new ArrayList<>();
- String alarmTime = "";
- Integer targetNum = 0;
- if (Arrays.equals(cmdId, new byte[]{0x01})) {
- //region 告警信息反馈
- byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
- dwTim = ByteUtils.toLittleEndian(dwTim);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- long l = ByteUtils.bytesToDecimal(dwTim);
- alarmTime = sdf.format(l * 1000);
- // log.info("周视图像的出现时间(转date):" + alarmTime);
-
- byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
- wTargetNum = ByteUtils.toLittleEndian(wTargetNum);
- targetNum = ByteUtils.bytesToDecimal(wTargetNum);
- if (targetNum == 0) {
- return;
- }
- log.info("目标总点数(转整型):" + targetNum);
-
- //解析NET_TARGET_UNIT(64是NET_TARGET_HEAD的字节数)
- int uintSize = (payloadSizeToDecimal - 64) / targetNum;
- // log.info("单条报警大小:" + uintSize);
-
- for (int i = 0; i < targetNum; i++) {
-
- Integer index = 68 + uintSize * i;
- byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
- // log.info("目标ID:" + DatatypeConverter.printHexBinary(cmdId));
- dwID = ByteUtils.toLittleEndian(dwID);
- int id = ByteUtils.bytesToDecimal(dwID);
-
- // log.info("目标ID号:" + id);
-
- byte[] iDistance = Arrays.copyOfRange(data, index + 8, index + 12);
- iDistance = ByteUtils.toLittleEndian(iDistance);
- Double Distance = ByteUtils.bytesToDouble(iDistance);
- // log.info("目标当前距离(m):" + Distance);
- //region 不需要的字段
-// byte[] dwGSum = Arrays.copyOfRange(data, index + 4, index + 8);
-// dwGSum = toLittleEndian(dwGSum);
-// int GSum = byteArrayToDecimal(dwGSum);
-// log.info("目标当前像素灰度和:" + GSum);
-// byte[] iTw = Arrays.copyOfRange(data, index + 12, index + 16);
-// iTw = toLittleEndian(iTw);
-// int Tw = byteArrayToDecimal(iTw);
-// log.info("目标当前的像素宽度:" + Tw);
-//
-// byte[] iTh = Arrays.copyOfRange(data, index + 16, index + 20);
-// iTh = toLittleEndian(iTh);
-// int Th = byteArrayToDecimal(iTh);
-// log.info("目标当前的像素高度:" + Th);
-//
-// byte[] wPxlArea = Arrays.copyOfRange(data, index + 20, index + 22);
-// wPxlArea = toLittleEndian(wPxlArea);
-// int PxlArea = byteArrayToDecimal(wPxlArea);
-// log.info("目标当前像素面积:" + PxlArea);
-//
-// byte[] cTrkNum = Arrays.copyOfRange(data, index + 22, index + 23);
-// cTrkNum = toLittleEndian(cTrkNum);
-// int TrkNum = byteArrayToDecimal(cTrkNum);
-// log.info("轨迹点数:" + TrkNum);
-
-// byte[] sVx = Arrays.copyOfRange(data, index + 24, index + 26);
-// sVx = toLittleEndian(sVx);
-// int Vx = byteArrayToDecimal(sVx);
-// log.info("目标当前速度矢量(像素距离)X:" + Vx);
-//
-// byte[] sVy = Arrays.copyOfRange(data, index + 26, index + 28);
-// sVy = toLittleEndian(sVy);
-// int Vy = byteArrayToDecimal(sVy);
-// log.info("目标当前速度矢量(像素距离)Y:" + Vy);
-//
-// byte[] sAreaNo = Arrays.copyOfRange(data, index + 28, index + 30);
-// sAreaNo = toLittleEndian(sAreaNo);
-// int AreaNo = byteArrayToDecimal(sAreaNo);
-// log.info("目标归属的告警区域号:" + AreaNo);
-//
-// byte[] cGrp = Arrays.copyOfRange(data, index + 30, index + 31);
-// cGrp = toLittleEndian(cGrp);
-// int Grp = byteArrayToDecimal(cGrp);
-// log.info("所属组:" + Grp);
- //endregion
- String alarmType = "";
- byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
- cStat = ByteUtils.toLittleEndian(cStat);
- String binaryString = String.format("%8s", Integer.toBinaryString(cStat[0] & 0xFF)).replace(' ', '0');
- // log.info("目标当前状态:" + binaryString);
- // 提取第4位至第6位的值
- int extractedValue = (cStat[0] >> 4) & 0b00001111;
- // 判断提取的值
- if (extractedValue == 0b0000) {
- alarmType = "运动目标检测";
- } else if (extractedValue == 0b0001) {
- alarmType = "热源检测";
- }
- // log.info("报警类型:" + alarmType);
-
- byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96);
- String alarmPointName = ByteUtils.bytesToStringZh(szName);
- // log.info("所属告警区域名称:" + alarmPointName);
- byte[] afTx = Arrays.copyOfRange(data, index + 96, index + 100);
- afTx = ByteUtils.toLittleEndian(afTx);
- float fTx = ByteUtils.bytesToFloat(afTx);
- // log.info("水平角度:" + fTx);
- byte[] afTy = Arrays.copyOfRange(data, index + 112, index + 116);
- afTy = ByteUtils.toLittleEndian(afTy);
- float fTy = ByteUtils.bytesToFloat(afTy);
- // log.info("垂直角度:" + fTy);
- Double[] radarXY = {longitude, lagitude};
- Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
- // log.info("报警信息:" + "【id】" + id + "【name】" + alarmPointName + "【alarmType】" + alarmType + "【alarmTime】" + alarmTime + "【distance】" + Distance + "【P】" + fTx + "【T】" + fTy + "【X】" + alarmXY[0] + "【Y】" + alarmXY[1]);
- ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
- ardAlarmRadar.setTargetId(id);
- ardAlarmRadar.setName(alarmPointName);
- ardAlarmRadar.setLongitude(alarmXY[0]);
- ardAlarmRadar.setLatitude(alarmXY[1]);
- ardAlarmRadar.setAlarmType(alarmType);
- radarAlarmInfos.add(ardAlarmRadar);
- }
- //endregion
- }
- if (Arrays.equals(cmdId, new byte[]{0x04})) {
- //region抽油机AI状态反馈
- String hexString = DatatypeConverter.printHexBinary(data);
- //log.info(hexString);
-
- byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
- dwTim = ByteUtils.toLittleEndian(dwTim);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- long l = ByteUtils.bytesToDecimal(dwTim);
- alarmTime = sdf.format(l * 1000);
- //log.info("周视图像的出现时间(转date):" + alarmTime);
-
- byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
- wTargetNum = ByteUtils.toLittleEndian(wTargetNum);
- targetNum = ByteUtils.bytesToDecimal(wTargetNum);
- log.info("目标总点数(转整型):" + targetNum);
- if (targetNum == 0) {
- return;
- }
- //解析NET_TARGET_UNIT(64是NET_TARGET_HEAD的字节数)
- int uintSize = (payloadSizeToDecimal - 64) / targetNum;
- //log.info("单条报警大小:" + uintSize);
- for (int i = 0; i < targetNum; i++) {
- Integer index = 68 + uintSize * i;
- byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
- //log.info("目标ID:" + DatatypeConverter.printHexBinary(dwID));
- dwID = ByteUtils.toLittleEndian(dwID);
- int id = ByteUtils.bytesToDecimal(dwID);
- //log.info("目标ID号:" + id);
- //region 不需要的字段
- byte[] iTw = Arrays.copyOfRange(data, index + 4, index + 8);
- iTw = ByteUtils.toLittleEndian(iTw);
- int Tw = ByteUtils.bytesToDecimal(iTw);
- // log.info("目标当前的像素宽度:" + Tw);
-
- byte[] iTh = Arrays.copyOfRange(data, index + 8, index + 12);
- iTh = ByteUtils.toLittleEndian(iTh);
- int Th = ByteUtils.bytesToDecimal(iTh);
- //log.info("目标当前的像素高度:" + Th);
-
- byte[] fTx = Arrays.copyOfRange(data, index + 12, index + 16);
- fTx = ByteUtils.toLittleEndian(fTx);
- float fTxAngle = ByteUtils.bytesToFloat(fTx);
- //log.info("p角度:" + fTxAngle);
- byte[] fTy = Arrays.copyOfRange(data, index + 16, index + 20);
- fTy = ByteUtils.toLittleEndian(fTy);
- float fTyAngle = ByteUtils.bytesToFloat(fTy);
- //log.info("t角度:" + fTyAngle);
-
- byte[] sAreaNo = Arrays.copyOfRange(data, index + 20, index + 22);
- sAreaNo = ByteUtils.toLittleEndian(sAreaNo);
- int AreaNo = ByteUtils.bytesToDecimal(sAreaNo);
- //log.info("目标归属的告警区域号:" + AreaNo);
-
- byte[] cGrp = Arrays.copyOfRange(data, index + 22, index + 23);
- cGrp = ByteUtils.toLittleEndian(cGrp);
- int Grp = ByteUtils.bytesToDecimal(cGrp);
- //log.info("所属组:" + Grp);
- //endregion
- String alarmType;
- byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
- cStat = ByteUtils.toLittleEndian(cStat);
- //String binaryString = String.format("%8s", Integer.toBinaryString(cStat[0] & 0xFF)).replace(' ', '0');
- //log.info("目标当前状态:" + binaryString);
- // 提取第0位值
- // 使用位运算操作判断第0位是否为1
- boolean isB0 = (cStat[0] & 0x01) == 0x00;
- // 判断提取的值
- if (isB0) {
- alarmType = "雷达抽油机停机";
- } else {
- continue;
- }
- //log.info("报警类型:" + alarmType);
-
- byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64);
- //log.info("所属告警区域名称:" + DatatypeConverter.printHexBinary(szName));
- String alarmPointName = ByteUtils.bytesToStringZh(szName);
- // log.info("所属告警区域名称:" + alarmPointName);
- //log.info("报警信息:" + "【id】" + id + "【name】" + alarmPointName + "【alarmType】" + alarmType + "【alarmTime】" + alarmTime);
- ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
- ardAlarmRadar.setTargetId(id);
- ardAlarmRadar.setName(alarmPointName);
- ardAlarmRadar.setAlarmType(alarmType);
- radarAlarmInfos.add(ardAlarmRadar);
- }
- //endregion
- }
- if (StringUtils.isEmpty(alarmTime)) {
- return;
- }
- if (targetNum == 0) {
- return;
- }
- RadarAlarmData radarAlarmData = new RadarAlarmData();
- radarAlarmData.setRadarId(id);
- radarAlarmData.setRadarName(name);
- radarAlarmData.setAlarmTime(alarmTime);
- radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
- MqttConsumer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
- } catch (Exception ex) {
- log.error("雷达报文解析异常:" + ex.getMessage());
- }
- }
-
-}
diff --git a/src/main/java/com/ard/utils/udp/NettyUdpHandler.java b/src/main/java/com/ard/utils/udp/NettyUdpHandler.java
index 8239558..c3bb951 100644
--- a/src/main/java/com/ard/utils/udp/NettyUdpHandler.java
+++ b/src/main/java/com/ard/utils/udp/NettyUdpHandler.java
@@ -1,7 +1,7 @@
package com.ard.utils.udp;
import com.ard.alarm.tube.service.TubeAlarmService;
-import com.ard.utils.SpringTool;
+import com.ard.utils.other.SpringTool;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
--
Gitblit v1.9.3