aijinhui
2023-09-07 2fa66c208202f420a5f001cf0d67e5aa1bf94578
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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());
        }
    }
}