From a33e7949a41c4fd925173c97f2f91663b40a93ad Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Mon, 26 Jan 2026 15:55:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=BF=83=E8=B7=B3=E5=92=8C?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/common/VideoManagerConstants.java | 4 +- .../vmp/conf/redis/RedisTemplateConfig.java | 19 +++ .../iot/vmp/gb28181/bean/Device.java | 6 +- .../iot/vmp/gb28181/bean/TimeStatistics.java | 20 +++ .../vmp/gb28181/controller/DeviceQuery.java | 39 ++++- .../vmp/gb28181/service/IDeviceService.java | 10 +- .../service/impl/DeviceServiceImpl.java | 39 ++++- .../impl/RegisterRequestProcessor.java | 21 +-- .../cmd/KeepaliveNotifyMessageHandler.java | 11 +- .../control/RedisRpcDeviceController.java | 2 +- .../iot/vmp/storager/IRedisCatchStorage.java | 7 +- .../storager/impl/RedisCatchStorageImpl.java | 84 ++++++++-- web/src/api/device.js | 20 +++ web/src/store/modules/device.js | 22 ++- web/src/styles/iconfont.scss | 14 +- web/src/styles/iconfont.woff2 | Bin 63916 -> 64588 bytes web/src/styles/index.scss | 9 + web/src/views/device/list.vue | 33 +++- web/src/views/device/timeStatistics.vue | 158 ++++++++++++++++++ 19 files changed, 453 insertions(+), 65 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/bean/TimeStatistics.java create mode 100644 web/src/views/device/timeStatistics.vue diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java index 2cbe4a745..e848d38f4 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java +++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java @@ -19,8 +19,8 @@ public class VideoManagerConstants { public static final String ONLINE_MEDIA_SERVERS_PREFIX = "VMP_ONLINE_MEDIA_SERVERS:"; public static final String DEVICE_PREFIX = "VMP_DEVICE_INFO"; - public static final String DEVICE_KEEPALIVE_PREFIX = "DEVICE_KEEPALIVE:"; - public static final String DEVICE_REGISTER_PREFIX = "DEVICE_REGISTER:"; + public static final String DEVICE_KEEPALIVE_PREFIX = "VMP_DEVICE_KEEPALIVE:"; + public static final String DEVICE_REGISTER_PREFIX = "VMP_DEVICE_REGISTER:"; public static final String INVITE_PREFIX = "VMP_GB_INVITE_INFO"; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisTemplateConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisTemplateConfig.java index f36a4d555..3bfee31ba 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisTemplateConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/redis/RedisTemplateConfig.java @@ -6,6 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericToStringSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration @@ -43,4 +44,22 @@ public class RedisTemplateConfig { return redisTemplate; } + @Bean + public RedisTemplate redisLongTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory); + + // Key 使用 String 序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + // Value 使用 GenericToStringSerializer,它能将 Long 转换为纯文本字符串存入 Redis + // 这样在 Redis 命令行输入 'get key' 看到的是 "123" 而不是二进制乱码 + template.setValueSerializer(new GenericToStringSerializer<>(Long.class)); + template.setHashValueSerializer(new GenericToStringSerializer<>(Long.class)); + + template.afterPropertiesSet(); + return template; + } + } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java index 75d52a624..83f1a6b3c 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java @@ -89,15 +89,15 @@ public class Device { /** * 注册时间 */ - @Schema(description = "注册时间") - private String registerTime; + @Schema(description = "注册时间戳") + private Long registerTimeStamp; /** * 心跳时间 */ @Schema(description = "心跳时间") - private String keepaliveTime; + private Long keepaliveTimeStamp; /** diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TimeStatistics.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TimeStatistics.java new file mode 100644 index 000000000..975f858ec --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TimeStatistics.java @@ -0,0 +1,20 @@ +package com.genersoft.iot.vmp.gb28181.bean; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@Schema(description = "时间统计信息") +public class TimeStatistics { + + @Schema(description = "时间") + private String time; + + @Schema(description = "时间差") + private Long timeDiff; +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/DeviceQuery.java index a4c3bf2da..b2d12240c 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/DeviceQuery.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/DeviceQuery.java @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; +import com.genersoft.iot.vmp.gb28181.bean.TimeStatistics; import com.genersoft.iot.vmp.gb28181.service.IDeviceChannelService; import com.genersoft.iot.vmp.gb28181.service.IDeviceService; import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService; @@ -21,8 +22,10 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; import org.apache.ibatis.annotations.Options; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -31,12 +34,11 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.async.DeferredResult; -import jakarta.servlet.ServletOutputStream; -import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; +import java.util.List; @Tag(name = "国标设备查询", description = "国标设备查询") @SuppressWarnings("rawtypes") @@ -136,7 +138,7 @@ public class DeviceQuery { log.debug("设备通道信息同步API调用,deviceId:" + deviceId); } Device device = deviceService.getDeviceByDeviceId(deviceId); - if (device.getRegisterTime() == null) { + if (device.getTransport() == null) { WVPResult wvpResult = new WVPResult<>(); wvpResult.setCode(ErrorCode.ERROR100.getCode()); wvpResult.setMsg("设备尚未注册过"); @@ -155,7 +157,7 @@ public class DeviceQuery { log.debug("设备信息删除API调用,deviceId:" + deviceId); } - // 清除redis记录 + // 清除 redis 记录 deviceService.delete(deviceId); JSONObject json = new JSONObject(); json.put("deviceId", deviceId); @@ -181,8 +183,7 @@ public class DeviceQuery { DeviceChannel deviceChannel = deviceChannelService.getOne(deviceId,channelId); if (deviceChannel == null) { - PageInfo deviceChannelPageResult = new PageInfo<>(); - return deviceChannelPageResult; + return new PageInfo<>(); } return deviceChannelService.getSubChannels(deviceChannel.getDataDeviceId(), channelId, query, channelType, online, page, count); @@ -430,4 +431,28 @@ public class DeviceQuery { public void subscribeMobilePosition(int id, int cycle, int interval) { deviceService.subscribeMobilePosition(id, cycle, interval); } + + @GetMapping("/statistics/keepalive") + @Operation(summary = "请求心跳统计") + @Parameter(name = "deviceId", description = "设备国标编号", required = true) + @Parameter(name = "count", description = "返回的数量,按时间正向排序,返回的最新的", required = true) + public List getKeepaliveTimeStatistics(String deviceId, Integer count) { + if (ObjectUtils.isEmpty(deviceId)) { + return List.of(); + } + return deviceService.getKeepaliveTimeStatistics(deviceId, count); + } + + @GetMapping("/statistics/register") + @Operation(summary = "请求注册统计") + @Parameter(name = "deviceId", description = "设备国标编号", required = true) + @Parameter(name = "count", description = "返回的数量,按时间正向排序,返回的最新的", required = true) + public List getRegisterTimeStatistics(String deviceId, Integer count) { + if (ObjectUtils.isEmpty(deviceId)) { + return List.of(); + } + return deviceService.getRegisterTimeStatistics(deviceId, count); + } + + } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IDeviceService.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IDeviceService.java index 7e60719cb..3ce9e825e 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IDeviceService.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IDeviceService.java @@ -90,13 +90,6 @@ public interface IDeviceService { List getAllByStatus(Boolean status); - /** - * 判断是否注册已经失效 - * @param device 设备信息 - * @return 布尔 - */ - boolean expire(Device device); - /** * 检查设备状态 * @param device 设备信息 @@ -201,4 +194,7 @@ public interface IDeviceService { void queryPreset(Device device, String channelId, ErrorCallback> callback); + List getKeepaliveTimeStatistics(String deviceId, Integer count); + + List getRegisterTimeStatistics(String deviceId, Integer count); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java index 7991be477..c94d0ceb0 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java @@ -54,7 +54,6 @@ import javax.sip.InvalidArgumentException; import javax.sip.ResponseEvent; import javax.sip.SipException; import java.text.ParseException; -import java.time.Instant; import java.util.*; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; @@ -677,13 +676,6 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner { return deviceMapper.getDevices(ChannelDataType.GB28181, status); } - @Override - public boolean expire(Device device) { - Instant registerTimeDate = Instant.from(DateUtil.formatter.parse(device.getRegisterTime())); - Instant expireInstant = registerTimeDate.plusMillis(TimeUnit.SECONDS.toMillis(device.getExpires())); - return expireInstant.isBefore(Instant.now()); - } - @Override public Boolean getDeviceStatus(@NotNull Device device) { SynchronousQueue queue = new SynchronousQueue<>(); @@ -1258,5 +1250,36 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner { } } + @Override + public List getKeepaliveTimeStatistics(String deviceId, Integer count) { + List timeStampList = redisCatchStorage.getDeviceKeepaliveTimeStamp(deviceId, count); + return formateTimeStatistics(timeStampList, count); + } + @Override + public List getRegisterTimeStatistics(String deviceId, Integer count) { + List timeStampList = redisCatchStorage.getDeviceRegisterTimeStamp(deviceId, count); + return formateTimeStatistics(timeStampList, count); + } + + private List formateTimeStatistics(List timeStampList, Integer count) { + if (timeStampList.isEmpty()) { + return List.of(); + } + List timeStatisticsList = new ArrayList<>(); + for (int i = 0; i < timeStampList.size(); i++) { + Long timeStamp = timeStampList.get(i); + TimeStatistics timeStatistics = new TimeStatistics(); + timeStatistics.setTime(DateUtil.timestampMsTo_yyyy_MM_dd_HH_mm_ss(timeStamp)); + if (i > 0) { + Long lastTimeStamp = timeStampList.get(i - 1); + timeStatistics.setTimeDiff((timeStamp - lastTimeStamp) / 1000); + } + timeStatisticsList.add(timeStatistics); + } + if (timeStatisticsList.size() > count) { + timeStatisticsList = timeStatisticsList.subList(timeStatisticsList.size() - count, timeStatisticsList.size()); + } + return timeStatisticsList; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java index db6615aeb..73d5459ed 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java @@ -1,11 +1,11 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl; +import com.genersoft.iot.vmp.common.RemoteAddressInfo; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.GbSipDate; -import com.genersoft.iot.vmp.common.RemoteAddressInfo; import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; import com.genersoft.iot.vmp.gb28181.service.IDeviceService; import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; @@ -13,7 +13,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; -import com.genersoft.iot.vmp.utils.DateUtil; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.utils.IpPortUtil; import gov.nist.javax.sip.address.AddressImpl; import gov.nist.javax.sip.address.SipUri; @@ -23,7 +23,6 @@ import gov.nist.javax.sip.message.SIPResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; @@ -38,10 +37,8 @@ import javax.sip.message.Response; import java.security.NoSuchAlgorithmException; import java.text.ParseException; import java.util.Calendar; +import java.util.List; import java.util.Locale; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; /** * SIP命令类型: REGISTER请求 @@ -67,6 +64,9 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @Autowired private UserSetting userSetting; + @Autowired + private IRedisCatchStorage redisCatchStorage; + @Override public void afterPropertiesSet() throws Exception { @@ -119,7 +119,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen String transport = reqViaHeader.getTransport(); device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP"); sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), registerOkResponse); - device.setRegisterTime(DateUtil.getNow()); + device.setRegisterTimeStamp(System.currentTimeMillis()); deviceService.online(device); } else { deviceService.offline(device); @@ -218,7 +218,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen // 注册成功 device.setExpires(request.getExpires().getExpires()); registerFlag = true; - // 判断TCP还是UDP + // 判断 TCP/UDP ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); String transport = reqViaHeader.getTransport(); device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP"); @@ -226,10 +226,10 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response); // 注册成功 - // 保存到redis + device.setRegisterTimeStamp(System.currentTimeMillis()); + // 保存到 redis if (registerFlag) { log.info("[注册成功] deviceId: {}->{}", deviceId, requestAddress); - device.setRegisterTime(DateUtil.getNow()); SipTransactionInfo sipTransactionInfo = new SipTransactionInfo((SIPResponse) response); device.setSipTransactionInfo(sipTransactionInfo); deviceService.online(device); @@ -237,6 +237,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen log.info("[注销成功] deviceId: {}->{}", deviceId, requestAddress); deviceService.offline(device); } + redisCatchStorage.updateDeviceRegisterTimeStamp(List.of(device)); } catch (SipException | NoSuchAlgorithmException | ParseException e) { log.error("未处理的异常 ", e); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java index 336f4dd34..1493bd9bd 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java @@ -10,14 +10,13 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorP import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; -import com.genersoft.iot.vmp.utils.DateUtil; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.utils.IpPortUtil; import gov.nist.javax.sip.message.SIPRequest; import lombok.extern.slf4j.Slf4j; import org.dom4j.Element; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -26,7 +25,6 @@ import javax.sip.RequestEvent; import javax.sip.SipException; import javax.sip.message.Response; import java.text.ParseException; -import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; @@ -55,6 +53,9 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp @Autowired private UserSetting userSetting; + @Autowired + private IRedisCatchStorage redisCatchStorage; + @Override public void afterPropertiesSet() throws Exception { notifyMessageHandler.addHandler(cmdType, this); @@ -78,8 +79,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp device.setIp(remoteAddressInfo.getIp()); device.setLocalIp(request.getLocalAddress().getHostAddress()); } - - + device.setKeepaliveTimeStamp(System.currentTimeMillis()); if (device.isOnLine()) { taskQueue.add(device); long expiresTime = Math.min(device.getExpires(), device.getHeartBeatInterval() * device.getHeartBeatCount()) * 1000L; @@ -94,6 +94,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp @Scheduled(fixedDelay = 10, timeUnit = TimeUnit.SECONDS) public void executeUpdateDeviceList() { if (!taskQueue.isEmpty()) { + redisCatchStorage.updateDeviceKeepaliveTimeStamp(taskQueue.stream().toList()); taskQueue.clear(); } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/control/RedisRpcDeviceController.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/control/RedisRpcDeviceController.java index ee6eec485..c4491905a 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/control/RedisRpcDeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/control/RedisRpcDeviceController.java @@ -62,7 +62,7 @@ public class RedisRpcDeviceController extends RpcController { response.setBody("param error"); return response; } - if (device.getRegisterTime() == null) { + if (device.getTransport() == null) { response.setStatusCode(ErrorCode.ERROR400.getCode()); response.setBody("设备尚未注册过"); return response; diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java index 7e30674de..d3548d6e5 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java @@ -184,8 +184,11 @@ public interface IRedisCatchStorage { String chooseOneServer(String serverId); - void updateDeviceKeepaliveTime(List deviceList); + void updateDeviceKeepaliveTimeStamp(List deviceList); - void updateDeviceRegisterTime(List deviceList); + List getDeviceKeepaliveTimeStamp(String deviceId, Integer count); + void updateDeviceRegisterTimeStamp(List deviceList); + + List getDeviceRegisterTimeStamp(String deviceId, Integer count); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 5ce4ae17f..0e100c529 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.storager.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; -import com.fasterxml.jackson.core.JsonProcessingException; import com.genersoft.iot.vmp.common.ServerInfo; import com.genersoft.iot.vmp.common.SystemAllInfo; import com.genersoft.iot.vmp.common.VideoManagerConstants; @@ -21,7 +20,9 @@ import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.SystemInfoUtils; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import lombok.extern.slf4j.Slf4j; +import org.jspecify.annotations.NonNull; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.SessionCallback; import org.springframework.data.redis.core.StringRedisTemplate; @@ -48,6 +49,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @Autowired private RedisTemplate redisTemplate; + @Autowired + private RedisTemplate longRedisTemplate; + @Autowired private StringRedisTemplate stringRedisTemplate; @@ -546,25 +550,71 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { } @Override - public void updateDeviceKeepaliveTime(List deviceList) { -// if (deviceList == null || deviceList.isEmpty()) { -// return; -// } -// // 使用 SessionCallback 保证批量操作在同一个连接中执行 -// SessionCallback sessionCallback = session -> { -// // 1. 批量添加心跳数据到列表尾部 -// for (Device device : deviceList) { -// session.opsForList().rightPush(VideoManagerConstants.DEVICE_KEEPALIVE_PREFIX + device.getDeviceId(), device); -// } -// // 2. 截取列表,只保留最新 100 条 -// session.opsForList().trim(VideoManagerConstants.DEVICE_KEEPALIVE_PREFIX, -1000, -1); -// return true; -// }; -// redisTemplate.execute(sessionCallback); + public void updateDeviceKeepaliveTimeStamp(List deviceList) { + if (deviceList == null || deviceList.isEmpty()) { + return; + } + // 使用 SessionCallback 保证批量操作在同一个连接中执行 + SessionCallback sessionCallback = new SessionCallback<>() { + @Override + // 注意:这里直接写死 String, String 覆盖接口的 K, V + public Boolean execute(@NonNull RedisOperations operations) { + // 1. 批量添加心跳数据到列表尾部 + for (Device device : deviceList) { + operations.opsForList().rightPush(VideoManagerConstants.DEVICE_KEEPALIVE_PREFIX + device.getDeviceId(), device.getKeepaliveTimeStamp()); + // 2. 截取列表,只保留最新 100 条 + operations.opsForList().trim((VideoManagerConstants.DEVICE_KEEPALIVE_PREFIX + device.getDeviceId()), -1000, -1); + } + return true; + } + }; + + longRedisTemplate.execute(sessionCallback); } @Override - public void updateDeviceRegisterTime(List deviceList) { + public List getDeviceKeepaliveTimeStamp(String deviceId, Integer count) { + if (deviceId == null ) { + return List.of(); + } + if (count == null) { + count = 20; + } + return longRedisTemplate.opsForList().range(VideoManagerConstants.DEVICE_KEEPALIVE_PREFIX + deviceId, 0, count + 1); + } + + + @Override + public void updateDeviceRegisterTimeStamp(List deviceList) { + if (deviceList == null || deviceList.isEmpty()) { + return; + } + // 使用 SessionCallback 保证批量操作在同一个连接中执行 + SessionCallback sessionCallback = new SessionCallback<>() { + @Override + // 注意:这里直接写死 String, String 覆盖接口的 K, V + public Boolean execute(@NonNull RedisOperations operations) { + // 1. 批量添加心跳数据到列表尾部 + for (Device device : deviceList) { + operations.opsForList().rightPush(VideoManagerConstants.DEVICE_REGISTER_PREFIX + device.getDeviceId(), device.getRegisterTimeStamp()); + // 2. 截取列表,只保留最新 100 条 + operations.opsForList().trim((VideoManagerConstants.DEVICE_REGISTER_PREFIX + device.getDeviceId()), -1000, -1); + } + return true; + } + }; + longRedisTemplate.execute(sessionCallback); + } + + @Override + public List getDeviceRegisterTimeStamp(String deviceId, Integer count) { + if (deviceId == null ) { + return List.of(); + } + if (count == null) { + count = 20; + } + return longRedisTemplate.opsForList().range(VideoManagerConstants.DEVICE_REGISTER_PREFIX + deviceId, 0, count + 1); } } diff --git a/web/src/api/device.js b/web/src/api/device.js index 95c4f6619..67b8badd5 100644 --- a/web/src/api/device.js +++ b/web/src/api/device.js @@ -243,4 +243,24 @@ export function queryDeviceTree(params, deviceId) { } }) } +export function getKeepaliveTimeStatistics({ deviceId, count }) { + return request({ + method: 'get', + url: '/api/device/query/statistics/keepalive', + params: { + deviceId: deviceId, + count: count + } + }) +} +export function getRegisterTimeStatistics({ deviceId, count }) { + return request({ + method: 'get', + url: '/api/device/query/statistics/register', + params: { + deviceId: deviceId, + count: count + } + }) +} diff --git a/web/src/store/modules/device.js b/web/src/store/modules/device.js index d9265249a..447ef4e69 100644 --- a/web/src/store/modules/device.js +++ b/web/src/store/modules/device.js @@ -2,7 +2,7 @@ import { add, changeChannelAudio, deleteDevice, - deviceRecord, + deviceRecord, getKeepaliveTimeStatistics, getRegisterTimeStatistics, queryBasicParam, queryChannelOne, queryChannels, @@ -242,6 +242,26 @@ const actions = { reject(error) }) }) + }, + getKeepaliveTimeStatistics({ commit }, params) { + return new Promise((resolve, reject) => { + getKeepaliveTimeStatistics(params).then(response => { + const { data } = response + resolve(data) + }).catch(error => { + reject(error) + }) + }) + }, + getRegisterTimeStatistics({ commit }, params) { + return new Promise((resolve, reject) => { + getRegisterTimeStatistics(params).then(response => { + const { data } = response + resolve(data) + }).catch(error => { + reject(error) + }) + }) } } diff --git a/web/src/styles/iconfont.scss b/web/src/styles/iconfont.scss index 5f661da1e..05d191e8f 100644 --- a/web/src/styles/iconfont.scss +++ b/web/src/styles/iconfont.scss @@ -1,6 +1,6 @@ @font-face { font-family: "iconfont"; /* Project id 1291092 */ - src: url('iconfont.woff2?t=1758784486763') format('woff2') + src: url('iconfont.woff2?t=1769409737891') format('woff2') } .iconfont { @@ -11,6 +11,18 @@ -moz-osx-font-smoothing: grayscale; } +.icon-xintiao:before { + content: "\e7f4"; +} + +.icon-register:before { + content: "\e7f5"; +} + +.icon-tongji-Statistics:before { + content: "\e7f3"; +} + .icon-mti-duobianxingxuan:before { content: "\e9e7"; } diff --git a/web/src/styles/iconfont.woff2 b/web/src/styles/iconfont.woff2 index a64c5170744dda83d3cc9e6d447962f782d97ec4..3faf600537105610dc4608ec08b6ef0105af0bcc 100644 GIT binary patch literal 64588 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

