From d70903ea176f6856636ef57dffac73feaae56bac Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 周二, 04 7月 2023 17:22:23 +0800
Subject: [PATCH] 推送ptz获取相机方式更改为从redis中获取
---
ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java | 5
ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java | 11 +
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java | 98 ++++++++++--------
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 15 +-
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java | 1
ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java | 106 +++++++++-----------
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 46 ++++++++-
7 files changed, 162 insertions(+), 120 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index cbd7f4e..7a1a5be 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -3,10 +3,12 @@
import java.time.LocalTime;
import java.util.*;
+import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.system.domain.SysConfig;
@@ -39,6 +41,25 @@
@Resource
private RedisCache redisCache;
+
+ @PostConstruct
+ public void loadCameras() {
+ List<ArdCameras> ardCameras = selectArdCamerasListNoDataScope(new ArdCameras());
+ for (ArdCameras ardCamera : ardCameras) {
+ redisCache.setCacheObject(getCacheKey(ardCamera.getId()), ardCamera);
+ }
+
+ }
+
+ /**
+ * 设置cache key
+ *
+ * @param configKey 参数键
+ * @return 缓存键key
+ */
+ private String getCacheKey(String configKey) {
+ return CacheConstants.CAMERA_LIST_KEY + configKey;
+ }
/**
* 查询相机设备
@@ -82,9 +103,11 @@
*/
@Override
public int insertArdCameras(ArdCameras ardCameras) {
+ ardCameras.setId(IdUtils.simpleUUID());
ardCameras.setCreateBy(SecurityUtils.getUsername());
ardCameras.setCreateTime(DateUtils.getNowDate());
ardCameras.setUserId(SecurityUtils.getUserId());
+ redisCache.setCacheObject(getCacheKey(ardCameras.getId()), ardCameras);
return ardCamerasMapper.insertArdCameras(ardCameras);
}
@@ -97,7 +120,12 @@
@Override
public int updateArdCameras(ArdCameras ardCameras) {
ardCameras.setUpdateTime(DateUtils.getNowDate());
- return ardCamerasMapper.updateArdCameras(ardCameras);
+ int res = ardCamerasMapper.updateArdCameras(ardCameras);
+ if (res > 0) {
+ redisCache.deleteObject(getCacheKey(ardCameras.getId()));
+ redisCache.setCacheObject(getCacheKey(ardCameras.getId()), ardCameras);
+ }
+ return res;
}
/**
@@ -108,7 +136,15 @@
*/
@Override
public int deleteArdCamerasByIds(String[] ids) {
- return ardCamerasMapper.deleteArdCamerasByIds(ids);
+ int res = ardCamerasMapper.deleteArdCamerasByIds(ids);
+ if(res>0)
+ {
+ for(String id:ids)
+ {
+ redisCache.deleteObject(getCacheKey(id));
+ }
+ }
+ return res;
}
/**
@@ -139,7 +175,7 @@
public Map getChildDeptAndCamera(Boolean disabled) {
Long deptId = SecurityUtils.getDeptId();
SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
- Map<String, Object> map = fetchChildDepartments(sysDept,disabled);
+ Map<String, Object> map = fetchChildDepartments(sysDept, disabled);
return map;
}
@@ -151,7 +187,7 @@
* @创建时间 2023/6/2 14:38
* @修改人和其它信息
*/
- public Map<String, Object> fetchChildDepartments(SysDept sysDept,Boolean disabled) {
+ public Map<String, Object> fetchChildDepartments(SysDept sysDept, Boolean disabled) {
Map<String, Object> map = new HashMap<>();
map.put("name", sysDept.getDeptName());
map.put("deptId", sysDept.getDeptId());
@@ -164,7 +200,7 @@
childMap.put("name", childDept.getDeptName());
childMap.put("deptId", childDept.getDeptId());
childMap.put("disabled", disabled);
- Map<String, Object> map1 = fetchChildDepartments(childDept,disabled);
+ Map<String, Object> map1 = fetchChildDepartments(childDept, disabled);
childMap.putAll(map1);
childList.add(childMap);
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 590b551..ba67776 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
@@ -41,7 +42,7 @@
public class HikClientServiceImpl implements IHikClientService {
@Resource
- ArdCamerasMapper ardCamerasMapper;
+ IArdCamerasService ardCamerasService;
private static HCNetSDK hCNetSDK;
@@ -194,7 +195,7 @@
public void loginAll() {
try {
log.debug("加载lib完成!");
- List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasListNoDataScope(new ArdCameras());
+ List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
for (ArdCameras camera : ardCameras) {
Thread.sleep(500);
login(camera);
@@ -647,7 +648,7 @@
NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
m_ptzPosCurrent.wAction = 1;
try {
- ArdCameras cameras = ardCamerasMapper.selectArdCamerasById(cameraId);
+ ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
double[] cameraPositon = new double[]{cameras.getLongitude(), cameras.getLatitude(), cameras.getAltitude()};
double[] targetPositions = cmd.getTargetPosition();
double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150);
@@ -683,11 +684,11 @@
@SdkOperate
public boolean controlLock(CameraCmd cmd) {
String cameraId = cmd.getCameraId();//申请锁的相机
- ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
+ ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
Date now = new Date();
now.setTime(now.getTime() + cmd.getExpired() * 1000);
ardCameras.setOperatorExpired(now);//设置当前过期时间
- ardCamerasMapper.updateArdCameras(ardCameras);
+ ardCamerasService.updateArdCameras(ardCameras);
return true;
}
@@ -703,11 +704,11 @@
public boolean controlUnLock(CameraCmd cmd) {
String cameraId = cmd.getCameraId();//申请解锁的相机
String operator = cmd.getOperator();//申请者
- ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
+ ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
if (ardCameras.getOperatorId().equals(operator)) {
//如果解锁相机的当前用户是申请者,则清空该相机的过期时间
ardCameras.setOperatorExpired(null);
- int i = ardCamerasMapper.updateArdCameras(ardCameras);
+ int i = ardCamerasService.updateArdCameras(ardCameras);
if (i > 0) {
log.debug(cameraId + "--解锁成功");
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
index 4ea42ef..e258fc5 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
@@ -5,6 +5,7 @@
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
@@ -50,8 +51,8 @@
camera.setChannel(0);
camera.setLoginId(-1);
}
- ArdCamerasMapper ardCamerasMapper = SpringUtils.getBean(ArdCamerasMapper.class);
- ardCamerasMapper.updateArdCameras(camera);
+ IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class);
+ ardCamerasService.updateArdCameras(camera);
return 1;
}
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
index 1c0e2f1..c9fe349 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
@@ -43,6 +43,7 @@
caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
caches.add(new SysCache(CacheConstants.AUTH_CONFIG_KEY, "授权配置信息"));
+ caches.add(new SysCache(CacheConstants.CAMERA_LIST_KEY, "相机列表"));
}
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
index 346a654..55cfcbc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
@@ -2,11 +2,10 @@
/**
* 缓存的key 常量
- *
+ *
* @author ruoyi
*/
-public class CacheConstants
-{
+public class CacheConstants {
/**
* 登录用户 redis key
*/
@@ -41,8 +40,14 @@
* 登录账户密码错误次数 redis key
*/
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
+
/**
* 授权使用机器码 redis key
*/
public static final String AUTH_CONFIG_KEY = "auth_config:";
+
+ /**
+ * 所有相机 redis key
+ */
+ public static final String CAMERA_LIST_KEY = "camera_list:";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
index 44e80d8..1098fd8 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
@@ -6,6 +6,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
@@ -18,59 +19,54 @@
*
* @author ruoyi
**/
-@SuppressWarnings(value = { "unchecked", "rawtypes" })
+@SuppressWarnings(value = {"unchecked", "rawtypes"})
@Component
-public class RedisCache
-{
+public class RedisCache {
@Autowired
public RedisTemplate redisTemplate;
/**
* 缓存基本的对象,Integer、String、实体类等
*
- * @param key 缓存的键值
+ * @param key 缓存的键值
* @param value 缓存的值
*/
- public <T> void setCacheObject(final String key, final T value)
- {
+ public <T> void setCacheObject(final String key, final T value) {
redisTemplate.opsForValue().set(key, value);
}
/**
* 缓存基本的对象,Integer、String、实体类等
*
- * @param key 缓存的键值
- * @param value 缓存的值
- * @param timeout 时间
+ * @param key 缓存的键值
+ * @param value 缓存的值
+ * @param timeout 时间
* @param timeUnit 时间颗粒度
*/
- public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
- {
+ public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
/**
* 设置有效时间
*
- * @param key Redis键
+ * @param key Redis键
* @param timeout 超时时间
* @return true=设置成功;false=设置失败
*/
- public boolean expire(final String key, final long timeout)
- {
+ public boolean expire(final String key, final long timeout) {
return expire(key, timeout, TimeUnit.SECONDS);
}
/**
* 设置有效时间
*
- * @param key Redis键
+ * @param key Redis键
* @param timeout 超时时间
- * @param unit 时间单位
+ * @param unit 时间单位
* @return true=设置成功;false=设置失败
*/
- public boolean expire(final String key, final long timeout, final TimeUnit unit)
- {
+ public boolean expire(final String key, final long timeout, final TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
@@ -80,8 +76,7 @@
* @param key Redis键
* @return 有效时间
*/
- public long getExpire(final String key)
- {
+ public long getExpire(final String key) {
return redisTemplate.getExpire(key);
}
@@ -91,8 +86,7 @@
* @param key 键
* @return true 存在 false不存在
*/
- public Boolean hasKey(String key)
- {
+ public Boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
@@ -102,8 +96,7 @@
* @param key 缓存键值
* @return 缓存键值对应的数据
*/
- public <T> T getCacheObject(final String key)
- {
+ public <T> T getCacheObject(final String key) {
ValueOperations<String, T> operation = redisTemplate.opsForValue();
return operation.get(key);
}
@@ -113,8 +106,7 @@
*
* @param key
*/
- public boolean deleteObject(final String key)
- {
+ public boolean deleteObject(final String key) {
return redisTemplate.delete(key);
}
@@ -124,20 +116,18 @@
* @param collection 多个对象
* @return
*/
- public boolean deleteObject(final Collection collection)
- {
+ public boolean deleteObject(final Collection collection) {
return redisTemplate.delete(collection) > 0;
}
/**
* 缓存List数据
*
- * @param key 缓存的键值
+ * @param key 缓存的键值
* @param dataList 待缓存的List数据
* @return 缓存的对象
*/
- public <T> long setCacheList(final String key, final List<T> dataList)
- {
+ public <T> long setCacheList(final String key, final List<T> dataList) {
Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
return count == null ? 0 : count;
}
@@ -148,24 +138,21 @@
* @param key 缓存的键值
* @return 缓存键值对应的数据
*/
- public <T> List<T> getCacheList(final String key)
- {
+ public <T> List<T> getCacheList(final String key) {
return redisTemplate.opsForList().range(key, 0, -1);
}
/**
* 缓存Set
*
- * @param key 缓存键值
+ * @param key 缓存键值
* @param dataSet 缓存的数据
* @return 缓存数据的对象
*/
- public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet)
- {
+ public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
Iterator<T> it = dataSet.iterator();
- while (it.hasNext())
- {
+ while (it.hasNext()) {
setOperation.add(it.next());
}
return setOperation;
@@ -177,8 +164,7 @@
* @param key
* @return
*/
- public <T> Set<T> getCacheSet(final String key)
- {
+ public <T> Set<T> getCacheSet(final String key) {
return redisTemplate.opsForSet().members(key);
}
@@ -188,8 +174,7 @@
* @param key
* @param dataMap
*/
- public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
- {
+ public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap);
}
@@ -201,32 +186,29 @@
* @param key
* @return
*/
- public <T> Map<String, T> getCacheMap(final String key)
- {
+ public <T> Map<String, T> getCacheMap(final String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* 往Hash中存入数据
*
- * @param key Redis键
- * @param hKey Hash键
+ * @param key Redis键
+ * @param hKey Hash键
* @param value 值
*/
- public <T> void setCacheMapValue(final String key, final String hKey, final T value)
- {
+ public <T> void setCacheMapValue(final String key, final String hKey, final T value) {
redisTemplate.opsForHash().put(key, hKey, value);
}
/**
* 获取Hash中的数据
*
- * @param key Redis键
+ * @param key Redis键
* @param hKey Hash键
* @return Hash中的对象
*/
- public <T> T getCacheMapValue(final String key, final String hKey)
- {
+ public <T> T getCacheMapValue(final String key, final String hKey) {
HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
return opsForHash.get(key, hKey);
}
@@ -234,24 +216,22 @@
/**
* 获取多个Hash中的数据
*
- * @param key Redis键
+ * @param key Redis键
* @param hKeys Hash键集合
* @return Hash对象集合
*/
- public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys)
- {
+ public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {
return redisTemplate.opsForHash().multiGet(key, hKeys);
}
/**
* 删除Hash中的某条数据
*
- * @param key Redis键
+ * @param key Redis键
* @param hKey Hash键
* @return 是否成功
*/
- public boolean deleteCacheMapValue(final String key, final String hKey)
- {
+ public boolean deleteCacheMapValue(final String key, final String hKey) {
return redisTemplate.opsForHash().delete(key, hKey) > 0;
}
@@ -261,8 +241,16 @@
* @param pattern 字符串前缀
* @return 对象列表
*/
- public Collection<String> keys(final String pattern)
- {
+ public Collection<String> keys(final String pattern) {
return redisTemplate.keys(pattern);
}
+
+ /**
+ * 根据前缀获取所有的key* 例如:pro_
+ */
+ public List<Object> getListKey(String prefix) {
+ Set<Object> keys = redisTemplate.keys(prefix+"*");
+ List<Object> values = redisTemplate.opsForValue().multiGet(keys);
+ return values;
+ }
}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
index 4fcc320..78edeb6 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
@@ -1,6 +1,8 @@
package com.ruoyi.quartz.task;
+import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
@@ -40,60 +42,68 @@
*/
public void ptzPush() {
try {
+ RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
- IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class);
IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class);
List<Map<String, Object>> list = new ArrayList<>();
ArdCameras ardCameras = new ArdCameras();
ardCameras.setGdtype("1");
- List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasListNoDataScope(ardCameras);
- for (ArdCameras camera : ardCamerasList) {
- CameraCmd cmd = new CameraCmd();
- cmd.setCameraId(camera.getId());
- cmd.setChannelNum(1);
- cmd.setOperator(camera.getOperatorId());
- if (!GlobalVariable.loginMap.containsKey(camera.getId()))//只推送登录成功的相机
- {
- continue;
- }
- Map<String, Object> ptz = hikClientService.getPtz(cmd);
- if (StringUtils.isNull(ptz)) {
- continue;
- }
- SysUser sysUser = sysUserService.selectUserById(camera.getOperatorId());
- if (StringUtils.isNotNull(sysUser)) {
- cmd.setOperatorZh(sysUser.getNickName());
- } else {
- cmd.setOperatorZh(cmd.getOperator());
- }
-
- //获取时间差
- long secDatePoor = 0;
- if (StringUtils.isNotNull(camera.getOperatorExpired())) {
- secDatePoor = DateUtils.getSecDatePoor(camera.getOperatorExpired(), new Date());
- if(secDatePoor<0)
+ List<Object> Objects = redisCache.getListKey(getCacheKey());
+ if (Objects.size() > 0) {
+ for (Object obj : Objects) {
+ ArdCameras camera = (ArdCameras) obj;
+ CameraCmd cmd = new CameraCmd();
+ cmd.setCameraId(camera.getId());
+ cmd.setChannelNum(1);
+ cmd.setOperator(camera.getOperatorId());
+ if (!GlobalVariable.loginMap.containsKey(camera.getId()))//只推送登录成功的相机
{
- secDatePoor=0;
+ continue;
+ }
+ Map<String, Object> ptz = hikClientService.getPtz(cmd);
+ if (StringUtils.isNull(ptz)) {
+ continue;
+ }
+ SysUser sysUser = sysUserService.selectUserById(camera.getOperatorId());
+ if (StringUtils.isNotNull(sysUser)) {
+ cmd.setOperatorZh(sysUser.getNickName());
+ } else {
+ cmd.setOperatorZh(cmd.getOperator());
+ }
+
+ //获取时间差
+ long secDatePoor = 0;
+ if (StringUtils.isNotNull(camera.getOperatorExpired())) {
+ secDatePoor = DateUtils.getSecDatePoor(camera.getOperatorExpired(), new Date());
+ if (secDatePoor < 0) {
+ secDatePoor = 0;
+ }
+ }
+
+ if (ptz.size() > 0) {
+ ptz.put("cameraId", cmd.getCameraId());
+ ptz.put("usernameZh", cmd.getOperatorZh());
+ ptz.put("operatorId", cmd.getOperator());//上锁用户id
+ ptz.put("expirationRemainingSecond", secDatePoor);
+ list.add(ptz);
}
}
-
- if (ptz.size() > 0) {
- ptz.put("cameraId", cmd.getCameraId());
- ptz.put("usernameZh", cmd.getOperatorZh());
- ptz.put("operatorId", cmd.getOperator());//上锁用户id
- ptz.put("expirationRemainingSecond", secDatePoor);
- list.add(ptz);
+ if (ONLINE_USER_SESSIONS.size() > 0) {
+ Map<String, Object> sendMap = new HashMap<>();
+ sendMap.put("10000", list);
+ WebSocketUtils.sendMessageAll(sendMap);
}
}
- if (ONLINE_USER_SESSIONS.size() > 0) {
- Map<String, Object> sendMap = new HashMap<>();
- sendMap.put("10000", list);
- WebSocketUtils.sendMessageAll(sendMap);
- }
+ } catch (Exception ex) {
+ log.error("推送ptz异常:" + ex.getMessage());
}
- catch (Exception ex)
- {
- log.error("推送ptz异常:"+ex.getMessage());
- }
+ }
+ /**
+ * 获取cache key
+ *
+ * @return 缓存键key
+ */
+ private String getCacheKey() {
+ return CacheConstants.CAMERA_LIST_KEY;
}
}
--
Gitblit v1.9.3