From bf66f8f694607fdd41ff9d7f6149459eef96bb67 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期五, 11 二月 2022 16:45:06 +0800 Subject: [PATCH] 推流导入支持添加平台信息与目录信息 --- src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java | 81 ++++++++++++++++++++++++++++++++++------ 1 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java index 586b5b4..2f94709 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java @@ -7,10 +7,7 @@ import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPushExcelDto> { @@ -18,10 +15,13 @@ private IStreamPushService pushService; private String defaultMediaServerId; private List<StreamPushItem> streamPushItems = new ArrayList<>(); + private Map<String, UploadData> streamPushItemsForPlatform = new HashMap<>(); private Set<String> streamPushStreamSet = new HashSet<>(); private Set<String> streamPushGBSet = new HashSet<>(); private List<String> errorStreamList = new ArrayList<>(); private List<String> errorGBList = new ArrayList<>(); + // 璇诲彇鏁伴噺璁℃暟鍣� + private int loadedSize = 0; public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId, ErrorDataHandler errorDataHandler) { this.pushService = pushService; @@ -31,6 +31,16 @@ public interface ErrorDataHandler{ void handle(List<String> streams, List<String> gbId); + } + + private class UploadData{ + public String platformId; + public Map<String, List<StreamPushItem>> catalogData = new HashMap<>(); + public List<StreamPushItem> streamPushItems = new ArrayList<>(); + + public UploadData(String platformId) { + this.platformId = platformId; + } } @Override @@ -43,10 +53,10 @@ if (streamPushGBSet.contains(streamPushExcelDto.getGbId())) { errorGBList.add(streamPushExcelDto.getGbId()); } - if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { + if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) { errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()); } - if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { + if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) { return; } @@ -62,24 +72,69 @@ streamPushItem.setOriginType(2); streamPushItem.setOriginTypeStr("rtsp_push"); streamPushItem.setTotalReaderCount("0"); - streamPushItems.add(streamPushItem); + streamPushItem.setPlatformId(streamPushExcelDto.getPlatformId()); + streamPushItem.setCatalogId(streamPushExcelDto.getCatalogId()); + if (StringUtils.isEmpty(streamPushExcelDto.getPlatformId())) { + streamPushItems.add(streamPushItem); + }else { + UploadData uploadData = streamPushItemsForPlatform.get(streamPushExcelDto.getPlatformId()); + if (uploadData == null) { + uploadData = new UploadData(streamPushExcelDto.getPlatformId()); + streamPushItemsForPlatform.put(streamPushExcelDto.getPlatformId(), uploadData); + } + if (!StringUtils.isEmpty(streamPushExcelDto.getCatalogId())) { + List<StreamPushItem> streamPushItems = uploadData.catalogData.get(streamPushExcelDto.getCatalogId()); + if (streamPushItems == null) { + streamPushItems = new ArrayList<>(); + uploadData.catalogData.put(streamPushExcelDto.getCatalogId(), streamPushItems); + } + streamPushItems.add(streamPushItem); + }else { + uploadData.streamPushItems.add(streamPushItem); + } + + } + streamPushGBSet.add(streamPushExcelDto.getGbId()); streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()); - if (streamPushItems.size() > 300) { - pushService.batchAdd(streamPushItems); - // 瀛樺偍瀹屾垚娓呯悊 list + loadedSize ++; + if (loadedSize > 1000) { + saveData(); streamPushItems.clear(); + streamPushItemsForPlatform.clear(); + loadedSize = 0; } + } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴� - if (streamPushItems.size() > 0) { - pushService.batchAdd(streamPushItems); - } + saveData(); streamPushGBSet.clear(); streamPushStreamSet.clear(); errorDataHandler.handle(errorStreamList, errorGBList); } + + private void saveData(){ + if (streamPushItems.size() > 0) { + pushService.batchAddForUpload(null, null, streamPushItems); + } + // 澶勭悊宸插垎閰嶅埌骞冲彴鐨勬祦 + if (streamPushItemsForPlatform.size() > 0){ + for (String platformId : streamPushItemsForPlatform.keySet()) { + UploadData uploadData = streamPushItemsForPlatform.get(platformId); + if (uploadData.streamPushItems.size() > 0) { + pushService.batchAddForUpload(platformId, null, uploadData.streamPushItems); + } + if (uploadData.catalogData.size() > 0) { + for (String catalogId : uploadData.catalogData.keySet()) { + if (uploadData.catalogData.get(catalogId).size() > 0) { + pushService.batchAddForUpload(platformId, catalogId, uploadData.catalogData.get(catalogId)); + } + } + } + } + } + } } -- Gitblit v1.8.0