ke
2024-05-13 659d3e60c6fe5e5bcd8c4cbb3dd8077e29f13a38
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package cn.gistack.sm.hk.controller;
 
 
import cn.gistack.sm.hk.constant.HkConstant;
import cn.gistack.sm.hk.entity.HkEvent;
import cn.gistack.sm.hk.service.AsyncHkEventService;
import cn.gistack.sm.hk.service.HkEventService;
import cn.gistack.sm.hk.vo.EventVO;
import cn.gistack.sm.hk.vo.HkEventVO;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
 
import static cn.gistack.sm.hk.util.GetCameraUtils.*;
 
/**
 * @author zhongrj
 * @Description: 海康视频事件管理
 * @date 2023-08-10
 */
@Slf4j
@Api(tags = "海康视频事件")
@RestController
@RequestMapping("/hk/hkEvent")
@AllArgsConstructor
public class HkEventController {
 
    private final HkEventService hkEventService;
    private final AsyncHkEventService asyncHkEventService;
 
    /**
     * 分页列表查询
     *
     * @param hkEvent
     * @return
     */
    @ApiOperation(value="告警记录-分页列表查询", notes="告警记录-分页列表查询")
    @GetMapping(value = "/list")
    public R queryPageList(HkEvent hkEvent, Query query) {
        IPage<HkEvent> pageList = hkEventService.page(Condition.getPage(query), Condition.getQueryWrapper(hkEvent));
        return R.data(pageList);
    }
 
    /**
     * 自定义分页列表查询
     * @param query
     * @param hkEvent
     * @return
     */
    @ApiOperation(value="告警记录-自定义分页列表查询", notes="告警记录-自定义分页列表查询")
    @GetMapping(value = "/page")
    public R selectAlarmPage(HkEventVO hkEvent, Query query) {
        return R.data(hkEventService.selectHkEventPage(Condition.getPage(query),hkEvent));
    }
 
    /**
     * 添加
     *
     * @param hkEvent
     * @return
     */
    @ApiOperation(value="告警记录-添加", notes="告警记录-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody HkEvent hkEvent) {
        return R.data(hkEventService.save(hkEvent));
    }
 
    /**
     * 编辑
     *
     * @param hkEvent
     * @return
     */
    @ApiOperation(value="告警记录-编辑", notes="告警记录-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public R edit(@RequestBody HkEvent hkEvent) {
        return R.data(hkEventService.updateById(hkEvent));
    }
 
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value="告警记录-通过id查询", notes="告警记录-通过id查询")
    @GetMapping(value = "/queryById")
    public R queryById(@RequestParam(name="id",required=true) String id) {
        HkEvent hkEvent = hkEventService.getById(id);
        return R.data(hkEvent);
    }
 
 
    /**
     * 海康视频事件订阅
     * @param eventVO 订阅参数
     * @return
     */
    @GetMapping(value = "/eventSubscriptionByEventTypes")
    public R eventSubscriptionByEventTypes(EventVO eventVO) {
        eventVO.setType(null==eventVO.getType()?1:eventVO.getType());
        String result = addEventSubscriptionByEventTypes(eventVO, HkConstant.eventSubscriptionByEventTypesURLs);
//        log.info("事件订阅返回信息:" + result);
        JSONObject jsonObject1 = JSONObject.parseObject(result);
        // 查询海康设备列表并返回
        return R.data(jsonObject1);
    }
 
    /**
     * 海康视频事件取消订阅
     * @param eventVO 订阅参数
     * @return
     */
    @GetMapping(value = "/eventUnSubscriptionByEventTypes")
    public R eventUnSubscriptionByEventTypes(EventVO eventVO) {
        eventVO.setType(null==eventVO.getType()?1:eventVO.getType());
        String result = removeEventSubscriptionByEventTypes(eventVO, HkConstant.eventUnSubscriptionByEventTypesURLs);
        JSONObject jsonObject1 = JSONObject.parseObject(result);
        // 查询海康设备列表并返回
        return R.data(jsonObject1);
    }
 
    /**
     * 查询事件订阅信息
     * @param eventVO 订阅参数
     * @return
     */
    @GetMapping(value = "/eventSubscriptionView")
    public R eventSubscriptionView(EventVO eventVO) {
        eventVO.setType(null==eventVO.getType()?1:eventVO.getType());
        String result = getEventSubscriptionView(eventVO, HkConstant.eventSubscriptionViewURLs);
        JSONObject jsonObject1 = JSONObject.parseObject(result);
        // 查询海康设备列表并返回
        return R.data(jsonObject1);
    }
 
    /**
     * 事件回调事件
     * @param data 回调数据
     * @return
     */
    @PostMapping(value = "/eventRcv")
    public String eventRcv(@RequestBody String data) {
        //格式化输出json
        JSONObject jsonObject = JSON.parseObject(data);
        String prettyData = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat,
            SerializerFeature.WriteMapNullValue);
//        log.info("收到事件:" + jsonObject);
        // 异步保存数据
        asyncHkEventService.saveHkEventInfo(prettyData);
        // 立即返回
        JSONObject jsonBody = new JSONObject();
        jsonBody.put("code", "200");
        jsonBody.put("msg", "ok");
        jsonBody.put("data", null);
        return jsonBody.toJSONString();
    }
 
 
}