Prechádzať zdrojové kódy

异物侵限接口开发

gao.qiang 2 mesiacov pred
rodič
commit
8af6601d63
22 zmenil súbory, kde vykonal 1131 pridanie a 417 odobranie
  1. 53 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmExt.java
  2. 116 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmFrequencyMatter.java
  3. 268 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmMatter.java
  4. 23 0
      business-service/src/main/java/com/ozs/service/entity/vo/Files.java
  5. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/ParameterVo.java
  6. 29 0
      business-service/src/main/java/com/ozs/service/entity/vo/ReleaseAlarmVo.java
  7. 64 0
      business-service/src/main/java/com/ozs/service/entity/vo/ReqMsgAlarmMatterVo.java
  8. 16 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmExtMapper.java
  9. 18 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmFrequencyMatterMapper.java
  10. 24 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMatterMapper.java
  11. 16 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmExtService.java
  12. 16 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmFrequencyMatterService.java
  13. 17 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmMatterService.java
  14. 20 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmExtServiceImpl.java
  15. 20 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmFrequencyMatterServiceImpl.java
  16. 23 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmMatterServiceImpl.java
  17. 5 0
      business-service/src/main/resources/mapper/service/MsgAlarmExtMapper.xml
  18. 5 0
      business-service/src/main/resources/mapper/service/MsgAlarmFrequencyMatterMapper.xml
  19. 5 0
      business-service/src/main/resources/mapper/service/MsgAlarmMatterMapper.xml
  20. 186 0
      hazard-sdk/src/main/java/com/ozs/config/AjaxResults.java
  21. 195 412
      hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java
  22. 1 5
      hazard-sdk/src/main/java/com/ozs/controller/upload/UploadController.java

+ 53 - 0
business-service/src/main/java/com/ozs/service/entity/MsgAlarmExt.java

@@ -0,0 +1,53 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 报警扩展表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MsgAlarmExt implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 报警唯一标识UUID
+     */
+    private String alarmId;
+
+    /**
+     * 1图片;2声音;3视频;4.录制视频的地址
+     */
+    private Integer alarmAttType;
+
+    /**
+     * 存储路径
+     */
+    private String alarmAttPath;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 116 - 0
business-service/src/main/java/com/ozs/service/entity/MsgAlarmFrequencyMatter.java

@@ -0,0 +1,116 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 异物侵限报警信息频次表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-23
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MsgAlarmFrequencyMatter extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 报警唯一标识
+     */
+    private String alarmId;
+
+    /**
+     * 报警时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date alarmTime;
+
+    /**
+     * 报警线路
+     */
+    private String railwayCode;
+
+    /**
+     * 报警行别 : 1上行2下行 line_dir
+     */
+    private Integer lineDir;
+
+    /**
+     * 报警里程位置alarm_mile
+     */
+    private Integer alarmMile;
+
+    /**
+     * 报警内容
+     */
+    private String content;
+
+    /**
+     * 报警级别alarm_level
+     */
+    private Integer alarmLevel;
+
+    /**
+     * 报警置信度(百分比)
+     */
+    private Integer alarmConfidence;
+
+    /**
+     * 报警病害类型(1泥石流2异物侵限 3断轨监测)
+     */
+    private Integer alarmType;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    private String updateBy;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    @TableField(exist = false)
+    private Integer isLock;
+}

+ 268 - 0
business-service/src/main/java/com/ozs/service/entity/MsgAlarmMatter.java

@@ -0,0 +1,268 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 异物侵限报警信息表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MsgAlarmMatter extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 报警唯一标识
+     */
+    @Excel(name = "报警唯一标识")
+    private String alarmId;
+
+    /**
+     * 报警时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "报警时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date alarmTime;
+
+    /**
+     * 报警线路
+     */
+    private String railwayCode;
+
+    /**
+     * 报警里程位置
+     */
+    private Integer alarmMile;
+
+    /**
+     * 报警内容
+     */
+    @Excel(name = "报警内容")
+    private String content;
+
+    /**
+     * 报警级别
+     */
+//    @Excel(name = "报警级别")
+    private Integer alarmLevel;
+
+    /**
+     * 报警置信度(百分比)
+     */
+    private Integer alarmConfidence;
+
+    /**
+     * 报警行别(1上行2下行)
+     */
+    private Integer lineDir;
+
+    /**
+     * 报警病害类型(1泥石流2异物侵限 3断轨监测)
+     */
+    private Integer alarmType;
+    @TableField(exist = false)
+    private String alarmTypeStr;
+
+    /**
+     * 框定范围
+     */
+    private String alarmAttr;
+
+    /**
+     * 解除人
+     */
+    private String releasedBy;
+
+    /**
+     * 解除时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "解除时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date releasedTime;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    private Integer isRelease;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    private String updateBy;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 解除内容
+     */
+    @Excel(name = "解除内容")
+    private String releaseContent;
+
+    /**
+     * 线路名称
+     */
+    @TableField(exist = false)
+    @Excel(name = "报警线路")
+    private String railwayName;
+
+    /**
+     * 监控范围开始里程位置
+     */
+    @TableField(exist = false)
+    private String beginMile;
+
+    /**
+     * 监控范围结束里程位置
+     */
+    @TableField(exist = false)
+    private String endMile;
+
+    /**
+     * 报警里程位置字符串形式
+     */
+    @TableField(exist = false)
+    @Excel(name = "报警里程位置")
+    private String alarmMiles;
+
+    /**
+     * 报警次数
+     */
+    @TableField(exist = false)
+    private Integer alarmCount;
+
+    /**
+     * 报警图片地址网络路径
+     */
+    @TableField(exist = false)
+    private List<String> imageUrls;
+
+    /**
+     * 解除人真实姓名
+     */
+    @TableField(exist = false)
+    @Excel(name = "解除人")
+    private String releasedByName;
+
+    /**
+     * 状态:1未读;2已读
+     */
+    @TableField(exist = false)
+    private Integer status;
+
+    /**
+     * 推送消息ID
+     */
+    @TableField(exist = false)
+    private String msgId;
+
+    /**
+     * 报警行别字符串(1上行2下行)
+     */
+    @TableField(exist = false)
+    @Excel(name = "报警行别")
+    private String lineDirName;
+
+    /**
+     * 报警病害类型(目前只有1泥石流,后续可扩展使用)
+     */
+    @TableField(exist = false)
+    @Excel(name = "报警病害类型")
+    private String alarmTypeName;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    @Excel(name = "报警是否解除")
+    @TableField(exist = false)
+    private String  isReleaseName;
+
+    /**
+     * 报警视频URL
+     */
+    private String releasedUrl;
+
+    /**
+     * 来源
+     */
+    private String source;
+
+    /**
+     * 来源名称
+     */
+    @TableField(exist = false)
+    private String sourceName;
+
+    /**
+     * 车次
+     */
+    @TableField(exist = false)
+    @Excel(name = "车次")
+    private  String trainNumName;
+
+
+    /**
+     * 机车号
+     */
+    @Excel(name = "车号")
+    @TableField(exist = false)
+    private String vehicleCode;
+
+
+    /**
+     * 终端名称
+     */
+    @TableField(exist = false)
+    @Excel(name = "终端名称")
+    private String terminalName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "推送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @TableField(exist = false)
+    private Date createTimes;
+}

