package com.ruoyi.alarm.globalAlarm.service.impl; import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue; import com.ruoyi.alarm.globalAlarm.domain.GuideTask; import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar; import com.ruoyi.alarm.radarAlarm.service.IArdAlarmRadarService; import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.hiksdk.service.IHikClientService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * @ClassName QueueTaskExecutor * @Description: 队列任务执行器 * @Author 刘苏义 * @Date 2023/6/29 21:10 * @Version 1.0 */ @Component @Slf4j(topic = "guideQueue") public class QueueTaskExecutor { @Resource IHikClientService hikClientService; @Resource IArdAlarmTubeService ardAlarmTubeService; @Resource IArdAlarmRadarService ardAlarmRadarService; public void processTask(GuideTask guideTask) { try { CameraCmd cmd = new CameraCmd(); cmd.setCameraId(guideTask.getCameraId()); cmd.setChannelNum(guideTask.getChanNum()); cmd.setTargetPosition(guideTask.getTargetPosition()); cmd.setOperator(guideTask.getAlarmType()); cmd.setExpired(30); cmd.setRecordBucketName("record"); cmd.setRecordObjectName("alarm_"+guideTask.getAlarmId()); log.debug("开始引导"); boolean guideRes = hikClientService.guideTargetPosition(cmd); if (guideRes) { log.debug("引导成功"); hikClientService.controlLock(cmd);//上锁 hikClientService.recordStart(cmd);//开始录像 try { Thread.sleep(30000); } catch (InterruptedException e) { log.info("当前任务ID"+guideTask.getAlarmId()+"线程被终止"); } String url = hikClientService.recordStopToMinio(cmd);//停止录像返回url if (StringUtils.isNotEmpty(url)) { switch (guideTask.getAlarmType()) { case "sys_tube_leak": ArdAlarmTube ardAlarmTube = new ArdAlarmTube(); ardAlarmTube.setId(guideTask.getAlarmId()); ardAlarmTube.setRecordUrl(url); ardAlarmTubeService.updateArdAlarmTube(ardAlarmTube); break; case "sys_radar_move": ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar(); ardAlarmRadar.setId(guideTask.getAlarmId()); if (guideTask.getRecordSn().equals(1)) { ardAlarmRadar.setRecordUrl1(url); } else { ardAlarmRadar.setRecordUrl2(url); } ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar); break; case "sys_radar_fire": ardAlarmRadar = new ArdAlarmRadar(); ardAlarmRadar.setId(guideTask.getAlarmId()); if (guideTask.getRecordSn().equals(1)) { ardAlarmRadar.setRecordUrl1(url); } else { ardAlarmRadar.setRecordUrl2(url); } ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar); break; } } } } catch (Exception ex) { log.info("线程任务异常:" + ex.getMessage()); } } }