| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.genersoft.iot.vmp.common.StreamInfo; |
| | | import com.genersoft.iot.vmp.conf.UserSetup; |
| | | import com.genersoft.iot.vmp.conf.UserSetting; |
| | | import com.genersoft.iot.vmp.gb28181.bean.*; |
| | | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; |
| | | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; |
| | | import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe; |
| | | import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; |
| | | import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.*; |
| | | import com.genersoft.iot.vmp.service.IGbStreamService; |
| | | import com.genersoft.iot.vmp.service.IMediaServerService; |
| | | import com.genersoft.iot.vmp.service.IStreamPushService; |
| | | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| | | import com.genersoft.iot.vmp.storager.dao.*; |
| | | import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import org.slf4j.Logger; |
| | |
| | | private IRedisCatchStorage redisCatchStorage; |
| | | |
| | | @Autowired |
| | | private UserSetup userSetup; |
| | | private UserSetting userSetting; |
| | | |
| | | @Autowired |
| | | private IMediaServerService mediaServerService; |
| | | |
| | | @Override |
| | | public List<StreamPushItem> handleJSON(String jsonData, MediaServerItem mediaServerItem) { |
| | | if (jsonData == null) return null; |
| | | if (jsonData == null) { |
| | | return null; |
| | | } |
| | | |
| | | Map<String, StreamPushItem> result = new HashMap<>(); |
| | | |
| | |
| | | } |
| | | } |
| | | zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{ |
| | | if (mediaList == null) return; |
| | | if (mediaList == null) { |
| | | return; |
| | | } |
| | | String dataStr = mediaList.getString("data"); |
| | | |
| | | Integer code = mediaList.getInteger("code"); |
| | |
| | | String type = "PUSH"; |
| | | for (MediaItem offlineMediaItem : offlineMediaItemList) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("serverId", userSetup.getServerId()); |
| | | jsonObject.put("serverId", userSetting.getServerId()); |
| | | jsonObject.put("app", offlineMediaItem.getApp()); |
| | | jsonObject.put("stream", offlineMediaItem.getStream()); |
| | | jsonObject.put("register", false); |
| | |
| | | // 移除redis内流的信息 |
| | | redisCatchStorage.removeStream(mediaServerId, type, mediaItem.getApp(), mediaItem.getStream()); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("serverId", userSetup.getServerId()); |
| | | jsonObject.put("serverId", userSetting.getServerId()); |
| | | jsonObject.put("app", mediaItem.getApp()); |
| | | jsonObject.put("stream", mediaItem.getStream()); |
| | | jsonObject.put("register", false); |
| | |
| | | // 遍历存储结果,查找app+Stream->platformId+catalogId的对应关系,然后执行批量写入 |
| | | for (StreamPushItem streamPushItem : streamPushItemsForPlatform) { |
| | | List<String[]> platFormInfoList = streamPushItemsForAll.get(streamPushItem.getApp() + streamPushItem.getStream()); |
| | | if (platFormInfoList != null) { |
| | | if (platFormInfoList.size() > 0) { |
| | | for (String[] platFormInfoArray : platFormInfoList) { |
| | | StreamPushItem streamPushItemForPlatform = new StreamPushItem(); |
| | | streamPushItemForPlatform.setGbStreamId(streamPushItem.getGbStreamId()); |
| | | if (platFormInfoArray.length > 0) { |
| | | // 数组 platFormInfoArray 0 为平台ID。 1为目录ID |
| | | // 不存在这个平台,则忽略导入此关联关系 |
| | | if (platformInfoMap.get(platFormInfoArray[0]) == null |
| | | || platformInfoMap.get(platFormInfoArray[0]).get(platFormInfoArray[1]) == null) { |
| | | logger.info("导入数据时不存在平台或目录{}/{},已导入未分配", platFormInfoArray[0], platFormInfoArray[1] ); |
| | | continue; |
| | | } |
| | | streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]); |
| | | |
| | | List<GbStream> gbStreamList = platformForEvent.get(streamPushItem.getPlatformId()); |
| | | if (gbStreamList == null) { |
| | | gbStreamList = new ArrayList<>(); |
| | | platformForEvent.put(platFormInfoArray[0], gbStreamList); |
| | | } |
| | | // 为发送通知整理数据 |
| | | streamPushItemForPlatform.setName(streamPushItem.getName()); |
| | | streamPushItemForPlatform.setApp(streamPushItem.getApp()); |
| | | streamPushItemForPlatform.setStream(streamPushItem.getStream()); |
| | | streamPushItemForPlatform.setGbId(streamPushItem.getGbId()); |
| | | gbStreamList.add(streamPushItemForPlatform); |
| | | if (platFormInfoList != null && platFormInfoList.size() > 0) { |
| | | for (String[] platFormInfoArray : platFormInfoList) { |
| | | StreamPushItem streamPushItemForPlatform = new StreamPushItem(); |
| | | streamPushItemForPlatform.setGbStreamId(streamPushItem.getGbStreamId()); |
| | | if (platFormInfoArray.length > 0) { |
| | | // 数组 platFormInfoArray 0 为平台ID。 1为目录ID |
| | | // 不存在这个平台,则忽略导入此关联关系 |
| | | if (platformInfoMap.get(platFormInfoArray[0]) == null |
| | | || platformInfoMap.get(platFormInfoArray[0]).get(platFormInfoArray[1]) == null) { |
| | | logger.info("导入数据时不存在平台或目录{}/{},已导入未分配", platFormInfoArray[0], platFormInfoArray[1] ); |
| | | continue; |
| | | } |
| | | if (platFormInfoArray.length > 1) { |
| | | streamPushItemForPlatform.setCatalogId(platFormInfoArray[1]); |
| | | streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]); |
| | | List<GbStream> gbStreamList = platformForEvent.get(platFormInfoArray[0]); |
| | | if (gbStreamList == null) { |
| | | gbStreamList = new ArrayList<>(); |
| | | platformForEvent.put(platFormInfoArray[0], gbStreamList); |
| | | } |
| | | streamPushItemListFroPlatform.add(streamPushItemForPlatform); |
| | | // 为发送通知整理数据 |
| | | streamPushItemForPlatform.setName(streamPushItem.getName()); |
| | | streamPushItemForPlatform.setApp(streamPushItem.getApp()); |
| | | streamPushItemForPlatform.setStream(streamPushItem.getStream()); |
| | | streamPushItemForPlatform.setGbId(streamPushItem.getGbId()); |
| | | gbStreamList.add(streamPushItemForPlatform); |
| | | } |
| | | if (platFormInfoArray.length > 1) { |
| | | streamPushItemForPlatform.setCatalogId(platFormInfoArray[1]); |
| | | } |
| | | streamPushItemListFroPlatform.add(streamPushItemForPlatform); |
| | | } |
| | | |
| | | } |