| package com.ruoyi.alarm.global.service.impl; | 
|   | 
| import com.ruoyi.alarm.access.domain.ArdAlarmAccess; | 
| import com.ruoyi.alarm.access.service.IArdAlarmAccessService; | 
| import com.ruoyi.alarm.external.domain.ArdAlarmExternal; | 
| import com.ruoyi.alarm.external.service.IArdAlarmExternalService; | 
| import com.ruoyi.alarm.global.domain.GuideTask; | 
| import com.ruoyi.alarm.radar.domain.ArdAlarmRadarFire; | 
| import com.ruoyi.alarm.radar.domain.ArdAlarmRadarMove; | 
| import com.ruoyi.alarm.radar.domain.ArdAlarmRadarPump; | 
| import com.ruoyi.alarm.radar.service.IArdAlarmRadarFireService; | 
| import com.ruoyi.alarm.radar.service.IArdAlarmRadarMoveService; | 
| import com.ruoyi.alarm.radar.service.IArdAlarmRadarPumpService; | 
| import com.ruoyi.alarm.tube.domain.ArdAlarmTube; | 
| import com.ruoyi.alarm.tube.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 | 
|     IArdAlarmRadarMoveService ardAlarmRadarMoveService; | 
|     @Resource | 
|     IArdAlarmRadarFireService ardAlarmRadarFireService; | 
|     @Resource | 
|     IArdAlarmRadarPumpService ardAlarmRadarPumpService; | 
|     @Resource | 
|     IHikClientService hikClientService; | 
|     @Resource | 
|     IArdAlarmTubeService ardAlarmTubeService; | 
|   | 
|     @Resource | 
|     IArdAlarmExternalService ardAlarmExternalService; | 
|     @Resource | 
|     IArdAlarmAccessService ardAlarmAccessService; | 
|     public void processTask(GuideTask guideTask) { | 
|         try { | 
|             CameraCmd cmd = new CameraCmd(); | 
|             cmd.setCameraId(guideTask.getCameraId()); | 
|             cmd.setChanNo(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": | 
|                             ArdAlarmRadarMove ardAlarmRadarMove = new ArdAlarmRadarMove(); | 
|                             ardAlarmRadarMove.setId(guideTask.getAlarmId()); | 
|                             if (guideTask.getRecordSn().equals(1)) { | 
|                                 ardAlarmRadarMove.setRecordUrl1(url); | 
|                             } else { | 
|                                 ardAlarmRadarMove.setRecordUrl2(url); | 
|                             } | 
|                             ardAlarmRadarMoveService.updateArdAlarmRadarMove(ardAlarmRadarMove); | 
|                             break; | 
|                         case "sys_radar_fire": | 
|                             ArdAlarmRadarFire ardAlarmRadarFire = new ArdAlarmRadarFire(); | 
|                             ardAlarmRadarFire.setId(guideTask.getAlarmId()); | 
|                             if (guideTask.getRecordSn().equals(1)) { | 
|                                 ardAlarmRadarFire.setRecordUrl1(url); | 
|                             } else { | 
|                                 ardAlarmRadarFire.setRecordUrl2(url); | 
|                             } | 
|                             ardAlarmRadarFireService.updateArdAlarmRadarFire(ardAlarmRadarFire); | 
|                         case "sys_radar_pump": | 
|                             ArdAlarmRadarPump ardAlarmRadarPump = new ArdAlarmRadarPump(); | 
|                             ardAlarmRadarPump.setId(guideTask.getAlarmId()); | 
|                             if (guideTask.getRecordSn().equals(1)) { | 
|                                 ardAlarmRadarPump.setRecordUrl1(url); | 
|                             } else { | 
|                                 ardAlarmRadarPump.setRecordUrl2(url); | 
|                             } | 
|                             ardAlarmRadarPumpService.updateArdAlarmRadarPump(ardAlarmRadarPump); | 
|                             break; | 
|                         case "sys_external": | 
|                             ArdAlarmExternal ardAlarmExternal = new ArdAlarmExternal(); | 
|                             ardAlarmExternal.setId(guideTask.getAlarmId()); | 
|                             ardAlarmExternal.setRecordUrl(url); | 
|                             ardAlarmExternalService.updateArdAlarmExternal(ardAlarmExternal); | 
|                             break; | 
|                         case "sys_access_control": | 
|                             ArdAlarmAccess ardAlarmAccess = new ArdAlarmAccess(); | 
|                             ardAlarmAccess.setId(guideTask.getAlarmId()); | 
|                             ardAlarmAccess.setRecordUrl(url); | 
|                             ardAlarmAccessService.updateArdAlarmAccess(ardAlarmAccess); | 
|                             break; | 
|                     } | 
|                 } | 
|             } | 
|         } catch (Exception ex) { | 
|             log.info("线程任务异常:" + ex.getMessage()); | 
|         } | 
|     } | 
| } |