B!$#gi`bbV2BP24 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 diff --git a/web/src/styles/index.scss b/web/src/styles/index.scss index d58f2d344..40ad229e4 100644 --- a/web/src/styles/index.scss +++ b/web/src/styles/index.scss @@ -64,3 +64,12 @@ div:focus { .app-container { padding: 20px; } + +.iconfont-14 { + font-family: "iconfont" !important; + font-size: 14px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + margin-right: 5px; +} diff --git a/web/src/views/device/list.vue b/web/src/views/device/list.vue index 2a3793e1f..ac27d53b1 100755 --- a/web/src/views/device/list.vue +++ b/web/src/views/device/list.vue @@ -106,6 +106,28 @@ + + + @@ -170,6 +193,7 @@ import deviceEdit from './edit.vue' import syncChannelProgress from '../dialog/SyncChannelProgress.vue' import configInfo from '../dialog/configInfo.vue' +import timeStatistics from './timeStatistics.vue' import Vue from 'vue' export default { @@ -177,7 +201,8 @@ export default { components: { configInfo, deviceEdit, - syncChannelProgress + syncChannelProgress, + timeStatistics }, data() { return { @@ -440,6 +465,12 @@ export default { message: error.message }) }) + }, + getKeepaliveTimeStatistics: function(deviceId) { + this.$refs.timeStatistics.openDialog('心跳时间统计', 'device/getKeepaliveTimeStatistics', deviceId, 10) + }, + getRegisterTimeStatistics: function(deviceId) { + this.$refs.timeStatistics.openDialog('注册时间统计', 'device/getRegisterTimeStatistics', deviceId, 10) } } } diff --git a/web/src/views/device/timeStatistics.vue b/web/src/views/device/timeStatistics.vue new file mode 100644 index 000000000..8d2c1d863 --- /dev/null +++ b/web/src/views/device/timeStatistics.vue @@ -0,0 +1,158 @@ + + +