From b0e25ef784df42337dfccf12f3b86ea4efff0cb9 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Sat, 18 May 2024 05:59:23 +0800 Subject: [PATCH] =?UTF-8?q?1078-=E4=BF=AE=E5=A4=8D=E5=88=86=E5=8C=85?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/jt1078/codec/decode/MultiPacket.java | 9 +++++++++ .../vmp/jt1078/codec/decode/MultiPacketManager.java | 3 ++- .../java/com/genersoft/iot/vmp/jt1078/proc/Header.java | 10 ++++++++++ .../genersoft/iot/vmp/jt1078/proc/request/J0802.java | 7 +++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacket.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacket.java index 4ccb25a0a..e5fe7c20e 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacket.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacket.java @@ -82,4 +82,13 @@ public class MultiPacket { public void setByteBuf(ByteBuf byteBuf) { this.byteBuf = byteBuf; } + + @Override + public String toString() { + return "MultiPacket{" + + "消息头=" + header + + ", 包序号=" + number + + ", 分包数量=" + count + + '}'; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacketManager.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacketManager.java index ceade85da..556ba9cb1 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacketManager.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/MultiPacketManager.java @@ -25,7 +25,8 @@ public enum MultiPacketManager { * 增加待合并的分包,如果分包接受完毕会返回完整的数据包 */ public ByteBuf add(MultiPacket packet) { - String key = packet.getHeader().getTerminalId() + "/" + packet.getHeader().getSn(); + String key = packet.getHeader().getMsgId() + "/" + packet.getHeader().getTerminalId(); + logger.debug("分包消息: \n{}", packet); List multiPackets = packetMap.computeIfAbsent(key, k -> new ArrayList<>(packet.getCount())); multiPackets.add(packet); packetTimeMap.put(key, System.currentTimeMillis()); diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/Header.java b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/Header.java index 163db8277..86eb7af72 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/Header.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/Header.java @@ -74,4 +74,14 @@ public class Header { return Bin.get(msgPro, 14); } + @Override + public String toString() { + return "Header{" + + "消息ID='" + msgId + '\'' + + ", 消息体属性=" + msgPro + + ", 终端手机号='" + terminalId + '\'' + + ", 消息体流水号=" + sn + + ", 协议版本号=" + version + + '}'; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0802.java b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0802.java index 6e9b94f61..eb0650f59 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0802.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0802.java @@ -17,6 +17,7 @@ import org.springframework.context.ApplicationEvent; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.List; /** @@ -35,6 +36,12 @@ public class J0802 extends Re { protected Rs decode0(ByteBuf buf, Header header, Session session) { respNo = buf.readUnsignedShort(); int length = buf.readUnsignedShort(); + if (length == 0) { + log.info("[JT-存储多媒体数据检索应答]: {}", length); + SessionManager.INSTANCE.response(header.getTerminalId(), "0802", (long) respNo, new ArrayList<>()); + return null; + } + mediaDataInfoList = new ArrayList<>(length); for (int i = 0; i < length; i++) { mediaDataInfoList.add(JTMediaDataInfo.decode(buf)); }