From ea7595c4c75926f85388574b261b8ba90cf60e0d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 20 五月 2025 16:06:12 +0800
Subject: [PATCH] 修改bug和新增加川标报警适配
---
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java | 149 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 129 insertions(+), 20 deletions(-)
diff --git a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java
index ae3245e..0b1be34 100644
--- a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java
+++ b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java
@@ -1,5 +1,6 @@
package com.ruoyi.dataInterchange.model;
+import cn.hutool.core.util.ArrayUtil;
import com.ruoyi.dataInterchange.pojo.BaseModel;
import com.ruoyi.dataInterchange.util.jtt809.common.ByteArrayUtil;
import com.ruoyi.dataInterchange.util.jtt809.common.Jtt809Util;
@@ -9,6 +10,9 @@
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
+
+import java.util.Arrays;
+import java.util.List;
/**
* 上报报警信息
@@ -70,8 +74,70 @@
/**
* 信息ID
*/
+ @Field(type = FieldType.Text)
+ private String infoId;
+ /**
+ * 驾驶员姓名长度
+ */
@Field(type = FieldType.Integer)
- private int infoId;
+ private int driverLength;
+ /**
+ * 驾驶员姓名
+ */
+ @Field(type = FieldType.Text)
+ private String driver;
+ /**
+ * 驾驶员驾照号码长度
+ */
+ @Field(type = FieldType.Integer)
+ private int driverNoLength;
+ /**
+ * 驾驶员驾照号码
+ */
+ @Field(type = FieldType.Text)
+ private String driverNo;
+ /**
+ * 报警级别
+ */
+ @Field(type = FieldType.Integer)
+ private int level;
+ /**
+ * 经度
+ */
+ @Field(type = FieldType.Integer)
+ private int longitude;
+ /**
+ * 纬度
+ */
+ @Field(type = FieldType.Integer)
+ private int latitude;
+ /**
+ * 海拔
+ */
+ @Field(type = FieldType.Integer)
+ private int altitude;
+ /**
+ * 行车速度
+ */
+ @Field(type = FieldType.Integer)
+ private int speed;
+ /**
+ * 行驶记录速度
+ */
+ @Field(type = FieldType.Integer)
+ private int vec2;
+ /**
+ * 报警状态
+ * 1:报警开始
+ * 2:报警结束
+ */
+ @Field(type = FieldType.Integer)
+ private int status;
+ /**
+ * 方向
+ */
+ @Field(type = FieldType.Integer)
+ private int direction;
/**
* 报警数据长度
*/
@@ -82,21 +148,6 @@
*/
@Field(type = FieldType.Text)
private String infoContent;
- /**
- * 速度
- */
- @Field(type = FieldType.Integer)
- private Integer speed;
- /**
- * 经度
- */
- @Field(type = FieldType.Integer)
- private Integer longitude;
- /**
- * 纬度
- */
- @Field(type = FieldType.Integer)
- private Integer latitude;
/**
* 报警处理结果
* 0x00:处理中
@@ -111,12 +162,12 @@
*/
@Field(type = FieldType.Long)
private long pushTime;
-
+
/**
* 解析报文
*/
- public UPWarnMsgAdptInfo decode(WarnMsg warnMsg) {
+ public UPWarnMsgAdptInfo decode1(WarnMsg warnMsg) {
try {
byte[] data = warnMsg.getData();
ByteBuf byteBuf = Unpooled.wrappedBuffer(data);
@@ -124,7 +175,7 @@
this.vehicleColor = warnMsg.getVehicleColor();
this.dataType = warnMsg.getDataType();
this.dataLength = warnMsg.getDataLength();
-
+
//报警信息来源
this.warnSrc = byteBuf.readByte();
//报警类型
@@ -135,7 +186,7 @@
//报警时间
this.warnTime = Long.parseLong(time, 16);
//信息ID
- this.infoId = byteBuf.readInt();
+ this.infoId = Integer.valueOf(byteBuf.readInt()).toString();
//报警数据长度
this.infoLength = byteBuf.readInt();
//上报报警信息内容
@@ -145,4 +196,62 @@
}
return this;
}
+
+ /**
+ * 解析报文(川标)
+ */
+ public UPWarnMsgAdptInfo decode2(WarnMsg warnMsg) {
+ try {
+ byte[] data = warnMsg.getData();
+ ByteBuf byteBuf = Unpooled.wrappedBuffer(data);
+ this.vehicleNo = warnMsg.getVehicleNo();
+ this.vehicleColor = warnMsg.getVehicleColor();
+ this.dataType = warnMsg.getDataType();
+ this.dataLength = warnMsg.getDataLength();
+
+ //报警信息来源
+ this.warnSrc = byteBuf.readByte();
+ //报警类型
+ this.warnType = byteBuf.readShort();
+ byte[] readableBytes = new byte[8];
+ byteBuf.readBytes(readableBytes);
+ String time = ByteArrayUtil.bytes2HexStr(readableBytes);
+ //报警时间
+ this.warnTime = Long.parseLong(time, 16);
+ //团标扩展
+ //信息ID
+ this.infoId = Jtt809Util.readGBKString(byteBuf,32);
+ //驾驶员姓名长度
+ this.driverLength = byteBuf.readByte();
+ //驾驶员姓名
+ this.driver = Jtt809Util.readGBKString(byteBuf,this.driverLength);
+ //驾驶员驾照号码长度
+ this.driverNoLength = byteBuf.readByte();
+ //驾驶员驾照号码
+ this.driverNo = Jtt809Util.readGBKString(byteBuf,this.driverNoLength);
+ //报警级别
+ this.level = byteBuf.readByte();
+ //经度
+ this.longitude = byteBuf.readInt();
+ //纬度
+ this.latitude = byteBuf.readInt();
+ //海拔高度
+ this.altitude = byteBuf.readUnsignedShort();
+ //行车速度
+ this.speed = byteBuf.readUnsignedShort();
+ //行驶记录速度
+ this.vec2 = byteBuf.readUnsignedShort();
+ //报警状态
+ this.status = byteBuf.readByte();
+ //方向
+ this.direction = byteBuf.readUnsignedShort();
+ //报警数据长度
+ this.infoLength = byteBuf.readUnsignedShort();
+ //报警信息内容
+ this.infoContent = Jtt809Util.readGBKString(byteBuf,this.infoLength);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return this;
+ }
}
--
Gitblit v1.7.1