+ 23 - 0
business-service/src/main/java/com/ozs/service/entity/vo/Files.java

@@ -0,0 +1,23 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ * 报警附件
+ */
+@Data
+public class Files implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 上传文件地址
+     */
+    public String fileUrl;
+    /**
+     * 1图片;2声音;3视频
+     */
+    public Integer fileType;
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/entity/vo/ParameterVo.java

@@ -0,0 +1,11 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class ParameterVo {
+    private  String parameter;
+}

+ 29 - 0
business-service/src/main/java/com/ozs/service/entity/vo/ReleaseAlarmVo.java

@@ -0,0 +1,29 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class ReleaseAlarmVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 报警的唯一标识
+     */
+    private String alarmId;
+    /**
+     * 解除报警时间
+     */
+    private Long releaseTime;
+    /**
+     * 解除原因(内容)
+     */
+    private String releaseContent;
+    /**
+     * 解除人
+     */
+    private String operator;
+}

+ 64 - 0
business-service/src/main/java/com/ozs/service/entity/vo/ReqMsgAlarmMatterVo.java

@@ -0,0 +1,64 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class ReqMsgAlarmMatterVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 报警里程位置
+     */
+    private Integer alarmMile;
+
+    /**
+     * 报警行别
+     */
+    private Integer lineDir;
+
+    /**
+     * 报警线路编码
+     */
+    private String alarmRailway;
+
+    /**
+     * 报警的唯一标识
+     */
+    private String alarmId;
+
+    /**
+     * 报警时间
+     */
+    private Long alarmTime;
+
+    /**
+     * 报警内容
+     */
+    private String content;
+
+    /**
+     * 报警病害类型(1泥石流2异物侵限 3断轨监测)
+     */
+    private Integer alarmType;
+
+    /**
+     * 报警级别
+     */
+    private Integer alarmLevel;
+
+    /**
+     * 报警置信度(百分比)
+     */
+    private Integer alarmConfidence;
+
+
+    /**
+     * 报警病害属性(可以给出泥石流的框定范围)
+     */
+    private String alarmAttr;
+
+    /**
+     * 报警附件集合
+     */
+    private Files[] files;
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmExtMapper.java

@@ -0,0 +1,16 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.MsgAlarmExt;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+public interface MsgAlarmExtMapper extends BaseMapper<MsgAlarmExt> {
+
+}

+ 18 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmFrequencyMatterMapper.java

@@ -0,0 +1,18 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.MsgAlarmFrequencyMatter;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 异物侵限报警信息频次表 Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-23
+ */
+@Mapper
+public interface MsgAlarmFrequencyMatterMapper extends BaseMapper<MsgAlarmFrequencyMatter> {
+
+}

+ 24 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMatterMapper.java

