| | |
| | | package com.ruoyi.dataInterchange.model; |
| | | |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.dataInterchange.pojo.BaseModel; |
| | | import com.ruoyi.dataInterchange.util.jtt809.common.ByteArrayUtil; |
| | | import com.ruoyi.dataInterchange.util.jtt809.common.Jtt809Util; |
| | | import io.netty.buffer.ByteBuf; |
| | | import io.netty.buffer.Unpooled; |
| | |
| | | import org.springframework.data.elasticsearch.annotations.Document; |
| | | import org.springframework.data.elasticsearch.annotations.Field; |
| | | import org.springframework.data.elasticsearch.annotations.FieldType; |
| | | |
| | | import java.text.ParseException; |
| | | |
| | | /** |
| | | * 上报报警信息 |
| | |
| | | private int warnSrc; |
| | | /** |
| | | * 报警类型 |
| | | * 0x0001: 超速报警 |
| | | * 0x0002: 疲劳驾驶报警 |
| | | * 0x0003: 紧急报警 |
| | | * 0x0004: 进入指定区域报警 |
| | | * 0x0005: 离开指定区域报警 |
| | | * 0x0006: 路段堵塞报警 |
| | | * 0x0007: 危险路段报警 |
| | | * 0x0008: 越界报警 |
| | | * 0x0009: 盗警 |
| | | */ |
| | | @Field(type = FieldType.Integer) |
| | | private int warnType; |
| | |
| | | /** |
| | | * 信息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; |
| | | /** |
| | | * 报警级别 0x001:一级报警,0x002: 二级报警 |
| | | */ |
| | | @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.Integer) |
| | | private int result; |
| | | |
| | | /** |
| | | * 报警督办发起时间 |
| | | */ |
| | | @Field(type = FieldType.Long) |
| | | private long pushTime; |
| | | /** |
| | | * 抓拍图片 |
| | | */ |
| | | @Field(type = FieldType.Text) |
| | | private String picUrl; |
| | | |
| | | |
| | | /** |
| | | * 解析报文 |
| | | */ |
| | | public UPWarnMsgAdptInfo decode(WarnMsg warnMsg) { |
| | | 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(); |
| | | String date = byteBuf.readByte() + "-" + byteBuf.readByte() + "-" + byteBuf.readShort() + " " + |
| | | byteBuf.readByte() + ":" + byteBuf.readByte() + ":" + byteBuf.readByte(); |
| | | long time = 0; |
| | | public UPWarnMsgAdptInfo decode1(WarnMsg warnMsg) { |
| | | try { |
| | | time = DateUtils.parseDate(date, "dd-MM-yyyy HH:mm:ss").getTime(); |
| | | } catch (ParseException e) { |
| | | 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 = Integer.valueOf(byteBuf.readInt()).toString(); |
| | | //报警数据长度 |
| | | this.infoLength = byteBuf.readInt(); |
| | | //上报报警信息内容 |
| | | this.infoContent = Jtt809Util.readGBKString(byteBuf, this.infoLength); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | //报警时间 |
| | | this.warnTime = time; |
| | | //信息ID |
| | | this.infoId = byteBuf.readInt(); |
| | | //报警数据长度 |
| | | this.infoLength = byteBuf.readInt(); |
| | | //上报报警信息内容 |
| | | this.infoContent = Jtt809Util.readGBKString(byteBuf, this.infoLength); |
| | | 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.readShort(); |
| | | //行车速度 |
| | | this.speed = byteBuf.readShort(); |
| | | //行驶记录速度 |
| | | this.vec2 = byteBuf.readShort(); |
| | | //报警状态 |
| | | this.status = byteBuf.readByte(); |
| | | //方向 |
| | | this.direction = byteBuf.readShort(); |
| | | //报警数据长度 |
| | | this.infoLength = byteBuf.readShort(); |
| | | //报警信息内容 |
| | | this.infoContent = Jtt809Util.readGBKString(byteBuf,this.infoLength); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return this; |
| | | } |
| | | } |