zhangnaisong
2024-07-11 cbbea55a92b178b75f58e7c468f7e8d8ae417c9d
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -1,10 +1,18 @@
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;
@@ -14,8 +22,11 @@
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: 同步任务
@@ -33,14 +44,15 @@
    @Resource
    IArdCamerasService iArdCamerasService;
    @Resource
    HikvisionSDK hikClientService;
    @Resource
    DahuaSDK dhClientService;
    @Resource
    IVtduService vtduService;
    @Resource
    IMediaService mediaService;
    @Resource
    private ICameraSdkService cameraSdkService;
    @Resource
    private CameraSDKFactory cameraSDKFactory;
    @Resource
    private IArdChannelService ardChannelService;
    /**
     * 同步相机在线状态
     * 刘苏义
@@ -48,19 +60,13 @@
     */
    public void cameraState() {
        try {
           ArdCameras ardCamera = new ArdCameras();
            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 onLineNew = cameraSdkService.isOnLine(cmd);
                boolean onLineOld = "1".equals(camera.getState());
                if (onLineNew != onLineOld) {
                    if (onLineNew) {
@@ -73,6 +79,34 @@
            }
        } catch (Exception ex) {
            log.error("同步相机在线状态异常:" + ex.getMessage());
        }
    }
    /**
     * @Author 刘苏义
     * @Description 同步nvr通道状态实时同步流媒体
     * @Date 2024/7/9 16:01
     */
    public void nvrChannelState() {
        //获取所有nvr设备
        List<ArdCameras> ardCamerasList = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
        if (ardCamerasList.size() > 0) {
            ardCamerasList.stream()
                    .filter(ardCameras -> ardCameras.getGdtype().equals("2"))
                    .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(ardChannelListDb,ardChannelList);
                        //同步流媒体表
                        //同步流媒体api
                    });
        }
    }
@@ -109,13 +143,8 @@
     * 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());
            }
        }
        List<String> nameList = mediaService.getNameList();
        List<Vtdu> vtduList = vtduService.selectVtduList(new Vtdu());
        vtduService.asyncVtdu(vtduList,nameList);
    }
}