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;
|
import com.ruoyi.common.websocket.util.WebSocketUtils;
|
import com.ruoyi.device.camera.domain.ArdCameras;
|
import com.ruoyi.device.camera.domain.CameraCmd;
|
import com.ruoyi.device.camera.service.IArdCamerasService;
|
import com.ruoyi.device.hiksdk.common.GlobalVariable;
|
import com.ruoyi.device.hiksdk.service.IHikClientService;
|
import com.ruoyi.system.service.ISysUserService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
|
|
/**
|
* @Description:
|
* @ClassName: SdkTask
|
* @Author: 刘苏义
|
* @Date: 2023年06月24日14:23
|
* @Version: 1.0
|
**/
|
@Component("SdkTask")
|
@Slf4j(topic = "hikSdk")
|
public class SdkTask {
|
|
/**
|
* @描述 定时推送ptz
|
* @参数 []
|
* @返回值 void
|
* @创建人 刘苏义
|
* @创建时间 2023/6/15 15:43
|
* @修改人和其它信息
|
*/
|
public void ptzPush() {
|
try {
|
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
|
ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
|
IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class);
|
List<Map<String, Object>> list = new ArrayList<>();
|
ArdCameras ardCameras = new ArdCameras();
|
ardCameras.setGdtype("1");
|
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()))//只推送登录成功的相机
|
{
|
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 (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());
|
}
|
}
|
/**
|
* 获取cache key
|
*
|
* @return 缓存键key
|
*/
|
private String getCacheKey() {
|
return CacheConstants.CAMERA_LIST_KEY;
|
}
|
}
|