From e1886ba4b5f6ed4b4e14117985ba95802c36d2e1 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 24 Apr 2024 17:00:00 +0800
Subject: [PATCH] 海康事件新增事件信息写入及查询
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java | 47 ++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml | 25 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java | 23 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java | 29 ++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java | 86 ++++++++++-
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java | 20 ++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java | 8
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java | 118 ++++++++++++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java | 25 +++
9 files changed, 366 insertions(+), 15 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
index ad50578..bc118df 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
@@ -10,15 +10,15 @@
/**
* post
*/
- public static final String HOST = "36.134.79.80:1443";
-// public static final String HOST = "v.hubeishuiyi.cn:1443";
+// public static final String HOST = "36.134.79.80:1443";
+ public static final String HOST = "v.hubeishuiyi.cn:1443";
/**
* newPost
*/
- public static final String NEW_HOST = "223.76.234.232:1443";
-// public static final String NEW_HOST = "v.hubeishuiyi.cn:1443";
+// public static final String NEW_HOST = "223.76.234.232:1443";
+ public static final String NEW_HOST = "v.hubeishuiyi.cn:1443";
/**
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java
index 57f782d..6dc8071 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java
@@ -1,24 +1,26 @@
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.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.HkVO;
+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 java.util.Map;
import static cn.gistack.sm.hk.util.GetCameraUtils.*;
@@ -34,7 +36,71 @@
@AllArgsConstructor
public class HkEventController {
- private final HkService hkService;
+ 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);
+ }
+
/**
* 海康视频事件订阅
@@ -83,15 +149,13 @@
*/
@PostMapping(value = "/eventRcv")
public String eventRcv(@RequestBody String data) {
- Date date = new Date();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化输出json
JSONObject jsonObject = JSON.parseObject(data);
String prettyData = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue);
- System.out.println(simpleDateFormat.format(date) + "收到数据:" + System.lineSeparator() + prettyData);
- log.info(simpleDateFormat.format(date) + "收到数据:" + System.lineSeparator() + prettyData);
-
+ // 异步保存数据
+ asyncHkEventService.saveHkEventInfo(prettyData);
+ // 立即返回
JSONObject jsonBody = new JSONObject();
jsonBody.put("code", "200");
jsonBody.put("msg", "ok");
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java
new file mode 100644
index 0000000..e3a5f02
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java
@@ -0,0 +1,118 @@
+package cn.gistack.sm.hk.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 海康视频事件
+ *
+ * @author zhongrj
+ * @date 2024-04-24
+ */
+@Data
+@TableName(value = "sm_hk_event")
+@ApiModel(value = "sm_hk_event对象", description = "考核方案")
+public class HkEvent implements Serializable {
+
+ /**
+ * 主键id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 事件唯一标识
+ */
+ @ApiModelProperty(value = "事件唯一标识")
+ private String eventId;
+
+ /**
+ * 事件源编号,物理设备是资源编号
+ */
+ @ApiModelProperty(value = "事件源编号,物理设备是资源编号")
+ private String srcIndex;
+
+ /**
+ * 事件源类型
+ */
+ @ApiModelProperty(value = "事件源类型")
+ private String srcType;
+ /**
+ * 事件源名称
+ */
+ @ApiModelProperty(value = "事件源名称")
+ private String srcName;
+
+ /**
+ * 事件类型
+ */
+ @ApiModelProperty(value = "事件类型")
+ private Long eventType;
+ /**
+ * 事件状态
+ * 0-瞬时
+ * 1-开始
+ * 2-停止
+ * 4-事件联动结果更新
+ * 5-事件图片异步上传
+ */
+ @ApiModelProperty(value = "事件状态")
+ private Integer status;
+
+ /**
+ * 事件等级:
+ * 0-未配置
+ * 1-低
+ * 2-中
+ * 3-高
+ * 注意,此处事件等级是指在事件联动中配置的等级,需要配置了事件联动,才返回这个字段
+ */
+ @ApiModelProperty(value = "事件等级")
+ private Integer eventLvl;
+
+ /**
+ * 脉冲超时时间
+ */
+ @ApiModelProperty(value = "脉冲超时时间")
+ private Long timeout;
+
+ /**
+ * 事件发生时间(设备时间)
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "事件发生时间(设备时间)")
+ private Date happenTime;
+
+ /**
+ * 事件发生的事件源父设备编码
+ */
+ @ApiModelProperty(value = "事件发生的事件源父设备编码")
+ private String srcParentIndex;
+
+ /**
+ * 事件从接收者(程序处理后)发出的时间
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "事件从接收者(程序处理后)发出的时间")
+ private Date sendTime;
+
+ /**
+ * 创建时间
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "创建时间")
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ private Date createTime;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java
new file mode 100644
index 0000000..26ef039
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java
@@ -0,0 +1,20 @@
+package cn.gistack.sm.hk.mapper;
+
+import cn.gistack.sm.hk.entity.HkEvent;
+import cn.gistack.sm.hk.vo.HkEventVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface HkEventMapper extends BaseMapper<HkEvent> {
+
+ /**
+ * 自定义分页列表查询
+ * @param page
+ * @param hkEvent
+ * @return
+ */
+ List<HkEventVO> selectHkEventPage(@Param("page") IPage<HkEventVO> page,@Param("hkEvent") HkEventVO hkEvent);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml
new file mode 100644
index 0000000..c58e669
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gistack.sm.hk.mapper.HkEventMapper">
+
+ <!--自定义分页列表查询-->
+ <select id="selectHkEventPage" resultType="cn.gistack.sm.hk.vo.HkEventVO">
+ select * from sm_hk_event where 1 =1
+ <if test="hkEvent.srcName!=null and hkEvent.srcName!=''">
+ and src_name like concat('%',#{hkEvent.srcName},'%')
+ </if>
+ <if test="hkEvent.status!=null">
+ and status = #{hkEvent.status}
+ </if>
+ <if test="hkEvent.eventType!=null">
+ and event_type = #{hkEvent.eventType}
+ </if>
+ <if test="hkEvent.startTime !=null and hkEvent.startTime !=''">
+ AND send_time >= #{hkEvent.startTime}
+ </if>
+ <if test="hkEvent.endTime !=null and hkEvent.endTime !=''">
+ AND send_time <= #{hkEvent.endTime}
+ </if>
+ </select>
+
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java
new file mode 100644
index 0000000..6806bd5
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java
@@ -0,0 +1,47 @@
+package cn.gistack.sm.hk.service;
+
+import cn.gistack.sm.hk.entity.HkEvent;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class AsyncHkEventService {
+
+ @Autowired
+ private HkEventService hkEventService;
+
+ /**
+ * 异步加载海康视频事件
+ * @param jsonData
+ */
+ @Async
+ public void saveHkEventInfo(String jsonData){
+ JSONObject jsonObject = JSONObject.parseObject(jsonData);
+ String params = jsonObject.get("params").toString();
+ JSONObject parseObject = JSONObject.parseObject(params);
+ JSONArray eventsArray = parseObject.getJSONArray("events");
+ Date sendTime = parseObject.getDate("sendTime");
+ for (int i = 0; i < eventsArray.size(); i++) {
+ HkEvent hkEvent = new HkEvent();
+ hkEvent.setEventId(eventsArray.getJSONObject(i).getString("eventId"));
+ hkEvent.setEventType(eventsArray.getJSONObject(i).getLong("eventType"));
+ hkEvent.setSrcIndex(eventsArray.getJSONObject(i).getString("srcIndex"));
+ hkEvent.setSrcName(eventsArray.getJSONObject(i).getString("srcName"));
+ hkEvent.setSrcType(eventsArray.getJSONObject(i).getString("srcType"));
+ hkEvent.setSrcParentIndex(eventsArray.getJSONObject(i).getString("srcParentIndex"));
+ hkEvent.setTimeout(eventsArray.getJSONObject(i).getLong("timeout"));
+ hkEvent.setHappenTime(eventsArray.getJSONObject(i).getDate("happenTime"));
+ hkEvent.setStatus(eventsArray.getJSONObject(i).getInteger("status"));
+ hkEvent.setEventLvl(eventsArray.getJSONObject(i).getInteger("eventLvl"));
+ hkEvent.setCreateTime(new Date());
+ hkEvent.setSendTime(sendTime);
+ // 保存
+ hkEventService.save(hkEvent);
+ }
+ }
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java
new file mode 100644
index 0000000..809b69f
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java
@@ -0,0 +1,23 @@
+package cn.gistack.sm.hk.service;
+
+
+import cn.gistack.sm.hk.entity.HkEvent;
+import cn.gistack.sm.hk.vo.HkEventVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 海康事件服务接口层
+ * @author zhongrj
+ * @date 2024-04-24
+ */
+public interface HkEventService extends IService<HkEvent> {
+
+ /**
+ * 自定义分页列表查询
+ * @param page
+ * @param hkEvent
+ * @return
+ */
+ IPage<HkEventVO> selectHkEventPage(IPage<HkEventVO> page, HkEventVO hkEvent);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java
new file mode 100644
index 0000000..ada980b
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java
@@ -0,0 +1,29 @@
+package cn.gistack.sm.hk.service.impl;
+
+import cn.gistack.sm.hk.entity.HkEvent;
+import cn.gistack.sm.hk.mapper.HkEventMapper;
+import cn.gistack.sm.hk.service.HkEventService;
+import cn.gistack.sm.hk.vo.HkEventVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 海康事件服务接口实现层
+ * @author zhongrj
+ * @date 2024-04-24
+ */
+@Service
+public class HkEventServiceImpl extends ServiceImpl<HkEventMapper, HkEvent> implements HkEventService {
+
+ /**
+ * 自定义分页列表查询
+ * @param page
+ * @param hkEvent
+ * @return
+ */
+ @Override
+ public IPage<HkEventVO> selectHkEventPage(IPage<HkEventVO> page, HkEventVO hkEvent) {
+ return page.setRecords(baseMapper.selectHkEventPage(page,hkEvent));
+ }
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java
new file mode 100644
index 0000000..d19f912
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java
@@ -0,0 +1,25 @@
+package cn.gistack.sm.hk.vo;
+
+import cn.gistack.sm.hk.entity.HkEvent;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class HkEventVO extends HkEvent implements Serializable {
+
+ /**
+ * 事件类型名称
+ */
+ private String eventTypeName;
+
+ /**
+ * 开始时间
+ */
+ private String startTime;
+
+ /**
+ * 结束时间
+ */
+ private String endTime;
+}
--
Gitblit v1.9.3