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.ArdAlarmRadar; 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.radar.service.IArdAlarmRadarService; 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()); } } }