From 148a0727739c3f61e1a15bf36d5489cb77d4c5f3 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 20 九月 2022 18:00:27 +0800
Subject: [PATCH] 视频报警接口

---
 ycl-platform/src/main/resources/mapper/videoAlarm/VideoAlarmReportDao.xml                   |   21 +++
 ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmDataParam.java                       |   41 ++++++
 ycl-platform/src/main/java/com/ycl/entity/videoAlarm/VideoAlarmReport.java                  |   80 +++++++++++++
 ycl-platform/src/main/java/com/ycl/service/videoAlarm/IVideoAlarmReportService.java         |   25 ++++
 ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java                               |    1 
 ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java              |   38 ++++++
 ycl-common/src/main/java/com/ycl/api/CommonResult.java                                      |    6 +
 ycl-platform/src/main/java/com/ycl/dto/videoAlarm/CameraInfParam.java                       |   47 +++++++
 ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java |   60 ++++++++++
 ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmParam.java                           |   32 +++++
 ycl-platform/src/main/java/com/ycl/mapper/videoAlarm/VideoAlarmReportMapper.java            |    7 +
 11 files changed, 358 insertions(+), 0 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/api/CommonResult.java b/ycl-common/src/main/java/com/ycl/api/CommonResult.java
index 793afa4..9cc5b46 100644
--- a/ycl-common/src/main/java/com/ycl/api/CommonResult.java
+++ b/ycl-common/src/main/java/com/ycl/api/CommonResult.java
@@ -13,12 +13,18 @@
     protected CommonResult() {
     }
 
