Commit bf66f8f694607fdd41ff9d7f6149459eef96bb67
1 parent
d07a5680
推流导入支持添加平台信息与目录信息
Showing
10 changed files
with
145 additions
and
30 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
| @@ -131,7 +131,7 @@ public class EventPublisher { | @@ -131,7 +131,7 @@ public class EventPublisher { | ||
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | @Async | 133 | @Async |
| 134 | - public void catalogEventPublishForStream(String platformId, List<GbStream> gbStreams, String type) { | 134 | + public void catalogEventPublishForStream(String platformId, GbStream[] gbStreams, String type) { |
| 135 | CatalogEvent outEvent = new CatalogEvent(this); | 135 | CatalogEvent outEvent = new CatalogEvent(this); |
| 136 | outEvent.setGbStreams(gbStreams); | 136 | outEvent.setGbStreams(gbStreams); |
| 137 | outEvent.setType(type); | 137 | outEvent.setType(type); |
| @@ -141,8 +141,7 @@ public class EventPublisher { | @@ -141,8 +141,7 @@ public class EventPublisher { | ||
| 141 | 141 | ||
| 142 | @Async | 142 | @Async |
| 143 | public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) { | 143 | public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) { |
| 144 | - List<GbStream> gbStreamList = new ArrayList<>(); | ||
| 145 | - gbStreamList.add(gbStream); | ||
| 146 | - catalogEventPublishForStream(platformId, gbStreamList, type); | 144 | + GbStream[] gbStreams = {gbStream}; |
| 145 | + catalogEventPublishForStream(platformId, gbStreams, type); | ||
| 147 | } | 146 | } |
| 148 | } | 147 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java
| @@ -20,7 +20,7 @@ public class CatalogEvent extends ApplicationEvent { | @@ -20,7 +20,7 @@ public class CatalogEvent extends ApplicationEvent { | ||
| 20 | public static final String UPDATE = "UPDATE"; // 更新 | 20 | public static final String UPDATE = "UPDATE"; // 更新 |
| 21 | 21 | ||
| 22 | private List<DeviceChannel> deviceChannels; | 22 | private List<DeviceChannel> deviceChannels; |
| 23 | - private List<GbStream> gbStreams; | 23 | + private GbStream[] gbStreams; |
| 24 | private String type; | 24 | private String type; |
| 25 | private String platformId; | 25 | private String platformId; |
| 26 | 26 | ||
| @@ -48,11 +48,11 @@ public class CatalogEvent extends ApplicationEvent { | @@ -48,11 +48,11 @@ public class CatalogEvent extends ApplicationEvent { | ||
| 48 | this.platformId = platformId; | 48 | this.platformId = platformId; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | - public List<GbStream> getGbStreams() { | 51 | + public GbStream[] getGbStreams() { |
| 52 | return gbStreams; | 52 | return gbStreams; |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | - public void setGbStreams(List<GbStream> gbStreams) { | 55 | + public void setGbStreams(GbStream[] gbStreams) { |
| 56 | this.gbStreams = gbStreams; | 56 | this.gbStreams = gbStreams; |
| 57 | } | 57 | } |
| 58 | } | 58 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
| @@ -94,7 +94,7 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { | @@ -94,7 +94,7 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { | ||
| 94 | if (event.getDeviceChannels() != null) { | 94 | if (event.getDeviceChannels() != null) { |
| 95 | deviceChannelList.addAll(event.getDeviceChannels()); | 95 | deviceChannelList.addAll(event.getDeviceChannels()); |
| 96 | } | 96 | } |
| 97 | - if (event.getGbStreams() != null && event.getGbStreams().size() > 0){ | 97 | + if (event.getGbStreams() != null && event.getGbStreams().length > 0){ |
| 98 | for (GbStream gbStream : event.getGbStreams()) { | 98 | for (GbStream gbStream : event.getGbStreams()) { |
| 99 | DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform.getDeviceGBId()); | 99 | DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform.getDeviceGBId()); |
| 100 | deviceChannelList.add(deviceChannelByStream); | 100 | deviceChannelList.add(deviceChannelByStream); |
| @@ -134,7 +134,7 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { | @@ -134,7 +134,7 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { | ||
| 134 | if (event.getDeviceChannels() != null) { | 134 | if (event.getDeviceChannels() != null) { |
| 135 | deviceChannelList.addAll(event.getDeviceChannels()); | 135 | deviceChannelList.addAll(event.getDeviceChannels()); |
| 136 | } | 136 | } |
| 137 | - if (event.getGbStreams() != null && event.getGbStreams().size() > 0){ | 137 | + if (event.getGbStreams() != null && event.getGbStreams().length > 0){ |
| 138 | for (GbStream gbStream : event.getGbStreams()) { | 138 | for (GbStream gbStream : event.getGbStreams()) { |
| 139 | DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform.getDeviceGBId()); | 139 | DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform.getDeviceGBId()); |
| 140 | deviceChannelList.add(deviceChannelByStream); | 140 | deviceChannelList.add(deviceChannelByStream); |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
| @@ -371,7 +371,7 @@ public class ZLMHttpHookListener { | @@ -371,7 +371,7 @@ public class ZLMHttpHookListener { | ||
| 371 | } | 371 | } |
| 372 | } | 372 | } |
| 373 | if (gbStreams.size() > 0) { | 373 | if (gbStreams.size() > 0) { |
| 374 | - eventPublisher.catalogEventPublishForStream(null, gbStreams, CatalogEvent.ON); | 374 | + eventPublisher.catalogEventPublishForStream(null, gbStreams.toArray(new GbStream[0]), CatalogEvent.ON); |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | }else { | 377 | }else { |
src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java
| @@ -68,4 +68,6 @@ public interface IStreamPushService { | @@ -68,4 +68,6 @@ public interface IStreamPushService { | ||
| 68 | void batchAdd(List<StreamPushItem> streamPushExcelDtoList); | 68 | void batchAdd(List<StreamPushItem> streamPushExcelDtoList); |
| 69 | 69 | ||
| 70 | boolean batchStop(List<GbStream> streamPushItems); | 70 | boolean batchStop(List<GbStream> streamPushItems); |
| 71 | + | ||
| 72 | + void batchAddForUpload(String platformId, String catalogId, List<StreamPushItem> streamPushItems); | ||
| 71 | } | 73 | } |
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
| @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.conf.UserSetup; | @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.conf.UserSetup; | ||
| 8 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 8 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; |
| 9 | import com.genersoft.iot.vmp.gb28181.bean.GbStream; | 9 | import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
| 10 | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 10 | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; |
| 11 | +import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog; | ||
| 11 | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; | 12 | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; |
| 12 | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; | 13 | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; |
| 13 | import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe; | 14 | import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe; |
| @@ -18,10 +19,7 @@ import com.genersoft.iot.vmp.service.IGbStreamService; | @@ -18,10 +19,7 @@ import com.genersoft.iot.vmp.service.IGbStreamService; | ||
| 18 | import com.genersoft.iot.vmp.service.IMediaServerService; | 19 | import com.genersoft.iot.vmp.service.IMediaServerService; |
| 19 | import com.genersoft.iot.vmp.service.IStreamPushService; | 20 | import com.genersoft.iot.vmp.service.IStreamPushService; |
| 20 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 21 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| 21 | -import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; | ||
| 22 | -import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper; | ||
| 23 | -import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; | ||
| 24 | -import com.genersoft.iot.vmp.storager.dao.StreamPushMapper; | 22 | +import com.genersoft.iot.vmp.storager.dao.*; |
| 25 | import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; | 23 | import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; |
| 26 | import com.github.pagehelper.PageHelper; | 24 | import com.github.pagehelper.PageHelper; |
| 27 | import com.github.pagehelper.PageInfo; | 25 | import com.github.pagehelper.PageInfo; |
| @@ -44,6 +42,9 @@ public class StreamPushServiceImpl implements IStreamPushService { | @@ -44,6 +42,9 @@ public class StreamPushServiceImpl implements IStreamPushService { | ||
| 44 | private ParentPlatformMapper parentPlatformMapper; | 42 | private ParentPlatformMapper parentPlatformMapper; |
| 45 | 43 | ||
| 46 | @Autowired | 44 | @Autowired |
| 45 | + private PlatformCatalogMapper platformCatalogMapper; | ||
| 46 | + | ||
| 47 | + @Autowired | ||
| 47 | private PlatformGbStreamMapper platformGbStreamMapper; | 48 | private PlatformGbStreamMapper platformGbStreamMapper; |
| 48 | 49 | ||
| 49 | @Autowired | 50 | @Autowired |
| @@ -95,13 +96,12 @@ public class StreamPushServiceImpl implements IStreamPushService { | @@ -95,13 +96,12 @@ public class StreamPushServiceImpl implements IStreamPushService { | ||
| 95 | streamPushItem.setMediaServerId(item.getMediaServerId()); | 96 | streamPushItem.setMediaServerId(item.getMediaServerId()); |
| 96 | streamPushItem.setStream(item.getStream()); | 97 | streamPushItem.setStream(item.getStream()); |
| 97 | streamPushItem.setAliveSecond(item.getAliveSecond()); | 98 | streamPushItem.setAliveSecond(item.getAliveSecond()); |
| 98 | - streamPushItem.setCreateStamp(item.getCreateStamp()); | ||
| 99 | streamPushItem.setOriginSock(item.getOriginSock()); | 99 | streamPushItem.setOriginSock(item.getOriginSock()); |
| 100 | streamPushItem.setTotalReaderCount(item.getTotalReaderCount()); | 100 | streamPushItem.setTotalReaderCount(item.getTotalReaderCount()); |
| 101 | streamPushItem.setOriginType(item.getOriginType()); | 101 | streamPushItem.setOriginType(item.getOriginType()); |
| 102 | streamPushItem.setOriginTypeStr(item.getOriginTypeStr()); | 102 | streamPushItem.setOriginTypeStr(item.getOriginTypeStr()); |
| 103 | streamPushItem.setOriginUrl(item.getOriginUrl()); | 103 | streamPushItem.setOriginUrl(item.getOriginUrl()); |
| 104 | - streamPushItem.setCreateStamp(item.getCreateStamp()); | 104 | + streamPushItem.setCreateStamp(item.getCreateStamp() * 1000); |
| 105 | streamPushItem.setAliveSecond(item.getAliveSecond()); | 105 | streamPushItem.setAliveSecond(item.getAliveSecond()); |
| 106 | streamPushItem.setStatus(true); | 106 | streamPushItem.setStatus(true); |
| 107 | streamPushItem.setStreamType("push"); | 107 | streamPushItem.setStreamType("push"); |
| @@ -359,6 +359,27 @@ public class StreamPushServiceImpl implements IStreamPushService { | @@ -359,6 +359,27 @@ public class StreamPushServiceImpl implements IStreamPushService { | ||
| 359 | } | 359 | } |
| 360 | 360 | ||
| 361 | @Override | 361 | @Override |
| 362 | + public void batchAddForUpload(String platformId, String catalogId, List<StreamPushItem> streamPushItems) { | ||
| 363 | + streamPushMapper.addAll(streamPushItems); | ||
| 364 | + gbStreamMapper.batchAdd(streamPushItems); | ||
| 365 | + if (platformId != null) { | ||
| 366 | + ParentPlatform platform = parentPlatformMapper.getParentPlatByServerGBId(platformId); | ||
| 367 | + if (platform != null) { | ||
| 368 | + if (catalogId == null) { | ||
| 369 | + catalogId = platform.getCatalogId(); | ||
| 370 | + }else { | ||
| 371 | + PlatformCatalog catalog = platformCatalogMapper.select(catalogId); | ||
| 372 | + if (catalog == null) { | ||
| 373 | + return; | ||
| 374 | + } | ||
| 375 | + } | ||
| 376 | + platformGbStreamMapper.batchAdd(platformId, catalogId, streamPushItems); | ||
| 377 | + eventPublisher.catalogEventPublishForStream(platformId, streamPushItems.toArray(new GbStream[0]), CatalogEvent.ADD); | ||
| 378 | + } | ||
| 379 | + } | ||
| 380 | + } | ||
| 381 | + | ||
| 382 | + @Override | ||
| 362 | public boolean batchStop(List<GbStream> gbStreams) { | 383 | public boolean batchStop(List<GbStream> gbStreams) { |
| 363 | if (gbStreams == null || gbStreams.size() == 0) { | 384 | if (gbStreams == null || gbStreams.size() == 0) { |
| 364 | return false; | 385 | return false; |
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
| @@ -7,10 +7,7 @@ import com.genersoft.iot.vmp.service.IStreamPushService; | @@ -7,10 +7,7 @@ import com.genersoft.iot.vmp.service.IStreamPushService; | ||
| 7 | import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; | 7 | import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; |
| 8 | import org.springframework.util.StringUtils; | 8 | import org.springframework.util.StringUtils; |
| 9 | 9 | ||
| 10 | -import java.util.ArrayList; | ||
| 11 | -import java.util.HashSet; | ||
| 12 | -import java.util.List; | ||
| 13 | -import java.util.Set; | 10 | +import java.util.*; |
| 14 | 11 | ||
| 15 | public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPushExcelDto> { | 12 | public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPushExcelDto> { |
| 16 | 13 | ||
| @@ -18,10 +15,13 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | @@ -18,10 +15,13 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | ||
| 18 | private IStreamPushService pushService; | 15 | private IStreamPushService pushService; |
| 19 | private String defaultMediaServerId; | 16 | private String defaultMediaServerId; |
| 20 | private List<StreamPushItem> streamPushItems = new ArrayList<>(); | 17 | private List<StreamPushItem> streamPushItems = new ArrayList<>(); |
| 18 | + private Map<String, UploadData> streamPushItemsForPlatform = new HashMap<>(); | ||
| 21 | private Set<String> streamPushStreamSet = new HashSet<>(); | 19 | private Set<String> streamPushStreamSet = new HashSet<>(); |
| 22 | private Set<String> streamPushGBSet = new HashSet<>(); | 20 | private Set<String> streamPushGBSet = new HashSet<>(); |
| 23 | private List<String> errorStreamList = new ArrayList<>(); | 21 | private List<String> errorStreamList = new ArrayList<>(); |
| 24 | private List<String> errorGBList = new ArrayList<>(); | 22 | private List<String> errorGBList = new ArrayList<>(); |
| 23 | + // 读取数量计数器 | ||
| 24 | + private int loadedSize = 0; | ||
| 25 | 25 | ||
| 26 | public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId, ErrorDataHandler errorDataHandler) { | 26 | public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId, ErrorDataHandler errorDataHandler) { |
| 27 | this.pushService = pushService; | 27 | this.pushService = pushService; |
| @@ -33,6 +33,16 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | @@ -33,6 +33,16 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | ||
| 33 | void handle(List<String> streams, List<String> gbId); | 33 | void handle(List<String> streams, List<String> gbId); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | + private class UploadData{ | ||
| 37 | + public String platformId; | ||
| 38 | + public Map<String, List<StreamPushItem>> catalogData = new HashMap<>(); | ||
| 39 | + public List<StreamPushItem> streamPushItems = new ArrayList<>(); | ||
| 40 | + | ||
| 41 | + public UploadData(String platformId) { | ||
| 42 | + this.platformId = platformId; | ||
| 43 | + } | ||
| 44 | + } | ||
| 45 | + | ||
| 36 | @Override | 46 | @Override |
| 37 | public void invoke(StreamPushExcelDto streamPushExcelDto, AnalysisContext analysisContext) { | 47 | public void invoke(StreamPushExcelDto streamPushExcelDto, AnalysisContext analysisContext) { |
| 38 | if (StringUtils.isEmpty(streamPushExcelDto.getApp()) | 48 | if (StringUtils.isEmpty(streamPushExcelDto.getApp()) |
| @@ -43,10 +53,10 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | @@ -43,10 +53,10 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | ||
| 43 | if (streamPushGBSet.contains(streamPushExcelDto.getGbId())) { | 53 | if (streamPushGBSet.contains(streamPushExcelDto.getGbId())) { |
| 44 | errorGBList.add(streamPushExcelDto.getGbId()); | 54 | errorGBList.add(streamPushExcelDto.getGbId()); |
| 45 | } | 55 | } |
| 46 | - if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { | 56 | + if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) { |
| 47 | errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()); | 57 | errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()); |
| 48 | } | 58 | } |
| 49 | - if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { | 59 | + if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) { |
| 50 | return; | 60 | return; |
| 51 | } | 61 | } |
| 52 | 62 | ||
| @@ -62,24 +72,69 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | @@ -62,24 +72,69 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus | ||
| 62 | streamPushItem.setOriginType(2); | 72 | streamPushItem.setOriginType(2); |
| 63 | streamPushItem.setOriginTypeStr("rtsp_push"); | 73 | streamPushItem.setOriginTypeStr("rtsp_push"); |
| 64 | streamPushItem.setTotalReaderCount("0"); | 74 | streamPushItem.setTotalReaderCount("0"); |
| 65 | - streamPushItems.add(streamPushItem); | 75 | + streamPushItem.setPlatformId(streamPushExcelDto.getPlatformId()); |
| 76 | + streamPushItem.setCatalogId(streamPushExcelDto.getCatalogId()); | ||
| 77 | + if (StringUtils.isEmpty(streamPushExcelDto.getPlatformId())) { | ||
| 78 | + streamPushItems.add(streamPushItem); | ||
| 79 | + }else { | ||
| 80 | + UploadData uploadData = streamPushItemsForPlatform.get(streamPushExcelDto.getPlatformId()); | ||
| 81 | + if (uploadData == null) { | ||
| 82 | + uploadData = new UploadData(streamPushExcelDto.getPlatformId()); | ||
| 83 | + streamPushItemsForPlatform.put(streamPushExcelDto.getPlatformId(), uploadData); | ||
| 84 | + } | ||
| 85 | + if (!StringUtils.isEmpty(streamPushExcelDto.getCatalogId())) { | ||
| 86 | + List<StreamPushItem> streamPushItems = uploadData.catalogData.get(streamPushExcelDto.getCatalogId()); | ||
| 87 | + if (streamPushItems == null) { | ||
| 88 | + streamPushItems = new ArrayList<>(); | ||
| 89 | + uploadData.catalogData.put(streamPushExcelDto.getCatalogId(), streamPushItems); | ||
| 90 | + } | ||
| 91 | + streamPushItems.add(streamPushItem); | ||
| 92 | + }else { | ||
| 93 | + uploadData.streamPushItems.add(streamPushItem); | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + } | ||
| 97 | + | ||
| 66 | streamPushGBSet.add(streamPushExcelDto.getGbId()); | 98 | streamPushGBSet.add(streamPushExcelDto.getGbId()); |
| 67 | streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()); | 99 | streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()); |
| 68 | - if (streamPushItems.size() > 300) { | ||
| 69 | - pushService.batchAdd(streamPushItems); | ||
| 70 | - // 存储完成清理 list | 100 | + loadedSize ++; |
| 101 | + if (loadedSize > 1000) { | ||
| 102 | + saveData(); | ||
| 71 | streamPushItems.clear(); | 103 | streamPushItems.clear(); |
| 104 | + streamPushItemsForPlatform.clear(); | ||
| 105 | + loadedSize = 0; | ||
| 72 | } | 106 | } |
| 107 | + | ||
| 73 | } | 108 | } |
| 74 | 109 | ||
| 75 | @Override | 110 | @Override |
| 76 | public void doAfterAllAnalysed(AnalysisContext analysisContext) { | 111 | public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
| 77 | // 这里也要保存数据,确保最后遗留的数据也存储到数据库 | 112 | // 这里也要保存数据,确保最后遗留的数据也存储到数据库 |
| 78 | - if (streamPushItems.size() > 0) { | ||
| 79 | - pushService.batchAdd(streamPushItems); | ||
| 80 | - } | 113 | + saveData(); |
| 81 | streamPushGBSet.clear(); | 114 | streamPushGBSet.clear(); |
| 82 | streamPushStreamSet.clear(); | 115 | streamPushStreamSet.clear(); |
| 83 | errorDataHandler.handle(errorStreamList, errorGBList); | 116 | errorDataHandler.handle(errorStreamList, errorGBList); |
| 84 | } | 117 | } |
| 118 | + | ||
| 119 | + private void saveData(){ | ||
| 120 | + if (streamPushItems.size() > 0) { | ||
| 121 | + pushService.batchAddForUpload(null, null, streamPushItems); | ||
| 122 | + } | ||
| 123 | + // 处理已分配到平台的流 | ||
| 124 | + if (streamPushItemsForPlatform.size() > 0){ | ||
| 125 | + for (String platformId : streamPushItemsForPlatform.keySet()) { | ||
| 126 | + UploadData uploadData = streamPushItemsForPlatform.get(platformId); | ||
| 127 | + if (uploadData.streamPushItems.size() > 0) { | ||
| 128 | + pushService.batchAddForUpload(platformId, null, uploadData.streamPushItems); | ||
| 129 | + } | ||
| 130 | + if (uploadData.catalogData.size() > 0) { | ||
| 131 | + for (String catalogId : uploadData.catalogData.keySet()) { | ||
| 132 | + if (uploadData.catalogData.get(catalogId).size() > 0) { | ||
| 133 | + pushService.batchAddForUpload(platformId, catalogId, uploadData.catalogData.get(catalogId)); | ||
| 134 | + } | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | + } | ||
| 138 | + } | ||
| 139 | + } | ||
| 85 | } | 140 | } |
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java
| @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | ||
| 5 | import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog; | 5 | import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog; |
| 6 | import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; | 6 | import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
| 7 | import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; | 7 | import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
| 8 | +import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; | ||
| 8 | import org.apache.ibatis.annotations.*; | 9 | import org.apache.ibatis.annotations.*; |
| 9 | import org.springframework.stereotype.Repository; | 10 | import org.springframework.stereotype.Repository; |
| 10 | 11 | ||
| @@ -19,6 +20,17 @@ public interface PlatformGbStreamMapper { | @@ -19,6 +20,17 @@ public interface PlatformGbStreamMapper { | ||
| 19 | "('${app}', '${stream}', '${platformId}', '${catalogId}')") | 20 | "('${app}', '${stream}', '${platformId}', '${catalogId}')") |
| 20 | int add(PlatformGbStream platformGbStream); | 21 | int add(PlatformGbStream platformGbStream); |
| 21 | 22 | ||
| 23 | + | ||
| 24 | + @Insert("<script> " + | ||
| 25 | + "REPLACE into platform_gb_stream " + | ||
| 26 | + "(app, stream, platformId, catalogId) " + | ||
| 27 | + "values " + | ||
| 28 | + "<foreach collection='streamPushItems' index='index' item='item' separator=','> " + | ||
| 29 | + "('${item.app}', '${item.stream}', '${platformId}', '${catalogId}')" + | ||
| 30 | + "</foreach> " + | ||
| 31 | + "</script>") | ||
| 32 | + int batchAdd(String platformId, String catalogId, List<StreamPushItem> streamPushItems); | ||
| 33 | + | ||
| 22 | @Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream}") | 34 | @Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream}") |
| 23 | int delByAppAndStream(String app, String stream); | 35 | int delByAppAndStream(String app, String stream); |
| 24 | 36 | ||
| @@ -82,4 +94,7 @@ public interface PlatformGbStreamMapper { | @@ -82,4 +94,7 @@ public interface PlatformGbStreamMapper { | ||
| 82 | "</foreach>" + | 94 | "</foreach>" + |
| 83 | "</script>") | 95 | "</script>") |
| 84 | void delByGbStreams(List<GbStream> gbStreams); | 96 | void delByGbStreams(List<GbStream> gbStreams); |
| 97 | + | ||
| 98 | + | ||
| 99 | + | ||
| 85 | } | 100 | } |
src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamPushExcelDto.java
| @@ -16,6 +16,12 @@ public class StreamPushExcelDto { | @@ -16,6 +16,12 @@ public class StreamPushExcelDto { | ||
| 16 | @ExcelProperty("国标ID") | 16 | @ExcelProperty("国标ID") |
| 17 | private String gbId; | 17 | private String gbId; |
| 18 | 18 | ||
| 19 | + @ExcelProperty("平台ID") | ||
| 20 | + private String platformId; | ||
| 21 | + | ||
| 22 | + @ExcelProperty("目录ID") | ||
| 23 | + private String catalogId; | ||
| 24 | + | ||
| 19 | public String getName() { | 25 | public String getName() { |
| 20 | return name; | 26 | return name; |
| 21 | } | 27 | } |
| @@ -47,4 +53,21 @@ public class StreamPushExcelDto { | @@ -47,4 +53,21 @@ public class StreamPushExcelDto { | ||
| 47 | public void setGbId(String gbId) { | 53 | public void setGbId(String gbId) { |
| 48 | this.gbId = gbId; | 54 | this.gbId = gbId; |
| 49 | } | 55 | } |
| 56 | + | ||
| 57 | + | ||
| 58 | + public String getPlatformId() { | ||
| 59 | + return platformId; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public void setPlatformId(String platformId) { | ||
| 63 | + this.platformId = platformId; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public String getCatalogId() { | ||
| 67 | + return catalogId; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public void setCatalogId(String catalogId) { | ||
| 71 | + this.catalogId = catalogId; | ||
| 72 | + } | ||
| 50 | } | 73 | } |
web_src/src/components/PushVideoList.vue
| @@ -233,7 +233,7 @@ | @@ -233,7 +233,7 @@ | ||
| 233 | dateFormat: function(/** timestamp=0 **/) { | 233 | dateFormat: function(/** timestamp=0 **/) { |
| 234 | let ts = arguments[0] || 0; | 234 | let ts = arguments[0] || 0; |
| 235 | let t,y,m,d,h,i,s; | 235 | let t,y,m,d,h,i,s; |
| 236 | - t = ts ? new Date(ts*1000) : new Date(); | 236 | + t = ts ? new Date(ts) : new Date(); |
| 237 | y = t.getFullYear(); | 237 | y = t.getFullYear(); |
| 238 | m = t.getMonth()+1; | 238 | m = t.getMonth()+1; |
| 239 | d = t.getDate(); | 239 | d = t.getDate(); |