优化部分sql实现

This commit is contained in:
648540858
2023-05-15 15:29:39 +08:00
parent d849352441
commit 5d40080468
26 changed files with 191 additions and 115 deletions

View File

@@ -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();
/**
* 查询所有未分配的通道

View File

@@ -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();
/**
* 获取所有设备

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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());

View File

@@ -685,7 +685,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
// 缓存不存在,从数据库查询,如果数据库不存在则是错误的
mediaServerItem = getOneFromDatabase(mediaServerId);
if (mediaServerItem == null) {
logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息");
logger.warn("[更新ZLM 保活信息] 流媒体{}尚未加入使用,请检查节点中是否含有此流媒体 ", mediaServerId);
return;
}
// zlm连接重试

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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(){