package com.ruoyi.quartz.task;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.utils.uuid.IdUtils;
|
import com.ruoyi.device.camera.domain.ArdCameras;
|
import com.ruoyi.device.camera.domain.CameraCmd;
|
import com.ruoyi.device.camera.factory.CameraSDK;
|
import com.ruoyi.device.camera.factory.CameraSDKFactory;
|
import com.ruoyi.device.camera.service.IArdCamerasService;
|
import com.ruoyi.device.camera.service.ICameraSdkService;
|
import com.ruoyi.device.channel.domain.ArdChannel;
|
import com.ruoyi.device.channel.service.IArdChannelService;
|
import com.ruoyi.device.channel.service.impl.ArdChannelServiceImpl;
|
import com.ruoyi.media.domain.Vtdu;
|
import com.ruoyi.media.service.IMediaService;
|
import com.ruoyi.media.service.IVtduService;
|
import com.ruoyi.rongcloud.service.RongCloudService;
|
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.utils.sdk.dhsdk.service.impl.DahuaSDK;
|
import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
import java.util.UUID;
|
import java.util.stream.Collectors;
|
|
/**
|
* @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
|
IVtduService vtduService;
|
@Resource
|
IMediaService mediaService;
|
@Resource
|
private ICameraSdkService cameraSdkService;
|
@Resource
|
private CameraSDKFactory cameraSDKFactory;
|
@Resource
|
private IArdChannelService ardChannelService;
|
/**
|
* 同步相机在线状态
|
* 刘苏义
|
* 2023/10/8 14:54:41
|
*/
|
public void cameraState() {
|
try {
|
ArdCameras ardCamera = new ArdCameras();
|
//调用查询方法
|
List<ArdCameras> ardCameras = iArdCamerasService.selectArdCamerasListNoDataScope(ardCamera);
|
for (ArdCameras camera : ardCameras) {
|
CameraCmd cmd = new CameraCmd();
|
cmd.setCameraId(camera.getId());
|
boolean onLineNew = cameraSdkService.isOnLine(cmd);
|
boolean onLineOld = "1".equals(camera.getState());
|
if (onLineNew != onLineOld) {
|
if (onLineNew) {
|
camera.setState("1");
|
} else {
|
camera.setState("0");
|
}
|
iArdCamerasService.updateArdCameras(camera);
|
}
|
}
|
} catch (Exception ex) {
|
log.error("同步相机在线状态异常:" + ex.getMessage());
|
}
|
}
|
|
/**
|
* @Author 刘苏义
|
* @Description 同步通道状态实时同步流媒体
|
* @Date 2024/7/9 16:01
|
*/
|
public void syncChannelState() {
|
log.warn("定时同步通道任务开始");
|
//获取所有nvr设备
|
List<ArdCameras> ardCamerasList = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
|
if (ardCamerasList.size() > 0) {
|
ardCamerasList.stream()
|
.forEach(ardCameras -> {
|
//通过SDK获取NVR实际通道
|
CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(ardCameras.getFactory());
|
List<ArdChannel> ardChannelList = cameraSDK.getChannels(ardCameras);
|
//同步通道表
|
ArdChannel ardChannel=new ArdChannel();
|
ardChannel.setDeviceId(ardCameras.getId());
|
List<ArdChannel> ardChannelListDb = ardChannelService.selectArdChannelList(ardChannel);
|
ardChannelService.asyncChannel(ardCameras,ardChannelListDb,ardChannelList);
|
});
|
}
|
}
|
|
/**
|
* 定时获取app用户在线状态
|
* 刘苏义
|
* 2023/8/9 9:17:48
|
*/
|
public void appUserState() {
|
try {
|
List<SysUser> 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());
|
}
|
}
|
|
/**
|
* 同步流媒体
|
* 刘苏义
|
* 2023/10/13 14:13:53
|
*/
|
public void syncVtdu() {
|
log.warn("定时同步流媒体任务开始");
|
List<String> nameList = mediaService.getNameList();
|
List<Vtdu> vtduList = vtduService.selectVtduList(new Vtdu());
|
vtduService.asyncVtdu(vtduList,nameList);
|
}
|
}
|