From 3f21cddda071af37e902c98c8e6b0f82dd9dd303 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 04 六月 2025 18:34:01 +0800 Subject: [PATCH] 优化报警附件逻辑 --- ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/model/UPWarnMsgAdptInfo.java | 194 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 154 insertions(+), 40 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 8f7756c..4a1a6f5 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 @@ -70,8 +70,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; + /** + * 报警级别 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; /** * 报警数据长度 */ @@ -82,21 +144,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,34 +158,101 @@ */ @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(); - 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); + public UPWarnMsgAdptInfo decode1(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 = Integer.valueOf(byteBuf.readInt()).toString(); + //报警数据长度 + this.infoLength = byteBuf.readInt(); + //上报报警信息内容 + this.infoContent = Jtt809Util.readGBKString(byteBuf, this.infoLength); + }catch (Exception e){ + e.printStackTrace(); + } + 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; } } -- Gitblit v1.7.1