+    public CommonResult(long code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
     protected CommonResult(long code, String message, T data) {
         this.code = code;
         this.message = message;
         this.data = data;
     }
 
+
     /**
      * 鎴愬姛杩斿洖缁撴灉
      *
diff --git a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
index f58d0ed..16db2f4 100644
--- a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
+++ b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
@@ -9,6 +9,7 @@
  * @since 2022-09-06
  */
 public enum ResultCode implements IErrorCode {
+    API_SUCCESS(0, "鎿嶄綔鎴愬姛"),
     SUCCESS(200, "鎿嶄綔鎴愬姛"),
     FAILED(500, "鎿嶄綔澶辫触"),
     VALIDATE_FAILED(404, "鍙傛暟妫�楠屽け璐�"),
diff --git a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
new file mode 100644
index 0000000..dc22b34
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -0,0 +1,38 @@
+package com.ycl.controller.platformApi;
+
+import com.ycl.api.CommonResult;
+import com.ycl.dto.videoAlarm.AlarmParam;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.service.videoAlarm.IVideoAlarmReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author admin
+ */
+@Api(tags = "绗笁鏂规帴鍙�-鎶ヨ")
+@RestController
+@RequestMapping("/API")
+public class AlarmController {
+
+    private IVideoAlarmReportService videoAlarmReportService;
+
+    @Autowired
+    public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
+        this.videoAlarmReportService = videoAlarmReportService;
+    }
+
+    @ApiOperation("瑙嗛鎶ヨ鎺ㄩ�丄PI")
+    @PostMapping("/AlarmReport")
+    public CommonResult alarmReport(@RequestBody @Validated AlarmParam alarmParam) {
+        videoAlarmReportService.save(alarmParam);
+        return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage());
+    }
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmDataParam.java b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmDataParam.java
new file mode 100644
index 0000000..33e292f
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmDataParam.java
@@ -0,0 +1,41 @@
+package com.ycl.dto.videoAlarm;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * AlarmDataParam
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-20 16:55
+ **/
+@Data
+public class AlarmDataParam {
+    /**
+     * 鎶ヨ鏃堕棿
+     */
+    @JsonProperty("AlarmTime")
+    private String alarmTime;
+    /**
+     * 鎶ヨID
+     */
+    @JsonProperty("AlarmID")
+    private String alarmID;
+    /**
+     * 绠楁硶绫诲瀷鐮�
+     */
+    @JsonProperty("AlgoType")
+    private Integer algoType;
+    /**
+     * 绠楁硶绫诲瀷鍚嶇О
+     */
+    @JsonProperty("AlgoName")
+    private String algoName;
+    /**
+     * 绠楁硶妫�鍑哄璞′俊鎭紙閫氬父涓�涓棰戝垎鏋愭湇鍔℃姤璀﹀彧鍖呭惈涓�涓洰鏍囦俊鎭�傚浘鐗囩被澶氱洰鏍囨娴嬬被绠楁硶闄ゅ銆傦級
+     */
+    @JsonProperty("AlarmObject")
+    private Object alarmObject;
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmParam.java b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmParam.java
new file mode 100644
index 0000000..6e1e241
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/AlarmParam.java
@@ -0,0 +1,32 @@
+package com.ycl.dto.videoAlarm;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * AlarmParam
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-20 16:55
+ **/
+@Data
+public class AlarmParam {
+    /**
+     * 鎶ヨ鐩告満锛堣棰戝垎鏋愭湇鍔″櫒鎵�閰嶇疆鐨勭敤浜庤幏鍙栬棰戠殑閲囬泦鍙傛暟锛岃缁勫弬鏁扮敤浜庡钩鍙版柟鍒嗚鲸鍒ゅ畾瀵瑰簲鐨勬姤璀﹁妭鐐癸級
+     */
+    @JsonProperty("CameraInf")
+    private CameraInfParam cameraInf;
+    /**
+     * 鎶ヨ鍥剧墖锛圔ASE64缂栫爜鍚庣殑JPG鏁版嵁锛�
+     */
+    @JsonProperty("PicData")
+    private String picData;
+    /**
+     * 鎶ヨ淇℃伅锛堥�氬父琛屼负绫荤畻娉曟姤璀︿竴娆″彧浼氬寘鍚竴涓姤璀︿俊鎭�傜函鍗曞抚鍥剧墖妫�娴嬬被鍒嗘瀽鏈嶅姟鏈夊彲鑳戒細鍑虹幇鍚屼竴寮犲浘锛屽搴斿涓笉鍚岀畻娉曠殑妫�娴嬬粨鏋滅殑鎯呭喌锛屼粠鑰屼笂鎶ュ涓姤璀︿俊鎭級
+     */
+    @JsonProperty("AlarmData")
+    private List<AlarmDataParam> alarmData;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/CameraInfParam.java b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/CameraInfParam.java
new file mode 100644
index 0000000..d4a12fc
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/dto/videoAlarm/CameraInfParam.java
@@ -0,0 +1,47 @@
+package com.ycl.dto.videoAlarm;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+/**
+ * CameraInfParam
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-20 16:55
+ **/
+@Data
+public class CameraInfParam {
+    /**
+     * 璁惧鎴栬�呭钩鍙板湴鍧�
+     */
+    @JsonProperty("IP")
+    private String ip;
+    /**
+     * 璁惧鎴栬�呭钩鍙扮鍙�
+     */
+    @JsonProperty("Port")
+    private Integer port;
+    /**
+     * 鐧诲綍鍒拌澶囨垨鑰呭钩鍙扮殑鐢ㄦ埛
+     */
+    @JsonProperty("User")
+    private String user;
+    /**
+     * 鐧诲綍鍒拌澶囨垨鑰呭钩鍙扮殑瀵嗙爜
+     */
+    @JsonProperty("Password")
+    private String password;
+    /**
+     * 濡傛灉鐧诲綍瑙嗛璁惧鑾峰彇瑙嗛锛屽垯杩欓噷閫氬父涓洪�氶亾鍙枫��
+     */
+    @JsonProperty("Channel")
+    private String channel;
+    /**
+     * 骞冲彴涓婂搴旇鐩告満鐨勫敮涓�璧勬簮ID
+     */
+    @JsonProperty("PlatResourceID")
+    private String platResourceID;
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/entity/videoAlarm/VideoAlarmReport.java b/ycl-platform/src/main/java/com/ycl/entity/videoAlarm/VideoAlarmReport.java
new file mode 100644
index 0000000..02621d9
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/entity/videoAlarm/VideoAlarmReport.java
@@ -0,0 +1,80 @@
+package com.ycl.entity.videoAlarm;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * VideoAlarmReport
+ *
+ * @author: AI
+ * @date:  2022-09-20 17:14
+ * @version V1.0
+**/
+@TableName("ums_video_alarm_report")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "瑙嗛鎶ヨ鎺ㄩ�佽褰曡〃", description = "")
+@Builder
+public class VideoAlarmReport {
+
+    @ApiModelProperty("$column.comment")
+    @TableField("owner")
+    private Integer id;
+
+    @ApiModelProperty("璁块棶鍦板潃")
+    @TableField("ip")
+    private String ip;
+
+    @ApiModelProperty("璁块棶绔彛")
+    @TableField("port")
+    private Integer port;
+
+    @ApiModelProperty("鐧诲綍鐢ㄦ埛")
+    @TableField("user")
+    private String user;
+
+    @ApiModelProperty("鐧诲綍瀵嗙爜")
+    @TableField("password")
+    private String password;
+
+    @ApiModelProperty("瑙嗛閫氶亾")
+    @TableField("channel")
+    private String channel;
+
+    @ApiModelProperty("骞冲彴涓婂搴旂殑璧勬簮ID")
+    @TableField("plat_resource_id")
+    private String platResourceId;
+
+    @ApiModelProperty("鎶ヨ鍥剧墖")
+    @TableField("pic_data")
+    private String picData;
+
+    @ApiModelProperty("鎶ヨ鏃堕棿")
+    @TableField("alarm_time")
+    private LocalDateTime alarmTime;
+
+    @ApiModelProperty("$column.comment")
+    @TableField("alarm_id")
+    private String alarmId;
+
+    @ApiModelProperty("绠楁硶绫诲瀷鐮�")
+    @TableField("algo_type")
+    private Integer algoType;
+
+    @ApiModelProperty("绠楁硶绫诲瀷鍚嶇О")
+    @TableField("algo_name")
+    private String algoName;
+
+    @ApiModelProperty("绠楁硶妫�鍑哄璞″湪鍥剧墖涓殑鍧愭爣")
+    @TableField("alarm_obj")
+    private String alarmObj;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/videoAlarm/VideoAlarmReportMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/videoAlarm/VideoAlarmReportMapper.java
new file mode 100644
index 0000000..052a138
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/mapper/videoAlarm/VideoAlarmReportMapper.java
@@ -0,0 +1,7 @@
+package com.ycl.mapper.videoAlarm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.entity.videoAlarm.VideoAlarmReport;
+
+public interface VideoAlarmReportMapper extends BaseMapper<VideoAlarmReport> {
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/videoAlarm/IVideoAlarmReportService.java b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/IVideoAlarmReportService.java
new file mode 100644
index 0000000..dfcf780
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/IVideoAlarmReportService.java
@@ -0,0 +1,25 @@
+package com.ycl.service.videoAlarm;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.dto.videoAlarm.AlarmParam;
+import com.ycl.entity.videoAlarm.VideoAlarmReport;
+
+import java.util.List;
+
+/**
+ * 瑙嗛鎶ヨ鎺ㄩ�佽褰曡〃(UmsVideoAlarmReport)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author
+ * @since 2022-09-20 17:10:39
+ */
+public interface IVideoAlarmReportService extends IService<VideoAlarmReport> {
+    /**
+     * 淇濆瓨鏁版嵁
+     *
+     * @param alarmParam
+     * @return void
+     * @author AI
+     * @date 2022-09-20 17:36
+     */
+    void save(AlarmParam alarmParam);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java
new file mode 100644
index 0000000..58a069d
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java
@@ -0,0 +1,60 @@
+package com.ycl.service.videoAlarm.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.dto.videoAlarm.AlarmDataParam;
+import com.ycl.dto.videoAlarm.AlarmParam;
+import com.ycl.dto.videoAlarm.CameraInfParam;
+import com.ycl.entity.videoAlarm.VideoAlarmReport;
+import com.ycl.mapper.videoAlarm.VideoAlarmReportMapper;
+import com.ycl.service.videoAlarm.IVideoAlarmReportService;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+/**
+ * VideoAlarmReportServiceImpl
+ *
+ * @version V1.0
+ * @author: AI
+ * @date: 2022-09-20 17:36
+ **/
+@Service
+public class VideoAlarmReportServiceImpl extends ServiceImpl<VideoAlarmReportMapper, VideoAlarmReport> implements IVideoAlarmReportService {
+
+    @Override
+    public void save(AlarmParam alarmParam) {
+        if (alarmParam != null && alarmParam.getAlarmData().size() > 0) {
+            CameraInfParam cameraInf = alarmParam.getCameraInf();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+            String picData = "{}";
+            for (int i = 0; i < alarmParam.getAlarmData().size(); i++) {
+                AlarmDataParam alarmData = alarmParam.getAlarmData().get(i);
+                /******************** 澶勭悊鍥剧墖 **********************/
+                try {
+                    Date date = sdf.parse(alarmData.getAlarmTime());
+                    Instant instant = date.toInstant();
+                    ZoneId zoneId = ZoneId.systemDefault();
+
+                    VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder()
+                            .ip(cameraInf.getIp()).port(cameraInf.getPort())
+                            .user(cameraInf.getUser()).password(cameraInf.getPassword())
+                            .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID())
+                            .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime())
+                            .alarmId(alarmData.getAlarmID()).algoType(alarmData.getAlgoType())
+                            .algoName(alarmData.getAlgoName()).alarmObj(JSON.toJSONString(alarmData.getAlarmObject()))
+                            .build();
+                    baseMapper.insert(videoAlarmReport);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+}
diff --git a/ycl-platform/src/main/resources/mapper/videoAlarm/VideoAlarmReportDao.xml b/ycl-platform/src/main/resources/mapper/videoAlarm/VideoAlarmReportDao.xml
new file mode 100644
index 0000000..e96e4d0
--- /dev/null
+++ b/ycl-platform/src/main/resources/mapper/videoAlarm/VideoAlarmReportDao.xml
@@ -0,0 +1,21 @@
+<?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="com.ycl.dao.UmsVideoAlarmReportDao">
+
+    <resultMap type="com.ycl.entity.videoAlarm.VideoAlarmReport" id="VideoAlarmReportMap">
+        <result property="id" column="id"/>
+        <result property="ip" column="ip"/>
+        <result property="port" column="port"/>
+        <result property="user" column="user"/>
+        <result property="password" column="password"/>
+        <result property="channel" column="channel"/>
+        <result property="platResourceId" column="plat_resource_id"/>
+        <result property="picData" column="pic_data"/>
+        <result property="alarmTime" column="alarm_time"/>
+        <result property="alarmId" column="alarm_id"/>
+        <result property="algoType" column="algo_type"/>
+        <result property="algoName" column="algo_name"/>
+        <result property="alarmObj" column="alarm_obj"/>
+    </resultMap>
+
+</mapper>

--
Gitblit v1.8.0