package com.ruoyi.quartz.task;
|
|
import com.ruoyi.alarm.global.service.IGlobalAlarmService;
|
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.device.camera.domain.ArdCameras;
|
import com.ruoyi.device.camera.domain.CameraCmd;
|
import com.ruoyi.device.camera.service.ICameraSdkService;
|
import com.ruoyi.device.hiksdk.common.GlobalVariable;
|
import com.ruoyi.device.hiksdk.service.IHikClientService;
|
import com.ruoyi.utils.websocket.util.WebSocketUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
|
|
/**
|
* @ClassName: AlarmTask
|
* @Description: 推送任务
|
* @Author: Administrator
|
* @Date: 2023年03月06日 11:13
|
* @Version: 1.0
|
**/
|
@Component("PushTask")
|
@Slf4j
|
public class PushTask {
|
|
@Resource
|
RedisCache redisCache;
|
@Resource
|
ICameraSdkService cameraSdkService;
|
@Resource
|
IGlobalAlarmService globalAlarmService;
|
/**
|
* @描述 定时推送所有报警的点位数量
|
* @参数 []
|
* @返回值 void
|
* @创建人 刘苏义
|
* @创建时间 2023/6/15 15:43
|
* @修改人和其它信息
|
*/
|
public void globalAlarmCountPush() {
|
try {
|
Map<String, Object> stringIntegerMap = globalAlarmService.selectAlarmLogsCount();
|
if (ONLINE_USER_SESSIONS.size() > 0) {
|
WebSocketUtils.sendMessageAll(stringIntegerMap);
|
}
|
} catch (Exception ex) {
|
log.error("推送报警的点位数量异常:" + ex.getMessage());
|
}
|
}
|
|
|
/**
|
* @描述 定时推送ptz
|
* @参数 []
|
* @返回值 void
|
* @创建人 刘苏义
|
* @创建时间 2023/6/15 15:43
|
* @修改人和其它信息
|
*/
|
public void ptzPush() {
|
try {
|
List<Map<String, Object>> list = new ArrayList<>();
|
List<Object> Objects = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY);
|
if (Objects.size() > 0) {
|
for (Object obj : Objects) {
|
ArdCameras camera = (ArdCameras) obj;
|
if (!GlobalVariable.loginMap.containsKey(camera.getId()))//只推送首次登录成功的相机
|
{
|
continue;
|
}
|
if(!"1".equals(camera.getGdtype()))
|
{
|
continue;
|
}
|
CameraCmd cmd = new CameraCmd();
|
cmd.setCameraId(camera.getId());
|
cmd.setChanNo(1);
|
cmd.setOperator(camera.getOperatorId());
|
//推送在线的相机
|
boolean onLine = cameraSdkService.isOnLine(cmd);
|
if(!onLine)
|
{
|
continue;
|
}
|
Map<String, Object> ptz = cameraSdkService.getGisInfo(cmd);
|
if (StringUtils.isNull(ptz)) {
|
continue;
|
}
|
SysUser sysUser = redisCache.getCacheObject(CacheConstants.USER_LIST_KEY + 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);
|
ptz.put("longitude",camera.getLongitude());
|
ptz.put("latitude",camera.getLatitude());
|
ptz.put("altitude",camera.getAltitude());
|
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());
|
}
|
}
|
}
|