‘liusuyi’
2024-01-16 8926d27639d8cb9826941b482926f774bd10dc92
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java
@@ -15,7 +15,9 @@
import com.ruoyi.alarm.tube.domain.ArdAlarmTube;
import com.ruoyi.alarm.tube.service.IArdAlarmTubeService;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
@@ -58,25 +60,6 @@
        }
        log.debug("新任务入队:" + task.getAlarmId());
        guideTaskQueue.add(task);
        /*获取该相机的当前执行线程-----弃用*/
        //TaskThread currentTaskThread = threadMap.get(cameraId);
        ////如果队列当前线程正在运行,若入队任务优先级大于当前任务优先级,则终止当前线程
        //if (currentTaskThread != null){
        //    if (task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) {
        //        currentTaskThread.getThread().interrupt();
        //    }
        //    if (!currentTaskThread.getThread().isAlive()) {
        //        Thread newThread = createThread(cameraId, guideTaskQueue);
        //        threadMap.put(cameraId, new TaskThread(newThread, task));
        //        newThread.start();
        //    }
        //}
        ////如果队列当前没有线程正在运行,则启动新线程
        //else {
        //    Thread newThread = createThread(cameraId, guideTaskQueue);
        //    threadMap.put(cameraId, new TaskThread(newThread, task));
        //    newThread.start();
        //}
    }
    @Async("guideExecutor")
@@ -94,7 +77,7 @@
                }
                log.debug("执行新任务:【" + newTask.getAlarmId() + "】");
                log.debug("剩余任务数:【" + guideTasks.size() + "】");
                // 异步处理任务,并获取Future
                // 处理任务
                processTask(newTask);
            }
            try {
@@ -104,7 +87,7 @@
            }
        }
    }
    //异步处理任务
    public void processTask(GuideTask guideTask) {
        try {
            if (!IsEnableGuide(guideTask.getCameraId())) {
@@ -114,35 +97,15 @@
            CameraCmd cmd = new CameraCmd();
            cmd.setCameraId(guideTask.getCameraId());
            cmd.setChanNo(guideTask.getChanNo());
            cmd.setTargetPosition(guideTask.getTargetPosition());
            cmd.setOperator(guideTask.getAlarmType());
            cmd.setExpired(30);
            cmd.setRecordBucketName("record");
            Map<String, Double> ptzMap = new HashMap<>();
            switch (guideTask.getChanNo()) {
                case 1:
                    ptzMap.put("p", guideTask.getGuidePTZ().getP1());
                    ptzMap.put("t", guideTask.getGuidePTZ().getT1());
                    ptzMap.put("z", guideTask.getGuidePTZ().getZ1());
                    break;
                case 2:
                    ptzMap.put("p", guideTask.getGuidePTZ().getP2());
                    ptzMap.put("t", guideTask.getGuidePTZ().getT2());
                    ptzMap.put("z", guideTask.getGuidePTZ().getZ2());
                    break;
            }
            cmd.setPtzMap(ptzMap);
            cmd.setRecordObjectName("alarm_" + guideTask.getAlarmId());
            cmd.setTargetPosition(guideTask.getTargetPosition());
            cmd.setRecordObjectName("alarmGuide/"+ DateUtils.getDateYYYYMMDD()+"/"+guideTask.getAlarmType()+"/"+guideTask.getAlarmId());
            ICameraSdkService cameraSdkService = SpringUtils.getBean(ICameraSdkService.class);
            log.debug("开始引导");
            boolean guideRes = false;
            boolean recordFlag = false;
            if (cmd.getPtzMap().get("p") != null) {
                //p值存在 优先引导ptz
                guideRes = cameraSdkService.setPtz(cmd);
            } else {
                guideRes = cameraSdkService.guideTargetPosition(cmd);
            }
            boolean guideRes = cameraSdkService.guideTargetPosition(cmd);
            if (guideRes) {
                log.debug("引导成功");
                cameraSdkService.controlLock(cmd);//上锁