diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java index 0e1b61817..f7ef12d32 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java @@ -172,7 +172,7 @@ public class DeviceChannel { * 遇到过NVR下的IPC下发信令可以推流, 但是 Status 响应 OFF */ @Schema(description = "在线/离线, 1在线,0离线") - private int status; + private boolean status; /** * 经度 @@ -455,11 +455,11 @@ public class DeviceChannel { this.PTZTypeText = PTZTypeText; } - public int getStatus() { + public boolean isStatus() { return status; } - public void setStatus(int status) { + public void setStatus(boolean status) { this.status = status; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java index acfb880b9..0332aabe6 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java @@ -66,7 +66,7 @@ public interface ISIPCommanderForPlatform { * @param fromTag * @return */ - void deviceStatusResponse(ParentPlatform parentPlatform,String channelId, String sn, String fromTag,int status) throws SipException, InvalidArgumentException, ParseException; + void deviceStatusResponse(ParentPlatform parentPlatform,String channelId, String sn, String fromTag,boolean status) throws SipException, InvalidArgumentException, ParseException; /** * 向上级回复移动位置订阅消息 diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index 582fbafe9..b1e21963a 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -221,7 +221,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { if (!channel.getChannelId().equals(parentPlatform.getDeviceGBId())) { catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n"); if (channel.getParental() == 0) { - catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n"); + catalogXml.append("<Status>" + (channel.isStatus() ? "ON" : "OFF") + "</Status>\r\n"); } } if (channel.getParental() == 0) { @@ -250,7 +250,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n"); catalogXml.append("<Password>" + channel.getPort() + "</Password>\r\n"); catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n"); - catalogXml.append("<Status>" + (channel.getStatus() == 1?"ON":"OFF") + "</Status>\r\n"); + catalogXml.append("<Status>" + (channel.isStatus() ? "ON":"OFF") + "</Status>\r\n"); catalogXml.append("<Longitude>" + (channel.getLongitudeWgs84() != 0? channel.getLongitudeWgs84():channel.getLongitude()) + "</Longitude>\r\n"); @@ -377,11 +377,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { * @return */ @Override - public void deviceStatusResponse(ParentPlatform parentPlatform,String channelId, String sn, String fromTag,int status) throws SipException, InvalidArgumentException, ParseException { + public void deviceStatusResponse(ParentPlatform parentPlatform,String channelId, String sn, String fromTag,boolean status) throws SipException, InvalidArgumentException, ParseException { if (parentPlatform == null) { return ; } - String statusStr = (status==1)?"ONLINE":"OFFLINE"; + String statusStr = (status)?"ONLINE":"OFFLINE"; String characterSet = parentPlatform.getCharacterSet(); StringBuffer deviceStatusXml = new StringBuffer(600); deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n") @@ -542,7 +542,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n") .append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n") .append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n") - .append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n"); + .append("<Status>" + (channel.isStatus() ? "ON" : "OFF") + "</Status>\r\n"); if (channel.getChannelType() != 2) { // 业务分组/虚拟组织/行政区划 不设置以下属性 catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n") diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java index e9d44d577..f9edfb396 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java @@ -77,7 +77,7 @@ public class DeviceStatusQueryMessageHandler extends SIPRequestProcessorParent i return; } try { - cmderFroPlatform.deviceStatusResponse(parentPlatform,channelId, sn, fromHeader.getTag(),deviceChannel.getStatus()); + cmderFroPlatform.deviceStatusResponse(parentPlatform,channelId, sn, fromHeader.getTag(),deviceChannel.isStatus()); } catch (SipException | InvalidArgumentException | ParseException e) { logger.error("[命令发送失败] 国标级联 DeviceStatus查询回复: {}", e.getMessage()); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java index d51ab9f59..750cd8b08 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java @@ -255,7 +255,7 @@ public class XmlUtil { } if (channelType.equals(ChannelType.CivilCode)) { // 行政区划其他字段没必要识别了,默认在线即可 - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); deviceChannel.setParental(1); deviceChannel.setCreateTime(DateUtil.getNow()); deviceChannel.setUpdateTime(DateUtil.getNow()); @@ -309,7 +309,7 @@ public class XmlUtil { deviceChannel.setBusinessGroupId(businessGroupID); if (channelType.equals(ChannelType.BusinessGroup) || channelType.equals(ChannelType.VirtualOrganization)) { // 业务分组和虚拟组织 其他字段没必要识别了,默认在线即可 - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); deviceChannel.setParental(1); deviceChannel.setCreateTime(DateUtil.getNow()); deviceChannel.setUpdateTime(DateUtil.getNow()); @@ -322,13 +322,13 @@ public class XmlUtil { String status = statusElement.getTextTrim().trim(); // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR的兼容性处理 if (status.equals("ON") || status.equals("On") || status.equals("ONLINE") || status.equals("OK")) { - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); } if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) { - deviceChannel.setStatus(0); + deviceChannel.setStatus(false); } }else { - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); } // 识别自带的目录标识 String parental = XmlUtil.getText(itemDevice, "Parental"); diff --git a/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java b/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java index 66dbe0772..cd402a109 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java @@ -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(); /** * 查询所有未分配的通道 diff --git a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java index d977c4732..e20c3bf22 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java @@ -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(); /** * 获取所有设备 diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java index de9613ebf..0e1c97bf3 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java @@ -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(); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java index cf6f0ed24..8d9200216 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java @@ -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(); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java index 73adf2e49..45405f708 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java @@ -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); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index 1f46cc632..8dbed114f 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -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 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java index 37e3b9e6e..0cde5fe91 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java @@ -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()); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java index c0d07650d..230ce2774 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -685,7 +685,7 @@ public class MediaServerServiceImpl implements IMediaServerService { // 缓存不存在,从数据库查询,如果数据库不存在则是错误的 mediaServerItem = getOneFromDatabase(mediaServerId); if (mediaServerItem == null) { - logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息"); + logger.warn("[更新ZLM 保活信息] 流媒体{}尚未加入使用,请检查节点中是否含有此流媒体 ", mediaServerId); return; } // zlm连接重试 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index bb99651f6..3037e3f16 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -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); } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java index 6540e3e31..0a03c6602 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java @@ -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); } } 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 1b21995b0..a12715939 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 @@ -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(){ diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index 7940011dd..5628be92f 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -3,7 +3,6 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; -import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend; import org.apache.ibatis.annotations.*; @@ -74,8 +73,8 @@ public interface DeviceChannelMapper { "dc.device_id = #{deviceId} " + " <if test='query != null'> AND (dc.channel_id LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%'))</if> " + " <if test='parentChannelId != null'> AND (dc.parent_id=#{parentChannelId} OR dc.civil_code = #{parentChannelId}) </if> " + - " <if test='online == true' > AND dc.status=1</if>" + - " <if test='online == false' > AND dc.status=0</if>" + + " <if test='online == true' > AND dc.status= true</if>" + + " <if test='online == false' > AND dc.status= false</if>" + " <if test='hasSubChannel == true' > AND dc.sub_count > 0 </if>" + " <if test='hasSubChannel == false' > AND dc.sub_count = 0 </if>" + "<if test='channelIds != null'> AND dc.channel_id in <foreach item='item' index='index' collection='channelIds' open='(' separator=',' close=')'>" + @@ -97,8 +96,8 @@ public interface DeviceChannelMapper { " <if test='device_id != null'> AND dc.device_id = #{deviceId} </if> " + " <if test='query != null'> AND (dc.channel_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " + " <if test='parentChannelId != null'> AND dc.parent_id=#{parentChannelId} </if> " + - " <if test='online == true' > AND dc.status=1</if>" + - " <if test='online == false' > AND dc.status=0</if>" + + " <if test='online == true' > AND dc.status=true</if>" + + " <if test='online == false' > AND dc.status=false</if>" + " <if test='hasSubChannel == true' > AND dc.sub_count > 0 </if>" + " <if test='hasSubChannel == false' > AND dc.sub_count = 0 </if>" + "<if test='channelIds != null'> AND dc.channel_id in <foreach item='item' index='index' collection='channelIds' open='(' separator=',' close=')'>" + @@ -121,8 +120,8 @@ public interface DeviceChannelMapper { " <if test='deviceId != null'> AND dc.device_id = #{deviceId} </if> " + " <if test='query != null'> AND (dc.channel_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " + " <if test='parentChannelId != null'> AND dc.parent_id=#{parentChannelId} </if> " + - " <if test='online == true' > AND dc.status=1</if>" + - " <if test='online == false' > AND dc.status=0</if>" + + " <if test='online == true' > AND dc.status=true</if>" + + " <if test='online == false' > AND dc.status=false</if>" + " <if test='hasSubChannel == true' > AND dc.sub_count > 0 </if>" + " <if test='hasSubChannel == false' > AND dc.sub_count = 0 </if>" + "<if test='channelIds != null'> AND dc.channel_id in <foreach item='item' index='index' collection='channelIds' open='(' separator=',' close=')'>" + @@ -165,8 +164,8 @@ public interface DeviceChannelMapper { " LEFT JOIN wvp_platform_gb_channel pgc on pgc.device_channel_id = dc.id " + " WHERE 1=1 " + " <if test='query != null'> AND (dc.channel_id LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%'))</if> " + - " <if test='online == true' > AND dc.status=1</if> " + - " <if test='online == false' > AND dc.status=0</if> " + + " <if test='online == true' > AND dc.status=true</if> " + + " <if test='online == false' > AND dc.status=false</if> " + " <if test='hasSubChannel!= null and has_sub_channel == true' > AND dc.sub_count > 0</if> " + " <if test='hasSubChannel!= null and has_sub_channel == false' > AND dc.sub_count = 0</if> " + " <if test='catalogId == null ' > AND dc.id not in (select device_channel_id from wvp_platform_gb_channel where platform_id=#{platformId} ) </if> " + @@ -191,10 +190,10 @@ public interface DeviceChannelMapper { @Select("SELECT * FROM wvp_device_channel WHERE channel_id=#{channelId}") List<DeviceChannel> queryChannelByChannelId( String channelId); - @Update(value = {"UPDATE wvp_device_channel SET status=0 WHERE device_id=#{deviceId} AND channel_id=#{channelId}"}) + @Update(value = {"UPDATE wvp_device_channel SET status=false WHERE device_id=#{deviceId} AND channel_id=#{channelId}"}) void offline(String deviceId, String channelId); - @Update(value = {"UPDATE wvp_device_channel SET status=0 WHERE device_id=#{deviceId}"}) + @Update(value = {"UPDATE wvp_device_channel SET status=fasle WHERE device_id=#{deviceId}"}) void offlineByDeviceId(String deviceId); @Insert("<script> " + @@ -271,7 +270,7 @@ public interface DeviceChannelMapper { "</script>") int batchAddOrUpdate(List<DeviceChannel> addChannels); - @Update(value = {"UPDATE wvp_device_channel SET status=1 WHERE device_id=#{deviceId} AND channel_id=#{channelId}"}) + @Update(value = {"UPDATE wvp_device_channel SET status=true WHERE device_id=#{deviceId} AND channel_id=#{channelId}"}) void online(String deviceId, String channelId); @Update({"<script>" + @@ -283,7 +282,7 @@ public interface DeviceChannelMapper { "<if test='item.manufacture != null'>, manufacture=#{item.manufacture}</if>" + "<if test='item.model != null'>, model=#{item.model}</if>" + "<if test='item.owner != null'>, owner=#{item.owner}</if>" + - "<if test='item.civil_code != null'>, civil_code=#{item.civilCode}</if>" + + "<if test='item.civilCode != null'>, civil_code=#{item.civilCode}</if>" + "<if test='item.block != null'>, block=#{item.block}</if>" + "<if test='item.subCount != null'>, sub_count=#{item.subCount}</if>" + "<if test='item.address != null'>, address=#{item.address}</if>" + @@ -317,7 +316,7 @@ public interface DeviceChannelMapper { int batchUpdate(List<DeviceChannel> updateChannels); - @Select("SELECT * FROM wvp_device_channel WHERE device_id=#{deviceId} AND status=1") + @Select("SELECT * FROM wvp_device_channel WHERE device_id=#{deviceId} AND status=true") List<DeviceChannel> queryOnlineChannelsByDeviceId(String deviceId); @Delete(value = {" <script>" + @@ -406,9 +405,6 @@ public interface DeviceChannelMapper { List<DeviceChannel> queryAllChannels(String deviceId); - @Select("select count(1) as total, sum(status) as online from wvp_device_channel") - ResourceBaceInfo getOverview(); - @Select("select channelId" + ", device_id" + ", latitude" + @@ -420,7 +416,7 @@ public interface DeviceChannelMapper { "from wvp_device_channel where device_id = #{deviceId} " + "and latitude != 0 " + "and longitude != 0 " + - "and(latitude_gcj02=0orlatitude_wgs84=0orlongitude_wgs84= 0 or longitude_gcj02 = 0)") + "and(latitude_gcj02=0 or latitude_wgs84=0 or longitude_wgs84= 0 or longitude_gcj02 = 0)") List<DeviceChannel> getChannelsWithoutTransform(String deviceId); @Select("select de.* from wvp_device de left join wvp_device_channel dc on de.device_id = dc.deviceId where dc.channel_id=#{channelId}") @@ -436,15 +432,22 @@ public interface DeviceChannelMapper { @Update({"<script>" + "<foreach collection='channels' item='item' separator=';'>" + - "UPDATE wvp_device_channel SET status=1 WHERE device_id=#{item.deviceId} AND channel_id=#{item.channelId}" + + "UPDATE wvp_device_channel SET status=true WHERE device_id=#{item.deviceId} AND channel_id=#{item.channelId}" + "</foreach>" + "</script>"}) int batchOnline(List<DeviceChannel> channels); @Update({"<script>" + "<foreach collection='channels' item='item' separator=';'>" + - "UPDATE wvp_device_channel SET status=0 WHERE device_id=#{item.deviceId} AND channel_id=#{item.channelId}" + + "UPDATE wvp_device_channel SET status= false WHERE device_id=#{item.deviceId} AND channel_id=#{item.channelId}" + "</foreach>" + "</script>"}) int batchOffline(List<DeviceChannel> channels); + + + @Select("select count(1) from wvp_device_channel where status = true") + int getOnlineCount(); + + @Select("select count(1) from wvp_device_channel") + int getAllChannelCount(); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java index ebf2933c7..75465453f 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java @@ -1,7 +1,6 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.Device; -import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -162,8 +161,10 @@ public interface DeviceMapper { "tree_type,"+ "online,"+ "media_server_id,"+ - "(SELECT count(0) FROM wvp_device_channel WHERE device_id=de.device_id) as channel_count FROM wvp_device de" + + "(SELECT count(0) FROM wvp_device_channel WHERE device_id=de.device_id) as channel_count " + + "FROM wvp_device de" + "<if test=\"online != null\"> where online=${online}</if>"+ + " order by create_time desc "+ " </script>" ) List<Device> getDevices(Boolean online); @@ -288,9 +289,6 @@ public interface DeviceMapper { ")") void addCustomDevice(Device device); - @Select("select count(1) as total, sum(online) as online FROM wvp_device") - ResourceBaceInfo getOverview(); - @Select("select * FROM wvp_device") List<Device> getAll(); diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java index 5f8702c78..e313acea5 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java @@ -117,7 +117,7 @@ public interface GbStreamMapper { void batchDelForGbStream(List<GbStream> gbStreams); @Insert("<script> " + - "INSERT IGNORE into wvp_gb_stream " + + "INSERT into wvp_gb_stream " + "(app, stream, gb_id, name, " + "longitude, latitude, stream_type,media_server_id,create_time)" + "values " + @@ -127,7 +127,7 @@ public interface GbStreamMapper { "#{item.mediaServerId}, #{item.createTime}) "+ "</foreach> " + "</script>") - @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId") + @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gb_stream_id") void batchAdd(List<StreamPushItem> subList); @Update({"<script>" + diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamProxyMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamProxyMapper.java index ec6d870f0..3a1a69ea4 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamProxyMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamProxyMapper.java @@ -1,7 +1,7 @@ package com.genersoft.iot.vmp.storager.dao; 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 org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -78,5 +78,12 @@ public interface StreamProxyMapper { List<StreamProxyItem> selectAutoRemoveItemByMediaServerId(String mediaServerId); @Select("select count(1) as total, sum(status) as online from wvp_stream_proxy") - ResourceBaceInfo getOverview(); + ResourceBaseInfo getOverview(); + + @Select("select count(1) from wvp_stream_proxy") + + int getAllCount(); + + @Select("select count(1) from wvp_stream_proxy where status = true") + int getOnline(); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java index fefdab334..63fea06bb 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java @@ -3,7 +3,6 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.GbStream; 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 org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -89,7 +88,7 @@ public interface StreamPushMapper { StreamPushItem selectOne(String app, String stream); @Insert("<script>" + - "Insert IGNORE INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " + + "Insert INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " + "create_time, alive_second, media_server_id, status, push_ing) " + "VALUES <foreach collection='streamPushItems' item='item' index='index' separator=','>" + "( #{item.app}, #{item.stream}, #{item.totalReaderCount}, #{item.originType}, " + @@ -171,9 +170,20 @@ public interface StreamPushMapper { @Select("SELECT CONCAT(app,stream) from wvp_gb_stream") List<String> getAllAppAndStream(); + @Select("select count(1) from wvp_stream_push ") + int getAllCount(); + @Select(value = {" <script>" + - " <if test='pushIngAsOnline == true'> select count(1) as total, sum(push_ing) as online from wvp_stream_push </if>" + - " <if test='pushIngAsOnline == false'> select count(1) as total, sum(status) as online from wvp_stream_push </if>" + + " <if test='pushIngAsOnline == true'> select count(1) from wvp_stream_push where push_ing = true </if>" + + " <if test='pushIngAsOnline == false'> select count(1)from wvp_stream_push where status = true </if>" + " </script>"}) - ResourceBaceInfo getOverview(boolean pushIngAsOnline); + int getAllOnline(Boolean usePushingAsStatus); + + @Select("<script> " + + "select app, stream from wvp_stream_push where (app, stream) in " + + "<foreach collection='streamPushItems' item='item' separator=','>" + + "(#{item.app}, #{item.stream}) " + + "</foreach>" + + "</script>") + List<StreamPushItem> getListIn(List<StreamPushItem> streamPushItems); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java index cee613dbe..f73339d13 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java @@ -123,6 +123,9 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); // 数据去重 List<DeviceChannel> channels = new ArrayList<>(); + + List<DeviceChannel> updateChannels = new ArrayList<>(); + List<DeviceChannel> addChannels = new ArrayList<>(); StringBuilder stringBuilder = new StringBuilder(); Map<String, Integer> subContMap = new HashMap<>(); if (deviceChannelList.size() > 0) { @@ -131,18 +134,22 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { for (DeviceChannel deviceChannel : deviceChannelList) { if (!gbIdSet.contains(deviceChannel.getChannelId())) { gbIdSet.add(deviceChannel.getChannelId()); + deviceChannel.setUpdateTime(DateUtil.getNow()); if (allChannelMap.containsKey(deviceChannel.getChannelId())) { deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId()); deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio()); - if (allChannelMap.get(deviceChannel.getChannelId()).getStatus() !=deviceChannel.getStatus()){ + if (allChannelMap.get(deviceChannel.getChannelId()).isStatus() !=deviceChannel.isStatus()){ List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId()); if (!CollectionUtils.isEmpty(strings)){ strings.forEach(platformId->{ - eventPublisher.catalogEventPublish(platformId, deviceChannel, deviceChannel.getStatus()==1?CatalogEvent.ON:CatalogEvent.OFF); + eventPublisher.catalogEventPublish(platformId, deviceChannel, deviceChannel.isStatus()?CatalogEvent.ON:CatalogEvent.OFF); }); } - } + updateChannels.add(deviceChannel); + }else { + deviceChannel.setCreateTime(DateUtil.getNow()); + addChannels.add(deviceChannel); } channels.add(deviceChannel); if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) { @@ -175,21 +182,36 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { } try { int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels); + int limitCount = 300; boolean result = cleanChannelsResult < 0; - if (!result && channels.size() > 0) { - if (channels.size() > limitCount) { - for (int i = 0; i < channels.size(); i += limitCount) { + if (!result && addChannels.size() > 0) { + if (addChannels.size() > limitCount) { + for (int i = 0; i < addChannels.size(); i += limitCount) { int toIndex = i + limitCount; - if (i + limitCount > channels.size()) { - toIndex = channels.size(); + if (i + limitCount > addChannels.size()) { + toIndex = addChannels.size(); } - result = result || deviceChannelMapper.batchAddOrUpdate(channels.subList(i, toIndex)) < 0; + result = result || deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex)) < 0; } }else { - result = result || deviceChannelMapper.batchAddOrUpdate(channels) < 0; + result = result || deviceChannelMapper.batchAdd(addChannels) < 0; } } + if (!result && updateChannels.size() > 0) { + if (updateChannels.size() > limitCount) { + for (int i = 0; i < updateChannels.size(); i += limitCount) { + int toIndex = i + limitCount; + if (i + limitCount > updateChannels.size()) { + toIndex = updateChannels.size(); + } + result = result || deviceChannelMapper.batchUpdate(updateChannels.subList(i, toIndex)) < 0; + } + }else { + result = result || deviceChannelMapper.batchUpdate(updateChannels) < 0; + } + } + if (result) { //事务回滚 dataSourceTransactionManager.rollback(transactionStatus); @@ -919,7 +941,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { deviceChannel.setLatitude(0.0); deviceChannel.setDeviceId(platform.getDeviceGBId()); deviceChannel.setManufacture("wvp-pro"); - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); deviceChannel.setParental(1); deviceChannel.setRegisterWay(1); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaceInfo.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaseInfo.java similarity index 65% rename from src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaceInfo.java rename to src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaseInfo.java index b50d97a07..dab9b0ae0 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaceInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceBaseInfo.java @@ -1,9 +1,17 @@ package com.genersoft.iot.vmp.vmanager.bean; -public class ResourceBaceInfo { +public class ResourceBaseInfo { private int total; private int online; + public ResourceBaseInfo() { + } + + public ResourceBaseInfo(int total, int online) { + this.total = total; + this.online = online; + } + public int getTotal() { return total; } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceInfo.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceInfo.java index b8d7009f5..3b0ee0d38 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/ResourceInfo.java @@ -2,40 +2,40 @@ package com.genersoft.iot.vmp.vmanager.bean; public class ResourceInfo { - private ResourceBaceInfo device; - private ResourceBaceInfo channel; - private ResourceBaceInfo push; - private ResourceBaceInfo proxy; + private ResourceBaseInfo device; + private ResourceBaseInfo channel; + private ResourceBaseInfo push; + private ResourceBaseInfo proxy; - public ResourceBaceInfo getDevice() { + public ResourceBaseInfo getDevice() { return device; } - public void setDevice(ResourceBaceInfo device) { + public void setDevice(ResourceBaseInfo device) { this.device = device; } - public ResourceBaceInfo getChannel() { + public ResourceBaseInfo getChannel() { return channel; } - public void setChannel(ResourceBaceInfo channel) { + public void setChannel(ResourceBaseInfo channel) { this.channel = channel; } - public ResourceBaceInfo getPush() { + public ResourceBaseInfo getPush() { return push; } - public void setPush(ResourceBaceInfo push) { + public void setPush(ResourceBaseInfo push) { this.push = push; } - public ResourceBaceInfo getProxy() { + public ResourceBaseInfo getProxy() { return proxy; } - public void setProxy(ResourceBaceInfo proxy) { + public void setProxy(ResourceBaseInfo proxy) { this.proxy = proxy; } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java index 88126acec..bef7ffb9a 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java @@ -15,7 +15,7 @@ import com.genersoft.iot.vmp.service.*; import com.genersoft.iot.vmp.service.bean.MediaServerLoad; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 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.genersoft.iot.vmp.vmanager.bean.ResourceInfo; import com.genersoft.iot.vmp.vmanager.bean.SystemConfigInfo; import io.swagger.v3.oas.annotations.Operation; @@ -251,13 +251,13 @@ public class ServerController { @Operation(summary = "获取负载信息") public ResourceInfo getResourceInfo() { ResourceInfo result = new ResourceInfo(); - ResourceBaceInfo deviceInfo = deviceService.getOverview(); + ResourceBaseInfo deviceInfo = deviceService.getOverview(); result.setDevice(deviceInfo); - ResourceBaceInfo channelInfo = channelService.getOverview(); + ResourceBaseInfo channelInfo = channelService.getOverview(); result.setChannel(channelInfo); - ResourceBaceInfo pushInfo = pushService.getOverview(); + ResourceBaseInfo pushInfo = pushService.getOverview(); result.setPush(pushInfo); - ResourceBaceInfo proxyInfo = proxyService.getOverview(); + ResourceBaseInfo proxyInfo = proxyService.getOverview(); result.setProxy(proxyInfo); return result; diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java index 90dd68620..668850354 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java @@ -113,7 +113,7 @@ public class ApiStreamController { result.put("error","channel[ " + code + " ]未找到"); resultDeferredResult.setResult(result); return resultDeferredResult; - }else if (deviceChannel.getStatus() == 0) { + }else if (!deviceChannel.isStatus()) { JSONObject result = new JSONObject(); result.put("error","channel[ " + code + " ]offline"); resultDeferredResult.setResult(result);