@@ -0,0 +1,24 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.MsgAlarm;
+import com.ozs.service.entity.MsgAlarmMatter;
+import com.ozs.service.entity.vo.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 异物侵限报警信息表 Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Mapper
+public interface MsgAlarmMatterMapper extends BaseMapper<MsgAlarmMatter> {
+
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/service/MsgAlarmExtService.java

@@ -0,0 +1,16 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.MsgAlarmExt;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+public interface MsgAlarmExtService extends IService<MsgAlarmExt> {
+
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/service/MsgAlarmFrequencyMatterService.java

@@ -0,0 +1,16 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.MsgAlarmFrequencyMatter;
+
+/**
+ * <p>
+ * 异物侵限报警信息频次表 服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-23
+ */
+public interface MsgAlarmFrequencyMatterService extends IService<MsgAlarmFrequencyMatter> {
+
+}

+ 17 - 0
business-service/src/main/java/com/ozs/service/service/MsgAlarmMatterService.java

@@ -0,0 +1,17 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.MsgAlarmMatter;
+
+
+/**
+ * <p>
+ * 异物侵限报警信息表 服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+public interface MsgAlarmMatterService extends IService<MsgAlarmMatter> {
+
+}

+ 20 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmExtServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.MsgAlarmExt;
+import com.ozs.service.mapper.MsgAlarmExtMapper;
+import com.ozs.service.service.MsgAlarmExtService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+@Service
+public class MsgAlarmExtServiceImpl extends ServiceImpl<MsgAlarmExtMapper, MsgAlarmExt> implements MsgAlarmExtService {
+
+}

+ 20 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmFrequencyMatterServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.MsgAlarmFrequencyMatter;
+import com.ozs.service.mapper.MsgAlarmFrequencyMatterMapper;
+import com.ozs.service.service.MsgAlarmFrequencyMatterService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 异物侵限报警信息频次表 服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-23
+ */
+@Service
+public class MsgAlarmFrequencyMatterServiceImpl extends ServiceImpl<MsgAlarmFrequencyMatterMapper, MsgAlarmFrequencyMatter> implements MsgAlarmFrequencyMatterService {
+
+}

+ 23 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmMatterServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.MsgAlarmMatter;
+import com.ozs.service.mapper.MsgAlarmMatterMapper;
+import com.ozs.service.service.MsgAlarmMatterService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 异物侵限报警信息表 服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Service
+@Slf4j
+public class MsgAlarmMatterServiceImpl extends ServiceImpl<MsgAlarmMatterMapper, MsgAlarmMatter> implements MsgAlarmMatterService {
+
+}

+ 5 - 0
business-service/src/main/resources/mapper/service/MsgAlarmExtMapper.xml

@@ -0,0 +1,5 @@
+<?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.ozs.service.mapper.MsgAlarmExtMapper">
+
+</mapper>

+ 5 - 0
business-service/src/main/resources/mapper/service/MsgAlarmFrequencyMatterMapper.xml

@@ -0,0 +1,5 @@
+<?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.ozs.service.mapper.MsgAlarmFrequencyMatterMapper">
+
+</mapper>

+ 5 - 0
business-service/src/main/resources/mapper/service/MsgAlarmMatterMapper.xml

@@ -0,0 +1,5 @@
+<?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.ozs.service.mapper.MsgAlarmMatterMapper">
+
+</mapper>

+ 186 - 0
hazard-sdk/src/main/java/com/ozs/config/AjaxResults.java

@@ -0,0 +1,186 @@
+package com.ozs.config;
+
+import com.ozs.common.constant.HttpStatus;
+import com.ozs.common.utils.StringUtils;
+
+import java.util.HashMap;
+
+/**
+ * 操作消息提醒
+ *
+ * @author hx
+ */
+public class AjaxResults extends HashMap<String, Object>
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 状态码 */
+    public static final String CODE_TAG = "resultCode";
+
+    /** 返回内容 */
+    public static final String MSG_TAG = "message";
+
+    /** 数据对象 */
+    public static final String DATA_TAG = "data";
+
+    /**
+     * 初始化一个新创建的 AjaxResults 对象,使其表示一个空消息。
+     */
+    public AjaxResults()
+    {
+    }
+
+    /**
+     * 初始化一个新创建的 AjaxResults 对象
+     *
+     * @param code 状态码
+     * @param msg 返回内容
+     */
+    public AjaxResults(int code, String msg)
+    {
+        super.put(CODE_TAG, code);
+        super.put(MSG_TAG, msg);
+    }
+
+    /**
+     * 初始化一个新创建的 AjaxResults 对象
+     *
+     * @param code 状态码
+     * @param msg 返回内容
+     * @param data 数据对象
+     */
+    public AjaxResults(int code, String msg, Object data)
+    {
+        super.put(CODE_TAG, code);
+        super.put(MSG_TAG, msg);
+        if (StringUtils.isNotNull(data))
+        {
+            super.put(DATA_TAG, data);
+        }
+    }
+
+    /**
+     * 返回成功消息
+     *
+     * @return 成功消息
+     */
+    public static AjaxResults success()
+    {
+        return AjaxResults.success("操作成功");
+    }
+
+    /**
+     * 返回成功数据
+     *
+     * @return 成功消息
+     */
+    public static AjaxResults success(Object data)
+    {
+        return AjaxResults.success("操作成功", data);
+    }
+
+    /**
+     * 返回成功消息
+     *
+     * @param msg 返回内容
+     * @return 成功消息
+     */
+    public static AjaxResults success(String msg)
+    {
+        return AjaxResults.success(msg, null);
+    }
+
+    /**
+     * 返回成功消息
+     *
+     * @param msg 返回内容
+     * @param data 数据对象
+     * @return 成功消息
+     */
+    public static AjaxResults success(String msg, Object data)
+    {
+        return new AjaxResults(HttpStatus.SUCCESS, msg, data);
+    }
+
+    /**
+     * 返回警告消息
+     *
+     * @param msg 返回内容
+     * @return 警告消息
+     */
+    public static AjaxResults warn(String msg)
+    {
+        return AjaxResults.warn(msg, null);
+    }
+
+    /**
+     * 返回警告消息
+     *
+     * @param msg 返回内容
+     * @param data 数据对象
+     * @return 警告消息
+     */
+    public static AjaxResults warn(String msg, Object data)
+    {
+        return new AjaxResults(HttpStatus.WARN, msg, data);
+    }
+
+    /**
+     * 返回错误消息
+     *
+     * @return 错误消息
+     */
+    public static AjaxResults error()
+    {
+        return AjaxResults.error("操作失败");
+    }
+
+    /**
+     * 返回错误消息
+     *
+     * @param msg 返回内容
+     * @return 错误消息
+     */
+    public static AjaxResults error(String msg)
+    {
+        return AjaxResults.error(msg, null);
+    }
+
+    /**
+     * 返回错误消息
+     *
+     * @param msg 返回内容
+     * @param data 数据对象
+     * @return 错误消息
+     */
+    public static AjaxResults error(String msg, Object data)
+    {
+        return new AjaxResults(HttpStatus.ERROR, msg, data);
+    }
+
+    /**
+     * 返回错误消息
+     *
+     * @param code 状态码
+     * @param msg 返回内容
+     * @return 错误消息
+     */
+    public static AjaxResults error(int code, String msg)
+    {
+        return new AjaxResults(code, msg, null);
+    }
+
+    /**
+     * 方便链式调用
+     *
+     * @param key 键
+     * @param value 值
+     * @return 数据对象
+     */
+    @Override
+    public AjaxResults put(String key, Object value)
+    {
+        super.put(key, value);
+        return this;
+    }
+}

+ 195 - 412
hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -1,53 +1,34 @@
 package com.ozs.controller.upload;
 
 import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.annotation.SdkLog;
-import com.ozs.common.constant.Constants;
-import com.ozs.common.core.redis.RedisCache;
 import com.ozs.common.enums.BusinessTypeSdk;
 import com.ozs.common.utils.ApiTokenUtils;
-import com.ozs.common.utils.HttpClientUtil;
 import com.ozs.common.utils.StringUtils;
-import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.common.utils.stateSecrets.SM4Utils;
-import com.ozs.service.entity.BaseCameraManagement;
-import com.ozs.service.entity.BaseDeviceDynamicManagement;
-import com.ozs.service.entity.BaseUser;
-import com.ozs.service.entity.MsgAlarm;
-import com.ozs.service.entity.MsgAlarmFrequency;
-import com.ozs.service.entity.SvcAddress;
-import com.ozs.service.entity.vo.BaseCameraVO;
+import com.ozs.config.AjaxResults;
+import com.ozs.service.entity.*;
+import com.ozs.service.entity.vo.Files;
+import com.ozs.service.entity.vo.ParameterVo;
+import com.ozs.service.entity.vo.ReleaseAlarmVo;
+import com.ozs.service.entity.vo.ReqMsgAlarmMatterVo;
 import com.ozs.service.service.*;
-import com.ozs.vo.ReqDeviceVo;
-import com.ozs.vo.ReqMsgAlarmVo;
 import com.ozs.vo.RespGeoHazardMonitorVo;
-import com.ozs.vo.RespMsgAlarmVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.SetOperations;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
+
 import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 /**
  * 1. 获取身份认证控制层
@@ -57,42 +38,31 @@ import java.util.stream.Collectors;
 @RestController
 @Slf4j
 public class GeoHazardMonitorTokenController {
-    public static final String PATTERN = "^([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$";
+    public static final String PATTERNS = "^[0-9]*$";
     @Resource
     private ApiTokenUtils apiTokenUtils;
-    @Resource
-    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
     @Autowired
-    MsgAlarmService msgAlarmService;
+    MsgAlarmMatterService msgAlarmMatterService;
     @Autowired
-    MsgAlarmFrequencyService msgAlarmFrequencyService;
+    MsgAlarmFrequencyMatterService msgAlarmFrequencyMatterService;
     @Autowired
     SvcAddressService svcAddressService;
     @Autowired
     BaseCameraManagementService baseCameraManagementService;
-    @Value("${sdk.publish}")
-    private String sdkUrl;
     @Autowired
-    private BaseUserService baseUserService;
+    private MsgAlarmExtService msgAlarmExtService;
     @Autowired
-    private RedisCache redisCache;
+    private BaseRailwayManagementService baseRailwayManagementService;
     @Autowired
-    private RedisService redisService;
-    @Value("${base.webUrl}")
-    private String webUrl;
-    @Value("${base.bakUrl}")
-    private String bakUrl;
-    @Value("${base.wsUrl}")
-    private String wsUrl;
-    @Value("${base.recordUrl}")
-    private String recordUrl;
+    private BaseUserService baseUserService;
+
 
     /**
-     * 获取web访问令牌
+     * 异物侵限获取web访问令牌
      *
      * @return
      */
-    @PostMapping("/token")
+    @PostMapping("/api/token")
     @SdkLog(title = "获取web访问令牌", businessType = BusinessTypeSdk.TOKEN)
     public String getWebToken(@RequestBody SvcAddress svcAddress) {
         // 生成令牌
@@ -104,7 +74,7 @@ public class GeoHazardMonitorTokenController {
             jsonObject.put("resultCode", 0);
             jsonObject.put("message", "失败");
             jsonObject.put("data", "客户端编号不能为空");
-            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
         }
         SvcAddress serviceOne = svcAddressService.getOne(lw);
         if (!ObjectUtils.isEmpty(serviceOne)) {
@@ -119,426 +89,239 @@ public class GeoHazardMonitorTokenController {
                     jsonObject.put("resultCode", 1);
                     jsonObject.put("message", "成功");
                     jsonObject.put("data", respGeoHazardMonitorVo);
-                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
                 } else {
                     jsonObject.put("resultCode", 0);
                     jsonObject.put("message", "失败");
                     jsonObject.put("data", "生成token失败");
-                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
                 }
             } else {
                 jsonObject.put("resultCode", 0);
                 jsonObject.put("message", "失败");
                 jsonObject.put("data", "客户端密钥错误");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
             }
         } else {
             jsonObject.put("resultCode", 0);
             jsonObject.put("message", "失败");
             jsonObject.put("data", "参数验证失败");
-            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
         }
     }
 
     /**
      * 报警信息数据传输
-     *
-     * @return // 生成令牌
      */
