EventPublisher.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.genersoft.iot.vmp.gb28181.event;
  2. import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
  3. import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
  4. import com.genersoft.iot.vmp.gb28181.bean.GbStream;
  5. import com.genersoft.iot.vmp.gb28181.bean.RecordInfo;
  6. import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEvent;
  7. import com.genersoft.iot.vmp.gb28181.event.device.RequestTimeoutEvent;
  8. import com.genersoft.iot.vmp.gb28181.event.record.RecordEndEvent;
  9. import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
  10. import com.genersoft.iot.vmp.media.event.MediaServerOfflineEvent;
  11. import com.genersoft.iot.vmp.media.event.MediaServerOnlineEvent;
  12. import com.genersoft.iot.vmp.gb28181.event.subscribe.mobilePosition.MobilePositionEvent;
  13. import com.genersoft.iot.vmp.media.zlm.event.ZLMOfflineEvent;
  14. import com.genersoft.iot.vmp.media.zlm.event.ZLMOnlineEvent;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.context.ApplicationEventPublisher;
  17. import org.springframework.stereotype.Component;
  18. import javax.sip.TimeoutEvent;
  19. import java.util.ArrayList;
  20. import java.util.HashSet;
  21. import java.util.List;
  22. import java.util.Set;
  23. /**
  24. * @description:Event事件通知推送器,支持推送在线事件、离线事件
  25. * @author: swwheihei
  26. * @date: 2020年5月6日 上午11:30:50
  27. */
  28. @Component
  29. public class EventPublisher {
  30. @Autowired
  31. private ApplicationEventPublisher applicationEventPublisher;
  32. /**
  33. * 设备报警事件
  34. * @param deviceAlarm
  35. */
  36. public void deviceAlarmEventPublish(DeviceAlarm deviceAlarm) {
  37. AlarmEvent alarmEvent = new AlarmEvent(this);
  38. alarmEvent.setAlarmInfo(deviceAlarm);
  39. applicationEventPublisher.publishEvent(alarmEvent);
  40. }
  41. public void mediaServerOfflineEventPublish(String mediaServerId){
  42. MediaServerOfflineEvent outEvent = new MediaServerOfflineEvent(this);
  43. outEvent.setMediaServerId(mediaServerId);
  44. applicationEventPublisher.publishEvent(outEvent);
  45. }
  46. public void mediaServerOnlineEventPublish(String mediaServerId) {
  47. MediaServerOnlineEvent outEvent = new MediaServerOnlineEvent(this);
  48. outEvent.setMediaServerId(mediaServerId);
  49. applicationEventPublisher.publishEvent(outEvent);
  50. }
  51. public void catalogEventPublish(String platformId, DeviceChannel deviceChannel, String type) {
  52. List<DeviceChannel> deviceChannelList = new ArrayList<>();
  53. deviceChannelList.add(deviceChannel);
  54. catalogEventPublish(platformId, deviceChannelList, type);
  55. }
  56. public void requestTimeOut(TimeoutEvent timeoutEvent) {
  57. RequestTimeoutEvent requestTimeoutEvent = new RequestTimeoutEvent(this);
  58. requestTimeoutEvent.setTimeoutEvent(timeoutEvent);
  59. applicationEventPublisher.publishEvent(requestTimeoutEvent);
  60. }
  61. /**
  62. *
  63. * @param platformId
  64. * @param deviceChannels
  65. * @param type
  66. */
  67. public void catalogEventPublish(String platformId, List<DeviceChannel> deviceChannels, String type) {
  68. CatalogEvent outEvent = new CatalogEvent(this);
  69. List<DeviceChannel> channels = new ArrayList<>();
  70. if (deviceChannels.size() > 1) {
  71. // 数据去重
  72. Set<String> gbIdSet = new HashSet<>();
  73. for (DeviceChannel deviceChannel : deviceChannels) {
  74. if (!gbIdSet.contains(deviceChannel.getChannelId())) {
  75. gbIdSet.add(deviceChannel.getChannelId());
  76. channels.add(deviceChannel);
  77. }
  78. }
  79. }else {
  80. channels = deviceChannels;
  81. }
  82. outEvent.setDeviceChannels(channels);
  83. outEvent.setType(type);
  84. outEvent.setPlatformId(platformId);
  85. applicationEventPublisher.publishEvent(outEvent);
  86. }
  87. public void mobilePositionEventPublish(MobilePosition mobilePosition) {
  88. MobilePositionEvent event = new MobilePositionEvent(this);
  89. event.setMobilePosition(mobilePosition);
  90. applicationEventPublisher.publishEvent(event);
  91. }
  92. public void catalogEventPublishForStream(String platformId, List<GbStream> gbStreams, String type) {
  93. CatalogEvent outEvent = new CatalogEvent(this);
  94. outEvent.setGbStreams(gbStreams);
  95. outEvent.setType(type);
  96. outEvent.setPlatformId(platformId);
  97. applicationEventPublisher.publishEvent(outEvent);
  98. }
  99. public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) {
  100. List<GbStream> gbStreamList = new ArrayList<>();
  101. gbStreamList.add(gbStream);
  102. catalogEventPublishForStream(platformId, gbStreamList, type);
  103. }
  104. public void recordEndEventPush(RecordInfo recordInfo) {
  105. RecordEndEvent outEvent = new RecordEndEvent(this);
  106. outEvent.setRecordInfo(recordInfo);
  107. applicationEventPublisher.publishEvent(outEvent);
  108. }
  109. }