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 | 110 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 93 insertions(+), 17 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 a68f5e9..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,22 +7,40 @@ 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> { + private ErrorDataHandler errorDataHandler; 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) { + public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId, ErrorDataHandler errorDataHandler) { this.pushService = pushService; this.defaultMediaServerId = defaultMediaServerId; + this.errorDataHandler = errorDataHandler; + } + + 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 @@ -32,36 +50,94 @@ || StringUtils.isEmpty(streamPushExcelDto.getGbId())) { return; } - if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { + 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() + streamPushExcelDto.getPlatformId())) { + errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()+ "/" + streamPushExcelDto.getPlatformId() + "(鍚屼竴缁刟pp+stream娣诲姞鍦ㄤ簡鍚屼竴涓钩鍙颁笅)"); return; } + StreamPushItem streamPushItem = new StreamPushItem(); streamPushItem.setApp(streamPushExcelDto.getApp()); streamPushItem.setStream(streamPushExcelDto.getStream()); 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) { // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴� - 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