zhongrj
2024-04-24 e1886ba4b5f6ed4b4e14117985ba95802c36d2e1
海康事件新增事件信息写入及查询
2 files modified
7 files added
381 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java 8 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkEventController.java 86 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java 118 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml 25 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java 47 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java 23 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java 29 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java 25 ●●●●● patch | view | raw | blame | history
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";
    /**
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");
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/HkEvent.java
New file
@@ -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;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.java
New file
@@ -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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/mapper/HkEventMapper.xml
New file
@@ -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 &gt;= #{hkEvent.startTime}
        </if>
        <if test="hkEvent.endTime !=null and hkEvent.endTime !=''">
            AND send_time &lt;= #{hkEvent.endTime}
        </if>
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/AsyncHkEventService.java
New file
@@ -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);
        }
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkEventService.java
New file
@@ -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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkEventServiceImpl.java
New file
@@ -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));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkEventVO.java
New file
@@ -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;
}