puzhibing
2 天以前 ea7595c4c75926f85388574b261b8ba90cf60e0d
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;
   }
}