-    @PostMapping("/alarm")
-    @Transactional
-    @SdkLog(title = "报警信息数据传输", businessType = BusinessTypeSdk.ALARM)
-    public String alarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
+    @PostMapping("/api/alarm")
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized String alarm(@RequestBody ParameterVo parameterVo, HttpServletRequest request) throws Exception {
+        long begin = System.currentTimeMillis();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+        log.info("报警信息数据传输开始时间: " + simpleDateFormat.format(new Date(begin)));
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
         log.info("token:{}", token);
-        log.info("parameter:{}", parameter);
-        JSONObject jsonObject = new JSONObject();
+        log.info("parameter:{}", parameterVo);
+        AjaxResults AjaxResults1 = null;
         if (StringUtils.isNotEmpty(token)) {
-            String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
-            ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
-            if (!reqMsgAlarmVo.getAlarmAttr().matches(PATTERN)) {
-                jsonObject.put("resultCode", 0);
-                jsonObject.put("message", "失败");
-                jsonObject.put("data", "你填写的报警病害属性不符合规则!!!");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            String[] split = token.split("-");
+            String key = split[split.length - 1];
+            if (ObjectUtils.isEmpty(parameterVo)) {
+                AjaxResults1 = new AjaxResults(0, "parameterVo参数不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            if (reqMsgAlarmVo.getAlarmTime().toString().length() == 10) {
-                reqMsgAlarmVo.setAlarmTime(reqMsgAlarmVo.getAlarmTime() * 1000);
+            String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), key);
+            ReqMsgAlarmMatterVo reqMsgAlarmMatterVo = JSON.parseObject(s, ReqMsgAlarmMatterVo.class);
+            if (!reqMsgAlarmMatterVo.getAlarmMile().toString().matches(PATTERNS)) {
+                AjaxResults1 = new AjaxResults(0, "报警里程位置填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
-
-            RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
-            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
-            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmCamera())) {
-                wrapper.eq(BaseCameraManagement::getCameraCode, reqMsgAlarmVo.getAlarmCamera());
+            if (reqMsgAlarmMatterVo.getLineDir() != 1 && reqMsgAlarmMatterVo.getLineDir() != 2) {
+                AjaxResults1 = new AjaxResults(0, "行别填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getOne(wrapper);
-            log.info("baseCameraManagement:{}", baseCameraManagement);
-            if (ObjectUtils.isEmpty(baseCameraManagement)) {
-                jsonObject.put("resultCode", 0);
-                jsonObject.put("message", "失败");
-                jsonObject.put("data", "你填写的相机编码不存在!!!");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+            if (!ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmRailway())) {
+                queryWrapper.eq(BaseRailwayManagement::getRailwayCode, reqMsgAlarmMatterVo.getAlarmRailway());
             }
-            if (ObjectUtils.isEmpty(reqMsgAlarmVo.getLineDir())) {
-                reqMsgAlarmVo.setLineDir(baseCameraManagement.getLineDir());
+            BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+            if (ObjectUtils.isEmpty(baseRailwayManagement)) {
+                AjaxResults1 = new AjaxResults(0, "填写的报警线路编码不存在");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            LambdaQueryWrapper<MsgAlarm> lw = new LambdaQueryWrapper<MsgAlarm>();
-            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmId())) {
-                lw.eq(MsgAlarm::getAlarmId, reqMsgAlarmVo.getAlarmId());
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmId())) {
+                AjaxResults1 = new AjaxResults(0, "报警的唯一标识不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            MsgAlarm alarm = msgAlarmService.getOne(lw);
-            log.info("alarm:{}", alarm);
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmTime())) {
+                AjaxResults1 = new AjaxResults(0, "报警时间不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+            }
+            if (reqMsgAlarmMatterVo.getAlarmType() < 1 || reqMsgAlarmMatterVo.getAlarmType() > 4) {
+                AjaxResults1 = new AjaxResults(0, "报警病害类型填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+            }
+            if (!reqMsgAlarmMatterVo.getAlarmLevel().toString().matches(PATTERNS)) {
+                AjaxResults1 = new AjaxResults(0, "报警级别填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+            }
+            if (reqMsgAlarmMatterVo.getAlarmTime().toString().length() == 10) {
+                reqMsgAlarmMatterVo.setAlarmTime(reqMsgAlarmMatterVo.getAlarmTime() * 1000);
+            }
+            log.info("reqMsgAlarmVo:{}", reqMsgAlarmMatterVo);
+
+
+            LambdaQueryWrapper<MsgAlarmMatter> lw = new LambdaQueryWrapper<MsgAlarmMatter>();
+            if (!ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmId())) {
+                lw.eq(MsgAlarmMatter::getAlarmId, reqMsgAlarmMatterVo.getAlarmId());
+            }
+            MsgAlarmMatter alarm = msgAlarmMatterService.getOne(lw);
             BaseUser admin = baseUserService.getUserName("admin");
-            MsgAlarmFrequency msgAlarmVice = new MsgAlarmFrequency();
+            MsgAlarmFrequencyMatter msgAlarmFrequencyMatter = new MsgAlarmFrequencyMatter();
             if (ObjectUtils.isEmpty(alarm)) {
-                MsgAlarm msgAlarm = new MsgAlarm();
-                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
-                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
-                msgAlarm.setCameraCode(String.valueOf(reqMsgAlarmVo.getAlarmCamera()));
-                String[] imageUrl = reqMsgAlarmVo.getImageUrls();
-                StringBuffer buffer = new StringBuffer();
-                for (String ss : imageUrl) {
-                    buffer.append(ss);
-                    buffer.append(";");
+                List<String> stringList = new ArrayList<>();
+                MsgAlarmMatter msgAlarmMatter = new MsgAlarmMatter();
+                BeanUtils.copyProperties(reqMsgAlarmMatterVo, msgAlarmMatter);
+                BeanUtils.copyProperties(reqMsgAlarmMatterVo, msgAlarmFrequencyMatter);
+                msgAlarmMatter.setCreateBy(admin.getUserId());
+                msgAlarmMatter.setUpdateBy(admin.getUserId());
+                log.info("时间++++ long ---- " + reqMsgAlarmMatterVo.getAlarmTime());
+                log.info("时间++++" + new Date(reqMsgAlarmMatterVo.getAlarmTime()));
+                msgAlarmMatter.setAlarmTime(new Date(reqMsgAlarmMatterVo.getAlarmTime()));
+                log.info("时间++++get" + msgAlarmMatter.getAlarmTime());
+                msgAlarmMatter.setRailwayCode(reqMsgAlarmMatterVo.getAlarmRailway());
+                String source = split[split.length - 2];
+                msgAlarmMatter.setSource(source);
+                if (!ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getFiles())) {
+                    Files[] files1 = reqMsgAlarmMatterVo.getFiles();
+                    if (files1.length > 0) {
+                        for (int i = 0; i < files1.length; i++) {
+                            if (ObjectUtils.isEmpty(files1[i].fileUrl)) {
+                                AjaxResults1 = new AjaxResults(0, "上传文件地址不能为空!!!");
+                                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+                            }
+                            if (files1[i].fileType < 1 || files1[i].fileType > 3) {
+                                AjaxResults1 = new AjaxResults(0, "文件类型填写错误!!!");
+                                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+                            }
+                            MsgAlarmExt msgAlarmExt = new MsgAlarmExt();
+                            msgAlarmExt.setAlarmId(msgAlarmMatter.getAlarmId());
+                            msgAlarmExt.setAlarmAttPath(files1[i].fileUrl);
+                            msgAlarmExt.setAlarmAttType(files1[i].fileType);
+                            msgAlarmExt.setCreateTime(new Date());
+                            stringList.add(files1[i].fileUrl);
+                            msgAlarmExtService.save(msgAlarmExt);
+                        }
+                    }
                 }
-                String url = buffer.toString();
-                msgAlarm.setImageUrl(url.substring(0, url.length() - 1));
-                msgAlarm.setCreateBy(admin.getUserId());
-                msgAlarm.setUpdateBy(admin.getUserId());
-                msgAlarm.setAlarmMile(baseCameraManagement.getInstallMile());
-                log.info("时间++++ long ---- " + reqMsgAlarmVo.getAlarmTime());
-                log.info("时间++++" + new Date(reqMsgAlarmVo.getAlarmTime()));
-                msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
-                log.info("时间++++get" + msgAlarm.getAlarmTime());
-                BaseCameraManagement bcm = msgAlarmService.getBaseCameraManagementByCamereCode(msgAlarm.getCameraCode());
-                BaseCameraVO baseCameraVO = new BaseCameraVO();
-                baseCameraVO.setCameraCode(bcm.getCameraCode());
-                baseCameraVO.setChannel(bcm.getChannel());
-                redisService.addToSet(Constants.ALARM_SET, baseCameraVO);
-                msgAlarmService.getNormalBaseCameraManagementsCache(Constants.ALARM_SET);
-                msgAlarmService.save(msgAlarm);
-                msgAlarmVice.setImageUrl(url.substring(0, url.length() - 1));
-                msgAlarmVice.setCreateBy(admin.getUserId());
-                msgAlarmVice.setUpdateBy(admin.getUserId());
-                msgAlarmFrequencyService.save(msgAlarmVice);
-                respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
-                respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
-                respMsgAlarmVo.setIsCancel(2);
-                respMsgAlarmVo.setCancelTime(null);
-                // 合成报警视频
-                CompletableFuture.runAsync(() -> {
-                    String alarmUrl = alarmHistoryPlay(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), msgAlarm.getAlarmTime());
-                    msgAlarm.setReleasedUrl(alarmUrl);
-                    msgAlarmService.updateById(msgAlarm);
-                });
+                msgAlarmMatter.setImageUrls(stringList);
+                msgAlarmMatterService.save(msgAlarmMatter);
+                msgAlarmFrequencyMatter.setCreateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setUpdateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setRailwayCode(reqMsgAlarmMatterVo.getAlarmRailway());
+                msgAlarmFrequencyMatter.setAlarmTime(new Date(reqMsgAlarmMatterVo.getAlarmTime()));
+                msgAlarmFrequencyMatterService.save(msgAlarmFrequencyMatter);
+
+//                log.info("alarmJSON :{}", JSON.toJSONString(msgAlarmMatter));
+//                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>" + msgAlarmMatter);
+//                String result = HttpClientUtil.postJson(sdkUrl, JSON.toJSONString(msgAlarmMatter));
+//                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>>>" + result);
+//                log.info("result:{}", result);
             } else {
-                BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
-                String[] imageUrl = reqMsgAlarmVo.getImageUrls();
-                StringBuffer buffer = new StringBuffer();
-                for (String ss : imageUrl) {
-                    buffer.append(ss);
-                    buffer.append(";");
-                }
-                String url = buffer.toString();
-                msgAlarmVice.setImageUrl(url.substring(0, url.length() - 1));
-                msgAlarmVice.setCreateBy(admin.getUserId());
-                msgAlarmVice.setUpdateBy(admin.getUserId());
-                msgAlarmFrequencyService.save(msgAlarmVice);
-                respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
-                respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
-                respMsgAlarmVo.setIsCancel(alarm.getIsLock());
-                if (!ObjectUtils.isEmpty(alarm.getReleasedTime())) {
-                    respMsgAlarmVo.setCancelTime(alarm.getReleasedTime().getTime());
-                }
-                respMsgAlarmVo.setCancelTime(null);
+                BeanUtils.copyProperties(reqMsgAlarmMatterVo, msgAlarmFrequencyMatter);
+                msgAlarmFrequencyMatter.setCreateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setUpdateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setAlarmTime(new Date(reqMsgAlarmMatterVo.getAlarmTime()));
+                msgAlarmFrequencyMatter.setRailwayCode(reqMsgAlarmMatterVo.getAlarmRailway());
+                msgAlarmFrequencyMatterService.save(msgAlarmFrequencyMatter);
             }
-            try {
-                MsgAlarm alarms = msgAlarmService.getOne(lw);
-                log.info("sdkUrl:{}", sdkUrl);
-                log.info("alarmJSON :{}", JSON.toJSONString(alarms));
-                String result = HttpClientUtil.postJson(sdkUrl, JSON.toJSONString(alarms));
-                log.info("result:{}", result);
-            } catch (Exception e) {
-                log.info(e.getMessage());
-                e.printStackTrace();
-                jsonObject.put("resultCode", 0);
-                jsonObject.put("message", "失败");
-                jsonObject.put("data", "消息推送失败");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
-            }
-            jsonObject.put("resultCode", 1);
-            jsonObject.put("message", "成功");
-            jsonObject.put("data", respMsgAlarmVo);
-            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            AjaxResults1 = new AjaxResults(1, "ok");
+            long end = System.currentTimeMillis();
+            log.info("报警信息数据传输结束时间: " + simpleDateFormat.format(new Date(end)));
+            log.info("报警信息数据传输请求用时时间:" + (end - begin) + "毫秒");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
         } else {
-            jsonObject.put("resultCode", 2);
-            jsonObject.put("message", "失败");
-            jsonObject.put("data", "token验证失败");
-            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            AjaxResults1 = new AjaxResults(2, "token验证失败");
+            return JSONObject.toJSONString(AjaxResults1);
         }
     }
 
-    @PostMapping("/encryptionAlarm")
-    public String encryptionAlarm(@RequestBody ReqMsgAlarmVo vo) {
-        String s1 = JSONObject.toJSONString(vo);
-        return SM4Utils.encryptData_ECB(s1, "4370780c9a8c43e5");
-    }
-
-    @GetMapping("/test/{code}")
-    public void test(@PathVariable String code) {
-        String alarmUrl = alarmHistoryPlay(code, code, new Date());
-        log.info(alarmUrl);
-    }
-
-
     /**
-     * 设备状态数据传输
+     * 报警解除接口
      *
+     * @param parameterVo
+     * @param request
      * @return
      */
-    @PostMapping("/device/state")
-    public String deviceState(@RequestParam("parameter") String parameter, HttpServletRequest request) throws ParseException {
-        JSONObject jsonObject = new JSONObject();
+    @PostMapping("/api/releaseAlarm")
+    public String releaseAlarm(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
+        AjaxResults AjaxResults1 = null;
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
         log.info("token:{}", token);
-        log.info("parameter:{}", parameter);
+        log.info("parameter:{}", parameterVo);
         if (StringUtils.isNotEmpty(token)) {
-            ReqDeviceVo reqDeviceVo = JSON.parseObject(SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5"), ReqDeviceVo.class);
-            log.info("reqDeviceVo:{}", reqDeviceVo);
-            LambdaQueryWrapper<BaseDeviceDynamicManagement> lw = new LambdaQueryWrapper<BaseDeviceDynamicManagement>();
-            if (ObjectUtils.isEmpty(reqDeviceVo.getCameraCode())) {
-                jsonObject.put("resultCode", 0);
-                jsonObject.put("message", "信息编码为空!");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            String[] split = token.split("-");
+            String key = split[split.length - 1];
+            if (ObjectUtils.isEmpty(parameterVo)) {
+                AjaxResults1 = new AjaxResults(0, "parameterVo参数不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            BaseUser admin = baseUserService.getUserName("admin");
-            lw.eq(BaseDeviceDynamicManagement::getCameraCode, reqDeviceVo.getCameraCode());
-            BaseDeviceDynamicManagement baseDynamicManagement = baseDeviceDynamicManagementService.getOne(lw);
-            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date targetDate = dateFormat.parse("2024-10-25 00:00:00");
-            log.info("修改时间----" + baseDynamicManagement.getUpdateTime());
-            log.info("自己定义的时间----" + targetDate);
-            if (!baseDynamicManagement.getUpdateTime().equals(targetDate)) {
-                baseDynamicManagement.setElectricity(reqDeviceVo.getElectricity());
-                if (reqDeviceVo.getTime().toString().length() == 10) {
-                    reqDeviceVo.setTime(reqDeviceVo.getTime() * 1000);
-                }
-                baseDynamicManagement.setUpdateTime(new Date(reqDeviceVo.getTime()));
-                baseDynamicManagement.setUpdateBy(admin.getUserId());
-                log.info("reqDeviceVo:{}", baseDynamicManagement);
-                if (baseDeviceDynamicManagementService.updateById(baseDynamicManagement)) {
-                    jsonObject.put("resultCode", 1);
-                    jsonObject.put("message", "成功");
-                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
-                } else {
-                    jsonObject.put("resultCode", 0);
-                    jsonObject.put("message", "设备状态数据传输失败");
-                    return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
-                }
-            } else {
-                jsonObject.put("resultCode", 1);
-                jsonObject.put("message", "成功");
-                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+            String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), key);
+            ReleaseAlarmVo releaseAlarmVo = JSON.parseObject(s, ReleaseAlarmVo.class);
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getAlarmId())) {
+                AjaxResults1 = new AjaxResults(0, "报警的唯一标识不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-        } else {
-            jsonObject.put("resultCode", 2);
-            jsonObject.put("message", "token验证失败");
-            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
-        }
-    }
-
-
-    /**
-     * 报警视频回放新
-     *
-     * @param channel
-     * @param cameraCode
-     * @return
-     */
-    public String alarmHistoryPlay(String channel, String cameraCode, Date alarmDate) {
-        // 获取当前时间
-        // 将Date对象转换为Instant对象
-        Instant instant = alarmDate.toInstant();
-
-        OffsetDateTime currentTime = instant.atOffset(ZoneOffset.ofHours(8));
-        log.info("currentTime------------->" + currentTime);
-        // 获取报警前的时间
-        OffsetDateTime beforeTenMinutes = currentTime.minusMinutes(Long.parseLong("5"));
-        log.info("beforeTenMinutes------------->" + beforeTenMinutes);
-        // 获取报警后的时间
-        OffsetDateTime afterTenMinutes = currentTime.plusMinutes(Long.parseLong("5"));
-        log.info("afterTenMinutes------------->" + afterTenMinutes);
-        // 格式化时间
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        // 将字符串解析为LocalDateTime对象(指定时区为东八区)
-        LocalDateTime startTime = LocalDateTime.parse(beforeTenMinutes.format(formatter), formatter).atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();
-        LocalDateTime endTime = LocalDateTime.parse(afterTenMinutes.format(formatter), formatter).atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();
-        // 将LocalDateTime转换为秒数
-        long seconds = startTime.toEpochSecond(ZoneOffset.ofHours(8));
-        long second = endTime.toEpochSecond(ZoneOffset.ofHours(8));
-        try {
-            TimeUnit.SECONDS.sleep(65 * 5);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-        String result;
-        String url = bakUrl + "/gb28181/api/invite?id=" + cameraCode + "&channel=" + channel + "&startTime=" + seconds + "&endTime=" + second;
-        try {
-            result = HttpClientUtil.get(url);
-            if ("200".equals(result)) {
-                String path = apiSummary(cameraCode + "/" + channel + "/" + seconds + "-" + second);
-                if (org.apache.commons.lang3.StringUtils.isNotEmpty(path)) {
-                    String codes = HttpUtils.sendGet(startRecording(cameraCode + "/" + channel + "/" + seconds + "-" + second));
-                    log.info("codes------>" + codes);
-                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                    // 使用SimpleDateFormat将Date对象格式化为指定样式的字符串
-                    String formattedDate = sdf.format(alarmDate);
-                    log.info("-----formattedDate-----------" + formattedDate);
-                    String records = getQueryRecords(cameraCode + "/" + channel + "/" + seconds + "-" + second, formattedDate, "mp4");
-                    log.info("-----records-----------" + records);
-                    return records;
-                }
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseTime())) {
+                AjaxResults1 = new AjaxResults(0, "解除报警时间不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-        } catch (Exception e) {
-            log.info(e.getMessage());
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * 调用流媒体获取流列表信息
-     *
-     * @return
-     */
-    public String apiSummary(String path) {
-        int maxRetries = 5;
-        int retryCount = 0;
-        boolean success = false;
-        JSONArray streamArray = null;
-        while (!success && retryCount < maxRetries) {
-            try {
-                String data = HttpClientUtil.gets(bakUrl + "/api/summary");
-                log.info("data------------------>" + data);
-                if (org.apache.commons.lang3.StringUtils.isNotEmpty(data)) {
-                    JSONObject jsonObject = JSONObject.parseObject(data);
-                    streamArray = jsonObject.getJSONArray("Streams");
-                    success = true;
-                }
-            } catch (Exception e) {
-                log.info("Exception caught: " + e.getMessage());
-                // 增加重试计数
-                retryCount++;
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseContent())) {
+                AjaxResults1 = new AjaxResults(0, "解除原因不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-        }
-        if (!ObjectUtils.isEmpty(streamArray)) {
-            for (int i = 0; i < streamArray.size(); i++) {
-                JSONObject subObj = streamArray.getJSONObject(i);
-                String streamPath = subObj.getString("StreamPath");
-                if (streamPath.equals(path)) {
-                    //取出VideoTracks
-                    JSONArray videoJson = subObj.getJSONArray("VideoTracks");
-                    if (videoJson != null && !videoJson.isEmpty()) {
-                        return wsUrl + "/ws/" + streamPath;
-                    }
-                }
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getOperator())) {
+                AjaxResults1 = new AjaxResults(0, "解除人不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-        }
-        return null;
-    }
-
-    /**
-     * 开启录制功能
-     *
-     * @param cameraCode 相机编码
-     * @return
-     */
-    public String startRecording(String cameraCode) {
-        log.info("-----startRecording------" + bakUrl + "/recordpro/api/start?streamPath=" + cameraCode + "&type=mp4");
-        return bakUrl + "/recordpro/api/start?streamPath=" + cameraCode + "&type=mp4";
-    }
-
-    /**
-     * 根据设备id和通道ID和日期获取设备录像文件
-     */
-    public String getQueryRecords(String streamPath, String date, String type) {
-
-        log.info("-----getQueryRecords------streamPath-----" + streamPath);
-        log.info("-----getQueryRecords-------date----" + date);
-        log.info("-----getQueryRecords-------type----" + type);
-        try {
-            TimeUnit.SECONDS.sleep(90 * 10);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        String param = "{\n" +
-                "    \"streamPath\":\"" + streamPath + "\",\n" +
-                "    \"date\":\"" + date + "\",\n" +
-                "    \"type\":\"" + type + "\"\n" +
-                "}";
-
-        String jsonStr = HttpUtils.sendPost(bakUrl + "/recordpro/api/query/records", param);
-        log.info("-----getQueryRecords-------jsonStr----" + jsonStr);
-        JSONObject jsonObj = JSON.parseObject(jsonStr);
-        log.info("-----getQueryRecords-------jsonObj----" + jsonObj);
-        JSONArray resultArray = jsonObj.getJSONArray("result");
-        log.info("-----getQueryRecords-------resultArray----" + resultArray);
-
-        if (!ObjectUtils.isEmpty(resultArray)) {
-            ArrayList<String> list = new ArrayList<>();
-            for (int i = 0; i < resultArray.size(); i++) {
-                JSONObject subObj = resultArray.getJSONObject(i);
-                String size = subObj.getString("Size");
-                String path = subObj.getString("Path");
-                Object created = subObj.get("Created");
-                //从缓存取出预拉的流的集合
-                log.info("size------------------>" + size);
-                log.info("path------------------>" + path);
-                log.info("created------------------>" + created);
-                if (Integer.valueOf(size) > 11000000) {
-                    list.add(created + "=" + path);
-                }
+            LambdaQueryWrapper<MsgAlarmMatter> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(MsgAlarmMatter::getAlarmId, releaseAlarmVo.getAlarmId());
+            MsgAlarmMatter msgAlarm = msgAlarmMatterService.getOne(wrapper);
+            if (ObjectUtils.isEmpty(msgAlarm)) {
+                AjaxResults1 = new AjaxResults(0, "不存在该报警的唯一标识的数据");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
             }
-            String records = records(list);
-            log.info("-----getQueryRecords-------records----" + records);
-            String[] split = records.split("=");
-            return recordUrl + Constants.RESOURCE_PREFIX + split[1];
-        }
-        return null;
-    }
-
-    public String records(List<String> objects) {
-
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
-        OffsetDateTime maxTime = null;
-
-        for (String timeString : objects) {
-            String[] split = timeString.split("=");
-            OffsetDateTime time = OffsetDateTime.parse(split[0], formatter);
-            if (maxTime == null || time.isAfter(maxTime)) {
-                maxTime = time;
+            if (releaseAlarmVo.getReleaseTime().toString().length() == 10) {
+                releaseAlarmVo.setReleaseTime(releaseAlarmVo.getReleaseTime() * 1000);
             }
-        }
-
-        Iterator<String> iter = objects.iterator();
-        while (iter.hasNext()) {
-            String timeString = iter.next();
-            String[] split = timeString.split("=");
-            OffsetDateTime time = OffsetDateTime.parse(split[0], formatter);
-            if (!time.isEqual(maxTime)) {
-                iter.remove();
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(new Date(releaseAlarmVo.getReleaseTime()));
+            cal.set(Calendar.MILLISECOND, 0);
+            cal.set(Calendar.MILLISECOND, 0);
+            msgAlarm.setReleasedTime(cal.getTime());
+            msgAlarm.setReleaseContent(releaseAlarmVo.getReleaseContent());
+            msgAlarm.setReleasedBy(releaseAlarmVo.getOperator());
+            msgAlarm.setUpdateBy(releaseAlarmVo.getOperator());
+            msgAlarm.setUpdateTime(new Date());
+            msgAlarm.setIsRelease(1);
+            boolean count = msgAlarmMatterService.updateById(msgAlarm);
+            Map<String, Object> map = new HashMap<>();
+            map.put("alarmId", msgAlarm.getAlarmId());
+            if (count) {
+                map.put("releaseState", 1);
+                AjaxResults1 = new AjaxResults(1, "ok", map);
+            } else {
+                map.put("releaseState", 2);
+                AjaxResults1 = new AjaxResults(0, "失败", map);
             }
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), key);
+        } else {
+            AjaxResults1 = new AjaxResults(2, "token验证失败");
+            return JSONObject.toJSONString(AjaxResults1);
         }
-        return objects.get(0);
     }
 
 
-    public static void main(String[] args) {
-//        String parameter = "rjW9XcaNdY1M2rtUj4rYsW+3nqcJUDBuE6Orqvd4vyMhOh3fQGPNava0aOcUA7h0wuxoQtHE3bUP5imxqbRd/iBT7QDkrqtdPP5QLEhQodT8v0l8YMMtb7yohAJfEThLJOJ8Odl0kuTJXEJBMD8pE//K9KpRGDY4eEKPdS26YywnIl6HwK9EweYxVGtfJOP3/N7lwum2ROv7iqYgefXd/IxGEG8eVqEUutGKpeCcM0dds/N3Uq5ri/k/BrpaKcV96GnlR4pWkBjWOW08eGJ78shuUJkC682294W4RUp3NPPR7OTErtVAh65or8pB+RGDZuZQlUJ/QVpWp2ZdCrN5Wjqsi1TIa00oGQbYmMixOF0=";
-//        String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
-//        ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
-//        System.out.println(reqMsgAlarmVo.toString());
-//        System.out.println(new Date().getTime());
-    }
+
+
 }

+ 1 - 5
hazard-sdk/src/main/java/com/ozs/controller/upload/UploadController.java

@@ -2,20 +2,16 @@ package com.ozs.controller.upload;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.utils.MinioUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.stateSecrets.SM4Utils;
 import com.ozs.common.utils.uuid.IdUtils;
 import com.ozs.service.entity.BaseCameraManagement;
-import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.service.BaseCameraManagementService;
-import com.ozs.service.service.MsgAlarmService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
@@ -41,7 +37,7 @@ public class UploadController {
     private String imgUrl;
 
 
-    @PostMapping("/putObject")
+    @PostMapping("/api/putFile")
     public JSONObject upLoadImage(@RequestParam("stream") MultipartFile stream,
                                   @RequestParam(value = "cameraCode", required = false) String cameraCode,
                                   @RequestParam(value = "size", required = false) Long size,