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