优化部分sql实现
This commit is contained in:
@@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.service;
|
||||
|
||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
|
||||
|
||||
import java.util.List;
|
||||
@@ -38,7 +38,7 @@ public interface IDeviceChannelService {
|
||||
* 获取统计信息
|
||||
* @return
|
||||
*/
|
||||
ResourceBaceInfo getOverview();
|
||||
ResourceBaseInfo getOverview();
|
||||
|
||||
/**
|
||||
* 查询所有未分配的通道
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.BaseTree;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -162,7 +162,7 @@ public interface IDeviceService {
|
||||
* 获取统计信息
|
||||
* @return
|
||||
*/
|
||||
ResourceBaceInfo getOverview();
|
||||
ResourceBaseInfo getOverview();
|
||||
|
||||
/**
|
||||
* 获取所有设备
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
public interface IStreamProxyService {
|
||||
@@ -108,6 +108,6 @@ public interface IStreamProxyService {
|
||||
* 获取统计信息
|
||||
* @return
|
||||
*/
|
||||
ResourceBaceInfo getOverview();
|
||||
ResourceBaseInfo getOverview();
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -113,5 +113,5 @@ public interface IStreamPushService {
|
||||
* 获取统计信息
|
||||
* @return
|
||||
*/
|
||||
ResourceBaceInfo getOverview();
|
||||
ResourceBaseInfo getOverview();
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
|
||||
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -175,8 +175,12 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceBaceInfo getOverview() {
|
||||
return channelMapper.getOverview();
|
||||
public ResourceBaseInfo getOverview() {
|
||||
|
||||
int online = channelMapper.getOnlineCount();
|
||||
int total = channelMapper.getAllChannelCount();
|
||||
|
||||
return new ResourceBaseInfo(total, online);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
|
||||
import com.genersoft.iot.vmp.storager.dao.PlatformChannelMapper;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.BaseTree;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -652,8 +652,10 @@ public class DeviceServiceImpl implements IDeviceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceBaceInfo getOverview() {
|
||||
return deviceMapper.getOverview();
|
||||
public ResourceBaseInfo getOverview() {
|
||||
List<Device> onlineDevices = deviceMapper.getOnlineDevices();
|
||||
List<Device> all = deviceMapper.getAll();
|
||||
return new ResourceBaseInfo(all.size(), onlineDevices.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -110,7 +110,7 @@ public class GbStreamServiceImpl implements IGbStreamService {
|
||||
deviceChannel.setLatitude(gbStream.getLatitude());
|
||||
deviceChannel.setDeviceId(platform.getDeviceGBId());
|
||||
deviceChannel.setManufacture("wvp-pro");
|
||||
deviceChannel.setStatus(gbStream.isStatus()?1:0);
|
||||
deviceChannel.setStatus(gbStream.isStatus());
|
||||
|
||||
deviceChannel.setRegisterWay(1);
|
||||
deviceChannel.setCivilCode(platform.getAdministrativeDivision());
|
||||
@@ -218,7 +218,7 @@ public class GbStreamServiceImpl implements IGbStreamService {
|
||||
}else {
|
||||
status = gbStreamMapper.selectStatusForPush(gbStream.getApp(), gbStream.getStream());
|
||||
}
|
||||
deviceChannel.setStatus((status != null && status )?1:0);
|
||||
deviceChannel.setStatus(status != null && status);
|
||||
|
||||
deviceChannel.setRegisterWay(1);
|
||||
deviceChannel.setCivilCode(platform.getAdministrativeDivision());
|
||||
|
||||
@@ -685,7 +685,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
// 缓存不存在,从数据库查询,如果数据库不存在则是错误的
|
||||
mediaServerItem = getOneFromDatabase(mediaServerId);
|
||||
if (mediaServerItem == null) {
|
||||
logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息");
|
||||
logger.warn("[更新ZLM 保活信息] 流媒体{}尚未加入使用,请检查节点中是否含有此流媒体 ", mediaServerId);
|
||||
return;
|
||||
}
|
||||
// zlm连接重试
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
|
||||
import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -438,7 +438,11 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceBaceInfo getOverview() {
|
||||
return streamProxyMapper.getOverview();
|
||||
public ResourceBaseInfo getOverview() {
|
||||
|
||||
int total = streamProxyMapper.getAllCount();
|
||||
int online = streamProxyMapper.getOnline();
|
||||
|
||||
return new ResourceBaseInfo(total, online);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
import com.genersoft.iot.vmp.storager.dao.*;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.slf4j.Logger;
|
||||
@@ -531,7 +531,10 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceBaceInfo getOverview() {
|
||||
return streamPushMapper.getOverview(userSetting.isUsePushingAsStatus());
|
||||
public ResourceBaseInfo getOverview() {
|
||||
int total = streamPushMapper.getAllCount();
|
||||
int online = streamPushMapper.getAllOnline(userSetting.isUsePushingAsStatus());
|
||||
|
||||
return new ResourceBaseInfo(total, online);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto;
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -33,38 +32,43 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
|
||||
/**
|
||||
* 用于存储不加过滤的所有数据
|
||||
*/
|
||||
private List<StreamPushItem> streamPushItems = new ArrayList<>();
|
||||
private final List<StreamPushItem> streamPushItems = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 用于存储更具APP+Stream过滤后的数据,可以直接存入stream_push表与gb_stream表
|
||||
*/
|
||||
private Map<String,StreamPushItem> streamPushItemForSave = new HashMap<>();
|
||||
private final Map<String,StreamPushItem> streamPushItemForSave = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 用于存储按照APP+Stream为KEY, 平台ID+目录Id 为value的数据,用于存储到gb_stream表后获取app+Stream对应的平台与目录信息,然后存入关联表
|
||||
*/
|
||||
private Map<String, List<String[]>> streamPushItemsForPlatform = new HashMap<>();
|
||||
private final Map<String, List<String[]>> streamPushItemsForPlatform = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 用于判断文件是否存在重复的app+Stream+平台ID
|
||||
*/
|
||||
private Set<String> streamPushStreamSet = new HashSet<>();
|
||||
private final Set<String> streamPushStreamSet = new HashSet<>();
|
||||
|
||||
/**
|
||||
* 用于存储APP+Stream->国标ID 的数据结构, 数据一一对应,全局判断APP+Stream->国标ID是否存在不对应
|
||||
*/
|
||||
private BiMap<String,String> gBMap = HashBiMap.create();
|
||||
private final BiMap<String,String> gBMap = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* 用于存储APP+Stream-> 在数据库中的数据
|
||||
*/
|
||||
private final BiMap<String,String> pushMapInDb = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* 记录错误的APP+Stream
|
||||
*/
|
||||
private List<String> errorStreamList = new ArrayList<>();
|
||||
private final List<String> errorStreamList = new ArrayList<>();
|
||||
|
||||
|
||||
/**
|
||||
* 记录错误的国标ID
|
||||
*/
|
||||
private List<String> errorGBList = new ArrayList<>();
|
||||
private final List<String> errorInfoList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 读取数量计数器
|
||||
@@ -75,6 +79,13 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
|
||||
this.pushService = pushService;
|
||||
this.defaultMediaServerId = defaultMediaServerId;
|
||||
this.errorDataHandler = errorDataHandler;
|
||||
// 获取数据库已有的数据,已经存在的则忽略
|
||||
List<String> allAppAndStreams = pushService.getAllAppAndStream();
|
||||
if (allAppAndStreams.size() > 0) {
|
||||
for (String allAppAndStream : allAppAndStreams) {
|
||||
pushMapInDb.put(allAppAndStream, allAppAndStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface ErrorDataHandler{
|
||||
@@ -88,26 +99,30 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
|
||||
|| ObjectUtils.isEmpty(streamPushExcelDto.getGbId())) {
|
||||
return;
|
||||
}
|
||||
Integer rowIndex = analysisContext.readRowHolder().getRowIndex();
|
||||
|
||||
if (gBMap.get(streamPushExcelDto.getApp() + streamPushExcelDto.getStream()) == null) {
|
||||
try {
|
||||
gBMap.put(streamPushExcelDto.getApp() + streamPushExcelDto.getStream(), streamPushExcelDto.getGbId());
|
||||
}catch (IllegalArgumentException e) {
|
||||
errorGBList.add(streamPushExcelDto.getGbId() + "(不同的app+stream使用了相同的国标ID)");
|
||||
errorInfoList.add("行:" + rowIndex + ", " + streamPushExcelDto.getGbId() + " 国标ID重复使用");
|
||||
return;
|
||||
}
|
||||
}else {
|
||||
if (!gBMap.get(streamPushExcelDto.getApp() + streamPushExcelDto.getStream()).equals(streamPushExcelDto.getGbId())) {
|
||||
errorGBList.add(streamPushExcelDto.getGbId() + "(同一组app+stream使用了不同的国标ID)");
|
||||
errorInfoList.add("行:" + rowIndex + ", " + streamPushExcelDto.getGbId() + " 同样的应用名和流ID使用了不同的国标ID");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId())) {
|
||||
errorStreamList.add(streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()+ "/" +
|
||||
streamPushExcelDto.getPlatformId() + "(同一组app+stream添加在了同一个平台下)");
|
||||
errorStreamList.add("行:" + rowIndex + ", " + streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()+ " 平台信息重复");
|
||||
return;
|
||||
}else {
|
||||
if (pushMapInDb.get(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()) != null) {
|
||||
errorStreamList.add("行:" + rowIndex + ", " + streamPushExcelDto.getApp() + "/" + streamPushExcelDto.getStream()+ " 数据已存在");
|
||||
return;
|
||||
}
|
||||
streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream() + streamPushExcelDto.getPlatformId());
|
||||
}
|
||||
|
||||
@@ -165,7 +180,7 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
|
||||
gBMap.clear();
|
||||
streamPushStreamSet.clear();
|
||||
streamPushItemsForPlatform.clear();
|
||||
errorDataHandler.handle(errorStreamList, errorGBList);
|
||||
errorDataHandler.handle(errorStreamList, errorInfoList);
|
||||
}
|
||||
|
||||
private void saveData(){
|
||||
|
||||
Reference in New Issue
Block a user