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();
|
}
|
|
|
}
|