From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改
---
src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 118 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
new file mode 100644
index 0000000..d56e744
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
@@ -0,0 +1,118 @@
+package com.genersoft.iot.vmp.gb28181.event;
+
+import com.genersoft.iot.vmp.gb28181.bean.*;
+import com.genersoft.iot.vmp.gb28181.event.device.RequestTimeoutEvent;
+import com.genersoft.iot.vmp.gb28181.event.record.RecordEndEvent;
+import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
+import com.genersoft.iot.vmp.media.zlm.event.ZLMOfflineEvent;
+import com.genersoft.iot.vmp.media.zlm.event.ZLMOnlineEvent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.stereotype.Component;
+
+import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEvent;
+
+import javax.sip.TimeoutEvent;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @description:Event事件通知推送器,支持推送在线事件、离线事件
+ * @author: swwheihei
+ * @date: 2020年5月6日 上午11:30:50
+ */
+@Component
+public class EventPublisher {
+
+ @Autowired
+ private ApplicationEventPublisher applicationEventPublisher;
+
+ /**
+ * 设备报警事件
+ * @param deviceAlarm
+ */
+ public void deviceAlarmEventPublish(DeviceAlarm deviceAlarm) {
+ AlarmEvent alarmEvent = new AlarmEvent(this);
+ alarmEvent.setAlarmInfo(deviceAlarm);
+ applicationEventPublisher.publishEvent(alarmEvent);
+ }
+
+ public void zlmOfflineEventPublish(String mediaServerId){
+ ZLMOfflineEvent outEvent = new ZLMOfflineEvent(this);
+ outEvent.setMediaServerId(mediaServerId);
+ applicationEventPublisher.publishEvent(outEvent);
+ }
+
+ public void zlmOnlineEventPublish(String mediaServerId) {
+ ZLMOnlineEvent outEvent = new ZLMOnlineEvent(this);
+ outEvent.setMediaServerId(mediaServerId);
+ applicationEventPublisher.publishEvent(outEvent);
+ }
+
+
+ public void catalogEventPublish(String platformId, DeviceChannel deviceChannel, String type) {
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
+ deviceChannelList.add(deviceChannel);
+ catalogEventPublish(platformId, deviceChannelList, type);
+ }
+
+
+ public void requestTimeOut(TimeoutEvent timeoutEvent) {
+ RequestTimeoutEvent requestTimeoutEvent = new RequestTimeoutEvent(this);
+ requestTimeoutEvent.setTimeoutEvent(timeoutEvent);
+ applicationEventPublisher.publishEvent(requestTimeoutEvent);
+ }
+
+
+ /**
+ *
+ * @param platformId
+ * @param deviceChannels
+ * @param type
+ */
+ public void catalogEventPublish(String platformId, List<DeviceChannel> deviceChannels, String type) {
+ CatalogEvent outEvent = new CatalogEvent(this);
+ List<DeviceChannel> channels = new ArrayList<>();
+ if (deviceChannels.size() > 1) {
+ // 数据去重
+ Set<String> gbIdSet = new HashSet<>();
+ for (DeviceChannel deviceChannel : deviceChannels) {
+ if (!gbIdSet.contains(deviceChannel.getChannelId())) {
+ gbIdSet.add(deviceChannel.getChannelId());
+ channels.add(deviceChannel);
+ }
+ }
+ }else {
+ channels = deviceChannels;
+ }
+ outEvent.setDeviceChannels(channels);
+ outEvent.setType(type);
+ outEvent.setPlatformId(platformId);
+ applicationEventPublisher.publishEvent(outEvent);
+ }
+
+
+ public void catalogEventPublishForStream(String platformId, List<GbStream> gbStreams, String type) {
+ CatalogEvent outEvent = new CatalogEvent(this);
+ outEvent.setGbStreams(gbStreams);
+ outEvent.setType(type);
+ outEvent.setPlatformId(platformId);
+ applicationEventPublisher.publishEvent(outEvent);
+ }
+
+
+ public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) {
+ List<GbStream> gbStreamList = new ArrayList<>();
+ gbStreamList.add(gbStream);
+ catalogEventPublishForStream(platformId, gbStreamList, type);
+ }
+
+ public void recordEndEventPush(RecordInfo recordInfo) {
+ RecordEndEvent outEvent = new RecordEndEvent(this);
+ outEvent.setRecordInfo(recordInfo);
+ applicationEventPublisher.publishEvent(outEvent);
+ }
+
+}
--
Gitblit v1.9.3