From 2157bb0270663df35b7267c3d10c8b594400102e Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 22 二月 2022 11:44:56 +0800 Subject: [PATCH] 规范数据库,给各个标设置主键ID --- src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java | 104 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 81 insertions(+), 23 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 16924df..bafbb0e 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 Map<String,String> streamPushGBMap = new HashMap<>(); 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; @@ -33,6 +33,16 @@ 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 public void invoke(StreamPushExcelDto streamPushExcelDto, AnalysisContext analysisContext) { if (StringUtils.isEmpty(streamPushExcelDto.getApp()) @@ -40,13 +50,17 @@ || StringUtils.isEmpty(streamPushExcelDto.getGbId())) { return; } - if (streamPushGBSet.contains(streamPushExcelDto.getGbId())) { - errorGBList.add(streamPushExcelDto.getGbId()); + if (streamPushGBMap.get(streamPushExcelDto.getApp() + streamPushExcelDto.getStream()) == null) { + streamPushGBMap.put(streamPushExcelDto.getApp() + streamPushExcelDto.getStream(), streamPushExcelDto.getGbId()); + + }else { + if (!streamPushGBMap.get(streamPushExcelDto.getApp() + streamPushExcelDto.getStream()).equals(streamPushExcelDto.getGbId())) { + errorGBList.add(streamPushExcelDto.getGbId() + "(鍚屼竴缁刟pp+stream浣跨敤浜嗕笉鍚屽浗鏍嘔D)"); + return; + } } - if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { - errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()); - } - if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { + if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) { + errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()+ "/" + streamPushExcelDto.getPlatformId() + "(鍚屼竴缁刟pp+stream娣诲姞鍦ㄤ簡鍚屼竴涓钩鍙颁笅)"); return; } @@ -56,30 +70,74 @@ streamPushItem.setGbId(streamPushExcelDto.getGbId()); streamPushItem.setStatus(false); streamPushItem.setStreamType("push"); - streamPushItem.setCreateStamp(System.currentTimeMillis()/1000); + streamPushItem.setCreateStamp(System.currentTimeMillis()); streamPushItem.setMediaServerId(defaultMediaServerId); streamPushItem.setName(streamPushExcelDto.getName()); streamPushItem.setOriginType(2); streamPushItem.setOriginTypeStr("rtsp_push"); streamPushItem.setTotalReaderCount("0"); - streamPushItems.add(streamPushItem); - streamPushGBSet.add(streamPushExcelDto.getGbId()); - streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()); - if (streamPushItems.size() > 300) { - pushService.batchAdd(streamPushItems); - // 瀛樺偍瀹屾垚娓呯悊 list - streamPushItems.clear(); + 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); + } + } + + streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId()); + loadedSize ++; + if (loadedSize > 1000) { + saveData(); + streamPushItems.clear(); + streamPushItemsForPlatform.clear(); + loadedSize = 0; + } + } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴� - if (streamPushItems.size() > 0) { - pushService.batchAdd(streamPushItems); - } - streamPushGBSet.clear(); + saveData(); + streamPushGBMap.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