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 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) { 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) { 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) { 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); // 异步保存数据 asyncHkEventService.saveHkEventInfo(prettyData); // 立即返回 JSONObject jsonBody = new JSONObject(); jsonBody.put("code", "200"); jsonBody.put("msg", "ok"); jsonBody.put("data", null); return jsonBody.toJSONString(); } }