EventPublisher.java 3.7 KB

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