zhongrj
2023-04-27 6d8304bd2ca28bb84e176aeb41322a9dbd9cd997
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
131
132
133
134
135
136
137
package cn.gistack.sm.hk.controller;
 
import cn.gistack.sm.hk.constant.HkConstant;
import cn.gistack.sm.hk.constant.ProtocolConstant;
import cn.gistack.sm.hk.service.HkService;
import cn.gistack.sm.hk.vo.HkVO;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
 
import java.util.Map;
 
import static cn.gistack.sm.hk.util.GetCameraUtils.*;
 
/**
 * @author zhongrj
 * @Description: 海康设备控制层
 * @date 2023-03-30
 */
@Slf4j
@Api(tags = "海康设备")
@RestController
@RequestMapping("/hk/hk")
@AllArgsConstructor
public class HkController {
 
    private final HkService hkService;
 
    /**
     * 分页列表查询
     * @param query 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-分页列表查询", notes = "海康设备-分页列表查询")
    @GetMapping(value = "/queryHkList")
    public R queryHkList(Query query) {
        String result = GetCameraResourcePage(query.getCurrent(), query.getSize(), HkConstant.cameras);
        JSONObject jsonObject1 = JSONObject.parseObject(result);
        // 查询海康设备列表并返回
        return R.data(jsonObject1);
    }
 
    /**
     * 海康播放url查询(ws)
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-海康播放url查询(ws)", notes = "海康设备-海康播放url查询(ws)")
    @GetMapping(value = "/queryHkPreviewUrl")
    public R queryHkPreviewUrl(HkVO hk) {
        String url = "";
        // 获取海康播放url
        String result = GetCameraPreviewURL(HkConstant.previewURLs, hk.getCameraIndexCode(), ProtocolConstant.WS);
        if (null!=result) {
            JSONObject jsonObject = JSONObject.parseObject(result);
            Map map = (Map) jsonObject.get("data");
            url = map.get("url").toString();
        }
        // 查询海康设备列表并返回
        return R.data(url);
    }
 
    /**
     * 海康摄像头云台的控制(摄像头左右旋转画面)
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-海康摄像头云台的控制", notes = "海康设备-海康摄像头云台的控制")
    @GetMapping(value = "/handleCameraPosition")
    public R handleCameraPosition(HkVO hk) {
        // 获取海康播放url
        String result = controlling(HkConstant.controllingURLs,
            hk.getCameraIndexCode(),hk.getAction(),hk.getCommand(),hk.getSpeed(),null);
        // 返回
        return R.data(result);
    }
 
    /**
     * 海康摄像头电子放大
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-海康摄像头电子放大", notes = "海康设备-海康摄像头电子放大")
    @GetMapping(value = "/selZoom")
    public R selZoom(HkVO hk) {
        // 获取海康播放url
        String result = selZoomURLs(HkConstant.selZoomURLs,
            hk.getCameraIndexCode(),hk.getStartX(),hk.getStartY(),hk.getEndX(),hk.getEndY());
        // 返回
        return R.data(result);
    }
 
    /**
     * 抓图
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-抓图", notes = "海康设备-抓图")
    @GetMapping(value = "/manualCapture")
    public R manualCapture(HkVO hk) {
        // 获取海康播放url
        String result = manualCaptureUrls(HkConstant.manualCaptureUrls,
            hk.getCameraIndexCode());
        // 返回
        return R.data(result);
    }
 
    /**
     * 懒加载树
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-懒加载树", notes = "海康设备-懒加载树")
    @GetMapping(value = "/lazy-tree")
    public R lazyTree(HkVO hk) {
        // 查询海康设备懒加载树并返回
        return R.data(hkService.lazyTree(hk));
    }
 
    /**
     * 查询监控统计数量
     * @param hk 查询参数
     * @return
     */
    @ApiOperation(value = "海康设备-查询监控统计数量", notes = "海康设备-查询监控统计数量")
    @GetMapping(value = "/getHkStatisticData")
    public R getHkStatisticData(HkVO hk,Query query) {
        // 查询海康设备懒加载树并返回
        return R.data(hkService.getHkStatisticData(hk,query));
    }
 
}