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