From 5d400804683866d57136331d257b6e282f280cb7 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: Mon, 15 May 2023 15:29:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86sql?=
=?UTF-8?q?=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iot/vmp/gb28181/bean/DeviceChannel.java | 6 +--
.../cmd/ISIPCommanderForPlatform.java | 2 +-
.../cmd/impl/SIPCommanderFroPlatform.java | 10 ++---
.../cmd/DeviceStatusQueryMessageHandler.java | 2 +-
.../iot/vmp/gb28181/utils/XmlUtil.java | 10 ++---
.../vmp/service/IDeviceChannelService.java | 4 +-
.../iot/vmp/service/IDeviceService.java | 4 +-
.../iot/vmp/service/IStreamProxyService.java | 4 +-
.../iot/vmp/service/IStreamPushService.java | 4 +-
.../impl/DeviceChannelServiceImpl.java | 10 +++--
.../vmp/service/impl/DeviceServiceImpl.java | 8 ++--
.../vmp/service/impl/GbStreamServiceImpl.java | 4 +-
.../service/impl/MediaServerServiceImpl.java | 2 +-
.../service/impl/StreamProxyServiceImpl.java | 10 +++--
.../service/impl/StreamPushServiceImpl.java | 9 ++--
.../impl/StreamPushUploadFileHandler.java | 41 +++++++++++------
.../vmp/storager/dao/DeviceChannelMapper.java | 43 +++++++++---------
.../iot/vmp/storager/dao/DeviceMapper.java | 8 ++--
.../iot/vmp/storager/dao/GbStreamMapper.java | 4 +-
.../vmp/storager/dao/StreamProxyMapper.java | 11 ++++-
.../vmp/storager/dao/StreamPushMapper.java | 20 ++++++---
.../impl/VideoManagerStorageImpl.java | 44 ++++++++++++++-----
...rceBaceInfo.java => ResourceBaseInfo.java} | 10 ++++-
.../iot/vmp/vmanager/bean/ResourceInfo.java | 24 +++++-----
.../vmp/vmanager/server/ServerController.java | 10 ++---
.../vmp/web/gb28181/ApiStreamController.java | 2 +-
26 files changed, 191 insertions(+), 115 deletions(-)
rename src/main/java/com/genersoft/iot/vmp/vmanager/bean/{ResourceBaceInfo.java => ResourceBaseInfo.java} (65%)
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 0e1b6181..f7ef12d3 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 acfb880b..0332aabe 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 582fbafe..b1e21963 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("" + channel.getParental() + "\r\n");
if (channel.getParental() == 0) {
- catalogXml.append("" + (channel.getStatus() == 0 ? "OFF" : "ON") + "\r\n");
+ catalogXml.append("" + (channel.isStatus() ? "ON" : "OFF") + "\r\n");
}
}
if (channel.getParental() == 0) {
@@ -250,7 +250,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
catalogXml.append("" + channel.getPort() + "\r\n");
catalogXml.append("" + channel.getPort() + "\r\n");
catalogXml.append("" + channel.getPTZType() + "\r\n");
- catalogXml.append("" + (channel.getStatus() == 1?"ON":"OFF") + "\r\n");
+ catalogXml.append("" + (channel.isStatus() ? "ON":"OFF") + "\r\n");
catalogXml.append("" +
(channel.getLongitudeWgs84() != 0? channel.getLongitudeWgs84():channel.getLongitude())
+ "\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("\r\n")
@@ -542,7 +542,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
catalogXml.append("" + channel.getManufacture() + "\r\n")
.append("" + channel.getSecrecy() + "\r\n")
.append("" + channel.getRegisterWay() + "\r\n")
- .append("" + (channel.getStatus() == 0 ? "OFF" : "ON") + "\r\n");
+ .append("" + (channel.isStatus() ? "ON" : "OFF") + "\r\n");
if (channel.getChannelType() != 2) { // 业务分组/虚拟组织/行政区划 不设置以下属性
catalogXml.append("" + channel.getModel() + "\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 e9d44d57..f9edfb39 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 d51ab9f5..750cd8b0 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 66dbe077..cd402a10 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 d977c473..e20c3bf2 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 de9613eb..0e1c97bf 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 cf6f0ed2..8d920021 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 73adf2e4..45405f70 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 1f46cc63..8dbed114 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 onlineDevices = deviceMapper.getOnlineDevices();
+ List 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 37e3b9e6..0cde5fe9 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 c0d07650..230ce277 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 bb99651f..3037e3f1 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 6540e3e3..0a03c660 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 1b21995b..a1271593 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 streamPushItems = new ArrayList<>();
+ private final List streamPushItems = new ArrayList<>();
/**
* 用于存储更具APP+Stream过滤后的数据,可以直接存入stream_push表与gb_stream表
*/
- private Map streamPushItemForSave = new HashMap<>();
+ private final Map streamPushItemForSave = new HashMap<>();
/**
* 用于存储按照APP+Stream为KEY, 平台ID+目录Id 为value的数据,用于存储到gb_stream表后获取app+Stream对应的平台与目录信息,然后存入关联表
*/
- private Map> streamPushItemsForPlatform = new HashMap<>();
+ private final Map> streamPushItemsForPlatform = new HashMap<>();
/**
* 用于判断文件是否存在重复的app+Stream+平台ID
*/
- private Set streamPushStreamSet = new HashSet<>();
+ private final Set streamPushStreamSet = new HashSet<>();
/**
* 用于存储APP+Stream->国标ID 的数据结构, 数据一一对应,全局判断APP+Stream->国标ID是否存在不对应
*/
- private BiMap gBMap = HashBiMap.create();
+ private final BiMap gBMap = HashBiMap.create();
+
+ /**
+ * 用于存储APP+Stream-> 在数据库中的数据
+ */
+ private final BiMap pushMapInDb = HashBiMap.create();
/**
* 记录错误的APP+Stream
*/
- private List errorStreamList = new ArrayList<>();
+ private final List errorStreamList = new ArrayList<>();
/**
* 记录错误的国标ID
*/
- private List errorGBList = new ArrayList<>();
+ private final List errorInfoList = new ArrayList<>();
/**
* 读取数量计数器
@@ -75,6 +79,13 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener 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 AND (dc.channel_id LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%')) " +
" AND (dc.parent_id=#{parentChannelId} OR dc.civil_code = #{parentChannelId}) " +
- " AND dc.status=1" +
- " AND dc.status=0" +
+ " AND dc.status= true" +
+ " AND dc.status= false" +
" AND dc.sub_count > 0 " +
" AND dc.sub_count = 0 " +
" AND dc.channel_id in " +
@@ -97,8 +96,8 @@ public interface DeviceChannelMapper {
" AND dc.device_id = #{deviceId} " +
" AND (dc.channel_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%') " +
" AND dc.parent_id=#{parentChannelId} " +
- " AND dc.status=1" +
- " AND dc.status=0" +
+ " AND dc.status=true" +
+ " AND dc.status=false" +
" AND dc.sub_count > 0 " +
" AND dc.sub_count = 0 " +
" AND dc.channel_id in " +
@@ -121,8 +120,8 @@ public interface DeviceChannelMapper {
" AND dc.device_id = #{deviceId} " +
" AND (dc.channel_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%') " +
" AND dc.parent_id=#{parentChannelId} " +
- " AND dc.status=1" +
- " AND dc.status=0" +
+ " AND dc.status=true" +
+ " AND dc.status=false" +
" AND dc.sub_count > 0 " +
" AND dc.sub_count = 0 " +
" AND dc.channel_id in " +
@@ -165,8 +164,8 @@ public interface DeviceChannelMapper {
" LEFT JOIN wvp_platform_gb_channel pgc on pgc.device_channel_id = dc.id " +
" WHERE 1=1 " +
" AND (dc.channel_id LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%')) " +
- " AND dc.status=1 " +
- " AND dc.status=0 " +
+ " AND dc.status=true " +
+ " AND dc.status=false " +
" AND dc.sub_count > 0 " +
" AND dc.sub_count = 0 " +
" AND dc.id not in (select device_channel_id from wvp_platform_gb_channel where platform_id=#{platformId} ) " +
@@ -191,10 +190,10 @@ public interface DeviceChannelMapper {
@Select("SELECT * FROM wvp_device_channel WHERE channel_id=#{channelId}")
List 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("")
int batchAddOrUpdate(List 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({""})
int batchOnline(List channels);
@Update({""})
int batchOffline(List 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 ebf2933c..75465453 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" +
" where online=${online}"+
+ " order by create_time desc "+
" "
)
List 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 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 5f8702c7..e313acea 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 gbStreams);
@Insert("")
- @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
+ @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gb_stream_id")
void batchAdd(List subList);
@Update({""})
- ResourceBaceInfo getOverview(boolean pushIngAsOnline);
+ int getAllOnline(Boolean usePushingAsStatus);
+
+ @Select("")
+ List getListIn(List 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 cee613db..f73339d1 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 channels = new ArrayList<>();
+
+ List updateChannels = new ArrayList<>();
+ List addChannels = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
Map 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 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 b50d97a0..dab9b0ae 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 b8d7009f..3b0ee0d3 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 88126ace..bef7ffb9 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 90dd6862..66885035 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);