old mode 100644
new mode 100755
|  |  |  | 
|---|
|  |  |  | package com.genersoft.iot.vmp.gb28181.event; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.Device; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.GbStream; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.offline.OfflineEvent; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.platformKeepaliveExpire.PlatformKeepaliveExpireEvent; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.platformNotRegister.PlatformNotRegisterEvent; | 
|---|
|  |  |  | 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.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEvent; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.online.OnlineEvent; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void onlineEventPublish(Device device, String from) { | 
|---|
|  |  |  | OnlineEvent onEvent = new OnlineEvent(this); | 
|---|
|  |  |  | onEvent.setDevice(device); | 
|---|
|  |  |  | onEvent.setFrom(from); | 
|---|
|  |  |  | applicationEventPublisher.publishEvent(onEvent); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void outlineEventPublish(String deviceId, String from){ | 
|---|
|  |  |  | OfflineEvent outEvent = new OfflineEvent(this); | 
|---|
|  |  |  | outEvent.setDeviceId(deviceId); | 
|---|
|  |  |  | outEvent.setFrom(from); | 
|---|
|  |  |  | applicationEventPublisher.publishEvent(outEvent); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 平台心跳到期事件 | 
|---|
|  |  |  | * @param platformGbId | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void platformKeepaliveExpireEventPublish(String platformGbId){ | 
|---|
|  |  |  | PlatformKeepaliveExpireEvent platformNotRegisterEvent = new PlatformKeepaliveExpireEvent(this); | 
|---|
|  |  |  | platformNotRegisterEvent.setPlatformGbID(platformGbId); | 
|---|
|  |  |  | applicationEventPublisher.publishEvent(platformNotRegisterEvent); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 平台未注册事件 | 
|---|
|  |  |  | * @param platformGbId | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void platformNotRegisterEventPublish(String platformGbId){ | 
|---|
|  |  |  | PlatformNotRegisterEvent platformNotRegisterEvent = new PlatformNotRegisterEvent(this); | 
|---|
|  |  |  | platformNotRegisterEvent.setPlatformGbID(platformGbId); | 
|---|
|  |  |  | applicationEventPublisher.publishEvent(platformNotRegisterEvent); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 设备报警事件 | 
|---|
|  |  |  | * @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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public void catalogEventPublish(String platformId, DeviceChannel deviceChannel, String type) { | 
|---|
|  |  |  | List<DeviceChannel> deviceChannelList = new ArrayList<>(); | 
|---|
|  |  |  | deviceChannelList.add(deviceChannel); | 
|---|
|  |  |  | catalogEventPublish(platformId, deviceChannelList, type); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) { | 
|---|
|  |  |  | List<GbStream> gbStreamList = new ArrayList<>(); | 
|---|
|  |  |  | gbStreamList.add(gbStream); | 
|---|
|  |  |  | catalogEventPublishForStream(platformId, gbStreamList, type); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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.gb28181.event.subscribe.mobilePosition.MobilePositionEvent; | 
|---|
|  |  |  | 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 mobilePositionEventPublish(MobilePosition mobilePosition) { | 
|---|
|  |  |  | MobilePositionEvent event = new MobilePositionEvent(this); | 
|---|
|  |  |  | event.setMobilePosition(mobilePosition); | 
|---|
|  |  |  | applicationEventPublisher.publishEvent(event); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|