| | |
| | | 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; |
| | |
| | | */ |
| | | @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:处理中 |
| | | * 0x01:已处理完毕 |
| | | * 0x02:不作处理 |
| | | * 0x03:将来处理 |
| | | */ |
| | | @Field(type = FieldType.Integer) |
| | | private int result; |
| | | /** |
| | | * 报警督办发起时间 |
| | | */ |
| | | @Field(type = FieldType.Long) |
| | | private long pushTime; |
| | | |
| | | |
| | | /** |
| | | * 解析报文 |
| | | */ |
| | | 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; |
| | | 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 = byteBuf.readInt(); |
| | | //报警数据长度 |
| | | 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; |
| | | } |
| | | } |