aijinhui
2023-11-08 d803609b8a2e43afcf5921f42f29ce7f6e68fb84
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -1,126 +1,121 @@
package com.ruoyi.quartz.task;
import com.alibaba.fastjson2.JSONObject;
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.channel.domain.ArdChannel;
import com.ruoyi.device.dhsdk.service.IDhClientService;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.media.domain.Items;
import com.ruoyi.media.domain.JsonsRoot;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
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 hikClientService;
    @Resource
    IDhClientService dhClientService;
    @Resource
    IVtduService vtduService;
    @Resource
    IMediaService mediaService;
    /**
     * 同步相机在线状态
     * 刘苏义
     * 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 = false;
                // 判断是1还是2
                if (camera.getFactory().equals("1")) {
                    onLineNew = hikClientService.isOnLine(cmd);
                } else if (camera.getFactory().equals("2")) {
                    onLineNew = dhClientService.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());
        }
    }
    /**
     * 定时获取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 vtdu() {
        List<Vtdu> vtdus = vtduService.selectVtduList(new Vtdu());
        for (Vtdu vtdu : vtdus) {
            boolean nameExist = mediaService.checkNameExist(vtdu.getName());
            if (!nameExist) {
                mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
            }
        }
    }
}
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.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;
/**
 * @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
    HikvisionSDK hikClientService;
    @Resource
    DahuaSDK dhClientService;
    @Resource
    IVtduService vtduService;
    @Resource
    IMediaService mediaService;
    /**
     * 同步相机在线状态
     * 刘苏义
     * 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 = false;
                // 判断是1还是2
                if (camera.getFactory().equals("1")) {
                    onLineNew = hikClientService.isOnLine(cmd);
                } else if (camera.getFactory().equals("2")) {
                    onLineNew = dhClientService.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());
        }
    }
    /**
     * 定时获取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 vtdu() {
        List<Vtdu> vtdus = vtduService.selectVtduList(new Vtdu());
        for (Vtdu vtdu : vtdus) {
            boolean nameExist = mediaService.checkNameExist(vtdu.getName());
            if (!nameExist) {
                mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
            }
        }
    }
}