| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 上报报警信息 |
| | |
| | | /** |
| | | * 信息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; |
| | | /** |
| | | * 报警数据长度 |
| | | */ |
| | |
| | | */ |
| | | @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:处理中 |
| | |
| | | /** |
| | | * 解析报文 |
| | | */ |
| | | public UPWarnMsgAdptInfo decode(WarnMsg warnMsg) { |
| | | public UPWarnMsgAdptInfo decode1(WarnMsg warnMsg) { |
| | | try { |
| | | byte[] data = warnMsg.getData(); |
| | | ByteBuf byteBuf = Unpooled.wrappedBuffer(data); |
| | |
| | | //报警时间 |
| | | this.warnTime = Long.parseLong(time, 16); |
| | | //信息ID |
| | | this.infoId = byteBuf.readInt(); |
| | | this.infoId = Integer.valueOf(byteBuf.readInt()).toString(); |
| | | //报警数据长度 |
| | | this.infoLength = byteBuf.readInt(); |
| | | //上报报警信息内容 |
| | |
| | | } |
| | | 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; |
| | | } |
| | | } |