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