package com.ruoyi.quartz.task; import com.ruoyi.common.core.domain.entity.SysUser; 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.service.IHikClientService; import com.ruoyi.rongcloud.service.RongCloudService; import com.ruoyi.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @Description: 同步任务 * @ClassName: syncDeviceStateTask * @Author: 刘苏义 * @Date: 2023年10月08日11:06:42 **/ @Component("SyncTask") @Slf4j public class SyncTask { @Resource ISysUserService sysUserService; @Resource RongCloudService rongCloudService; @Resource IArdCamerasService iArdCamerasService; @Resource IHikClientService iHikClientService; /** * 同步相机在线状态 * 刘苏义 * 2023/10/8 14:54:41 */ public void cameraState() { List ardCameras = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); for (ArdCameras camera : ardCameras) { CameraCmd cmd = new CameraCmd(); cmd.setCameraId(camera.getId()); boolean onLineNew = iHikClientService.isOnLine(cmd);//相机实时状态 boolean onLineOld = "1".equals(camera.getState());//相机历史状态 //当状态发生变化时,更新实时状态 if (onLineNew != onLineOld) { if (onLineNew) { camera.setState("1"); } else { camera.setState("0"); } iArdCamerasService.updateArdCameras(camera); } } } /** * 定时获取app用户在线状态 * 刘苏义 * 2023/8/9 9:17:48 */ public void appUserState() { try { List SysUserList = sysUserService.selectAllAppUserList(new SysUser()); if (SysUserList.size() > 0) { for (SysUser sysUser : SysUserList) { String state = sysUser.getAppOnlineState();//获取当前用户的在线状态 Boolean online = rongCloudService.checkOnline(sysUser.getUserId());//从融云获取在线状态 if (state != null) { Boolean appOnlineState = state.equals("1"); if (appOnlineState == online) { continue; } } sysUser.setAppOnlineState(online ? "1" : "0"); sysUserService.updateUserProfile(sysUser); } } } catch (Exception ex) { log.error("融云在线接口异常:" + ex.getMessage()); } } }