diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java index d8fbe4a4..131dd96c 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java @@ -36,6 +36,7 @@ public class RecordEndEventListener implements ApplicationListener {}", handlerMap.size()); if (handlerMap.size() > 0) { - String key = deviceId + channelId; + String key = deviceId + channelId + sn; logger.debug("handlerMap.keys => {}", handlerMap.keySet()); - RecordEndEventHandler handler = handlerMap.get(deviceId + channelId); + RecordEndEventHandler handler = handlerMap.get(deviceId + channelId + sn); logger.debug("handler => {}", handler); if (handler != null){ handler.handler(event.getRecordInfo()); @@ -71,18 +72,18 @@ public class RecordEndEventListener implements ApplicationListener deviceId: {}, channelId: {}", device,channelId); - handlerMap.put(device + channelId, recordEndEventHandler); + public void addEndEventHandler(String device, String channelId, String sn, RecordEndEventHandler recordEndEventHandler) { + logger.debug("RecordEndEventListener addEndEventHandler => deviceId: {}, channelId: {}, sn: {}", device,channelId, sn); + handlerMap.put(device + channelId + sn, recordEndEventHandler); } /** * 添加 * @param device * @param channelId */ - public void delEndEventHandler(String device, String channelId) { - logger.debug("RecordEndEventListener delEndEventHandler => deviceId: {}, channelId: {}", device,channelId); - handlerMap.remove(device + channelId); + public void delEndEventHandler(String device, String channelId, String sn) { + logger.debug("RecordEndEventListener delEndEventHandler => deviceId: {}, channelId: {}, sn: {}", device,channelId,sn); + handlerMap.remove(device + channelId + sn); } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/RecordDataCatch.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/RecordDataCatch.java index 3f24dbee..8eb7bb59 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/RecordDataCatch.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/RecordDataCatch.java @@ -71,7 +71,7 @@ public class RecordDataCatch { msg.setKey(msgKey); msg.setData(recordInfo); deferredResultHolder.invokeAllResult(msg); - recordEndEventListener.delEndEventHandler(recordInfo.getDeviceId(),recordInfo.getChannelId()); + recordEndEventListener.delEndEventHandler(recordInfo.getDeviceId(),recordInfo.getChannelId(),recordInfo.getSn()); data.remove(key); } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java index 2853c95e..86f35b55 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java @@ -104,7 +104,7 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp DeviceChannel deviceChannel = storager.queryChannelInParentPlatform(parentPlatform.getServerGBId(), channelId); CopyOnWriteArraySet set = new CopyOnWriteArraySet<>(); // 接收录像数据 - recordEndEventListener.addEndEventHandler(deviceChannel.getDeviceId(), channelId, (recordInfo)->{ + recordEndEventListener.addEndEventHandler(deviceChannel.getDeviceId(), channelId, String.valueOf(sn),(recordInfo)->{ try { RecordItem item = recordInfo.getRecordList().stream().findFirst().orElse(null); if(item == null) {