package com.ruoyi.quartz.task; import com.ruoyi.common.core.domain.entity.SysUser; 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 { ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class); IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class); List> list = new ArrayList<>(); ArdCameras ardCameras = new ArdCameras(); ardCameras.setGdtype("1"); List 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 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 sendMap = new HashMap<>(); sendMap.put("10000", list); WebSocketUtils.sendMessageAll(sendMap); } } catch (Exception ex) { log.error("推送ptz异常:"+ex.getMessage()); } } }