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.camera.service.ICameraSdkService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @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
|
ICameraSdkService cameraSdkService;
|
@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");
|
Map<String, Double> ptzMap = new HashMap<>();
|
ptzMap.put("p", guideTask.getGuidePTZ().getP());
|
ptzMap.put("t", guideTask.getGuidePTZ().getT());
|
ptzMap.put("z", guideTask.getGuidePTZ().getZ());
|
cmd.setPtzMap(ptzMap);
|
if (guideTask.getRecordSn().equals(1)) {
|
cmd.setRecordObjectName("alarm_" + guideTask.getAlarmId() + "_1");
|
} else {
|
cmd.setRecordObjectName("alarm_" + guideTask.getAlarmId() + "_2");
|
}
|
|
log.debug("开始引导");
|
boolean guideRes = false;
|
if (cmd.getPtzMap().get("p") != null) {
|
//p值存在 优先引导ptz
|
guideRes = cameraSdkService.setPtz(cmd);
|
} else {
|
guideRes = cameraSdkService.guideTargetPosition(cmd);
|
}
|
if (guideRes) {
|
log.debug("引导成功");
|
cameraSdkService.controlLock(cmd);//上锁
|
cameraSdkService.recordStart(cmd);//开始录像
|
try {
|
Thread.sleep(30000);
|
} catch (InterruptedException e) {
|
log.info("当前任务ID" + guideTask.getAlarmId() + "线程被终止");
|
}
|
String url = cameraSdkService.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);
|
break;
|
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());
|
}
|
}
|
}
|