浏览代码

异物侵限接口开发

gao.qiang 2 月之前
父节点
当前提交
fc83af54e1
共有 31 个文件被更改,包括 1912 次插入12 次删除
  1. 2 0
      .idea/encodings.xml
  2. 17 12
      .idea/jarRepositories.xml
  3. 48 0
      business-service/src/main/java/com/ozs/service/entity/BaseMeasurePoint.java
  4. 53 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmExt.java
  5. 116 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmFrequencyMatter.java
  6. 240 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmMatter.java
  7. 23 0
      business-service/src/main/java/com/ozs/service/entity/vo/Files.java
  8. 129 0
      business-service/src/main/java/com/ozs/service/entity/vo/MsgAlarmMatterVo.java
  9. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/ParameterVo.java
  10. 29 0
      business-service/src/main/java/com/ozs/service/entity/vo/ReleaseAlarmVo.java
  11. 69 0
      business-service/src/main/java/com/ozs/service/entity/vo/ReqMsgAlarmMatterVo.java
  12. 19 0
      business-service/src/main/java/com/ozs/service/mapper/BaseMeasurePointMapper.java
  13. 18 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmExtMapper.java
  14. 18 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmFrequencyMatterMapper.java
  15. 25 0
      business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMatterMapper.java
  16. 17 0
      business-service/src/main/java/com/ozs/service/service/BaseMeasurePointService.java
  17. 16 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmExtService.java
  18. 16 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmFrequencyMatterService.java
  19. 25 0
      business-service/src/main/java/com/ozs/service/service/MsgAlarmMatterService.java
  20. 15 0
      business-service/src/main/java/com/ozs/service/service/impl/BaseMeasurePointServiceImpl.java
  21. 20 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmExtServiceImpl.java
  22. 20 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmFrequencyMatterServiceImpl.java
  23. 51 0
      business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmMatterServiceImpl.java
  24. 6 0
      business-service/src/main/resources/mapper/service/BaseMeasurePonitMapper.xml
  25. 5 0
      business-service/src/main/resources/mapper/service/MsgAlarmExtMapper.xml
  26. 5 0
      business-service/src/main/resources/mapper/service/MsgAlarmFrequencyMatterMapper.xml
  27. 43 0
      business-service/src/main/resources/mapper/service/MsgAlarmMatterMapper.xml
  28. 185 0
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmMatterController.java
  29. 186 0
      hazard-sdk/src/main/java/com/ozs/config/AjaxResults.java
  30. 351 0
      hazard-sdk/src/main/java/com/ozs/controller/matter/MatterMonitorTokenController.java
  31. 134 0
      hazard-sdk/src/main/java/com/ozs/controller/matter/MatterUploadController.java

+ 2 - 0
.idea/encodings.xml

@@ -7,5 +7,7 @@
     <file url="file://$PROJECT_DIR$/hazard-admin/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/hazard-sdk/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/hazard-sdk/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
   </component>
 </project>

+ 17 - 12
.idea/jarRepositories.xml

@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="RemoteRepositoriesConfiguration">
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Central Repository" />
-      <option name="url" value="https://maven.aliyun.com/repository/public" />
-    </remote-repository>
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Central Repository" />
-      <option name="url" value="https://repo.maven.apache.org/maven2" />
-    </remote-repository>
     <remote-repository>
       <option name="id" value="public" />
       <option name="name" value="aliyun nexus" />
@@ -18,8 +8,8 @@
     </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
-      <option name="name" value="Maven Central repository" />
-      <option name="url" value="https://repo1.maven.org/maven2" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
     </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
@@ -31,11 +21,21 @@
       <option name="name" value="Nexus Repository" />
       <option name="url" value="http://10.21.171.91:8084/nexus/content/groups/public/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="custom_group" />
+      <option name="name" value="Nexus Repository" />
+      <option name="url" value="http://47.94.132.61:18881/repository/custom_group/" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
       <option name="name" value="Central Repository" />
       <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="custom_group" />
       <option name="name" value="Nexus Repository" />
@@ -46,5 +46,10 @@
       <option name="name" value="JBoss Community repository" />
       <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
   </component>
 </project>

+ 48 - 0
business-service/src/main/java/com/ozs/service/entity/BaseMeasurePoint.java

@@ -0,0 +1,48 @@
+package com.ozs.service.entity;
+
+
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 测点信息表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-17
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class BaseMeasurePoint extends BaseEntity implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 测点编码
+     */
+    private String pointCode;
+
+
+    /**
+     * 线路编码
+     */
+    private String railwayCode;
+
+    /**
+     * 行别(1上行2下行3上下行)
+     */
+    private Integer lineDir;
+
+    /**
+     * 监控相机安装里程位置
+     */
+    private Integer installMile;
+
+}

+ 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;
+}

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

@@ -0,0 +1,240 @@
+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;
+}

+ 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 fileName;
+    /**
+     * 文件类型
+     */
+    public Integer fileType;
+}

+ 129 - 0
business-service/src/main/java/com/ozs/service/entity/vo/MsgAlarmMatterVo.java

@@ -0,0 +1,129 @@
+package com.ozs.service.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ozs.common.vo.PageVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 异物侵限报警信息请求参数表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Data
+public class MsgAlarmMatterVo extends PageVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 报警ID
+     */
+    private Long id;
+
+    /**
+     * 标识UUID
+     */
+    private String alarmId;
+
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
+    /**
+     * 剩余电量
+     */
+    private Integer electricity;
+
+    /**
+     * 线路编码
+     */
+    private String railwayCode;
+
+    /**
+     * 线路编码名称
+     */
+    private String railwayCodeName;
+
+    /**
+     * 报警行别
+     */
+    private Integer lineDir;
+    /**
+     * 报警行别 字符串
+     */
+    private String lineDirStr;
+    
+    /**
+     * 报警病害类型(目前只有1泥石流,后续可扩展使用)
+     */
+    private Integer alarmType;
+
+    /**
+     * 报警里程位置
+     */
+    private Integer alarmMile;
+
+    @TableField(exist = false)
+    private BigDecimal alarmMileBD;
+
+    /**
+     * 监控范围开始里程位置
+     */
+    private Integer beginMile;
+
+    /**
+     * 监控范围结束里程位置
+     */
+    private Integer endMile;
+
+    /**
+     * 开始报警时间
+     */
+    private String beginAlarmTime;
+
+    /**
+     * 结束报警时间
+     */
+    private String endAlarmTime;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    private Integer isRelease;
+    private String isReleaseName;
+
+    /**
+     * 用户userID
+     */
+    private String userId;
+
+    /**
+     * 状态:1未读;2已读
+     */
+    private Integer status;
+
+    /**
+     * 报警里程位置
+     */
+    private String alarmMiles;
+    /**
+     * 监控范围开始里程位置字符串形式
+     */
+    private String beginMiles;
+
+    /**
+     * 监控范围结束里程位置字符串形式
+     */
+    private String endMiles;
+
+    /**
+     * 来源
+     */
+    private String source;
+}

+ 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;
+}

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

@@ -0,0 +1,69 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@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 String pointCode;
+    /**
+     * 文件类型
+     */
+    private List<Files> files;
+}

+ 19 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseMeasurePointMapper.java

@@ -0,0 +1,19 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.BaseMeasurePoint;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * <p>
+ * 测点信息表 Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Mapper
+public interface BaseMeasurePointMapper extends BaseMapper<BaseMeasurePoint> {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.MsgAlarmExt;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-10
+ */
+@Mapper
+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> {
+
+}

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

@@ -0,0 +1,25 @@
+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> {
+
+    List<MsgAlarmMatter>  selectMsgAlarmList(MsgAlarmMatterVo vo);
+}

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

@@ -0,0 +1,17 @@
+package com.ozs.service.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.BaseMeasurePoint;
+
+/**
+ * <p>
+ * 测点信息表 服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+public interface BaseMeasurePointService extends IService<BaseMeasurePoint> {
+
+}

+ 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> {
+
+}

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

@@ -0,0 +1,25 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.MsgAlarmMatter;
+import com.ozs.service.entity.vo.MsgAlarmMatterVo;
+import com.ozs.service.entity.vo.MsgAlarmVo;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 异物侵限报警信息表 服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+public interface MsgAlarmMatterService extends IService<MsgAlarmMatter> {
+
+    IPage<MsgAlarmMatter> queryPage(MsgAlarmMatterVo msgAlarmVo);
+
+    List<MsgAlarmMatter> msgAlarmList(MsgAlarmMatterVo msgAlarmVo);
+}

+ 15 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseMeasurePointServiceImpl.java

@@ -0,0 +1,15 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.BaseMeasurePoint;
+import com.ozs.service.mapper.BaseMeasurePointMapper;
+import com.ozs.service.service.BaseMeasurePointService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Administrator
+ * 测点信息表服务实现类
+ */
+@Service
+public class BaseMeasurePointServiceImpl extends ServiceImpl<BaseMeasurePointMapper, BaseMeasurePoint> implements BaseMeasurePointService {
+}

+ 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 {
+
+}

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

@@ -0,0 +1,51 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.ozs.service.entity.MsgAlarmMatter;
+import com.ozs.service.entity.vo.MsgAlarmMatterVo;
+import com.ozs.service.entity.vo.MsgAlarmVo;
+import com.ozs.service.mapper.MsgAlarmMatterMapper;
+import com.ozs.service.service.MsgAlarmMatterService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 异物侵限报警信息表 服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Service
+@Slf4j
+public class MsgAlarmMatterServiceImpl extends ServiceImpl<MsgAlarmMatterMapper, MsgAlarmMatter> implements MsgAlarmMatterService {
+
+    @Autowired
+    private MsgAlarmMatterMapper msgAlarmMatterMapper;
+
+    @Override
+    public IPage<MsgAlarmMatter> queryPage(MsgAlarmMatterVo vo) {
+        int pageNum = Integer.parseInt(vo.getPageNum().toString());
+        int pageSize = Integer.parseInt(vo.getPageSize().toString());
+        com.github.pagehelper.Page<MsgAlarmMatter> page = PageHelper.startPage(pageNum, pageSize)
+                .doSelectPage(() -> msgAlarmMatterMapper.selectMsgAlarmList(vo));
+        Page<MsgAlarmMatter> pageR = new Page<>(pageNum, pageSize);
+        pageR.setRecords(page.getResult());
+        pageR.setTotal(page.getTotal());
+        return pageR;
+    }
+
+    @Override
+    public List<MsgAlarmMatter> msgAlarmList(MsgAlarmMatterVo msgAlarmVo) {
+        return msgAlarmMatterMapper.selectMsgAlarmList(msgAlarmVo);
+    }
+}

+ 6 - 0
business-service/src/main/resources/mapper/service/BaseMeasurePonitMapper.xml

@@ -0,0 +1,6 @@
+<?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.BaseMeasurePointMapper">
+
+
+</mapper>

+ 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>

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

@@ -0,0 +1,43 @@
+<?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">
+
+    <select id="selectMsgAlarmList" resultType="com.ozs.service.entity.MsgAlarmMatter" parameterType="com.ozs.service.entity.vo.MsgAlarmMatterVo">
+        SELECT * FROM msg_alarm_matter
+        <where>
+            <if test="railwayCode != null and railwayCode != ''">
+                and railway_code = #{railwayCode}
+            </if>
+            <if test="alarmType != null and alarmType != 0">
+                and alarm_type = #{alarmType}
+            </if>
+            <if test="alarmMile != null and alarmMile != 0">
+                and alarm_mile = #{alarmMile}
+            </if>
+            <if test="beginMile != null and beginMile != 0">
+                and alarm_mile &gt;= #{beginMile}
+            </if>
+            <if test="endMile != null and endMile != 0">
+                and alarm_mile &lt;= #{endMile}
+            </if>
+            <if test="isRelease != null and isRelease != 0">
+                and is_release = #{isRelease}
+            </if>
+            <if test="lineDir != null and lineDir != 0">
+                and line_dir = #{lineDir}
+            </if>
+            <if test="beginAlarmTime != null and beginAlarmTime != ''">
+                and TO_CHAR(alarm_time, 'YYYY-MM-DD HH24:MI:SS') &gt;= TO_CHAR(#{beginAlarmTime}, 'YYYY-MM-DD
+                HH24:MI:SS')
+            </if>
+            <if test="endAlarmTime != null and endAlarmTime != ''">
+                and TO_CHAR(alarm_time, 'YYYY-MM-DD HH24:MI:SS') &lt;= TO_CHAR(#{endAlarmTime}, 'YYYY-MM-DD HH24:MI:SS')
+            </if>
+            <if test="source != null and source != ''">
+                and source = #{source}
+            </if>
+        </where>
+        order by  alarm_time desc
+    </select>
+
+</mapper>

+ 185 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmMatterController.java

@@ -0,0 +1,185 @@
+package com.ozs.web.controller.accountmanagment;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ozs.common.annotation.Log;
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.entity.SysDept;
+import com.ozs.common.core.domain.entity.SysDictData;
+import com.ozs.common.enums.BusinessType;
+import com.ozs.common.utils.AppendUtils;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.poi.ExcelUtil;
+import com.ozs.service.entity.*;
+import com.ozs.service.entity.vo.*;
+import com.ozs.service.mapper.MsgAlarmMapper;
+import com.ozs.service.service.*;
+import com.ozs.system.service.DataScoreUtil;
+import com.ozs.system.service.ISysDeptService;
+import com.ozs.system.service.ISysDictDataService;
+import com.ozs.system.service.ISysDictTypeService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 报警信息表 前端控制器
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@RestController
+@RequestMapping("/service/msgAlarmMatter")
+public class MsgAlarmMatterController extends BaseController {
+
+    @Autowired
+    private DataScoreUtil dataScoreUtil;
+    public static final String PATTERN = "^(\\d+.\\d{1,3}|\\d+)$";
+
+    @Resource
+    MsgAlarmMatterService msgAlarmMatterService;
+    @Autowired
+    BaseRailwayManagementService baseRailwayManagementService;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+    @Resource
+    private MsgAlarmExtService msgAlarmExtService;
+    /**
+     * 报警信息分页
+     *
+     * @param msgAlarmVo
+     * @return
+     */
+    @PostMapping("/list")
+    @Log(title = "报警信息管理", businessType = BusinessType.SELECT)
+    public AjaxResult selectMsgAlarm(@RequestBody MsgAlarmMatterVo msgAlarmVo) {
+        msgAlarmVo = (MsgAlarmMatterVo) dataScoreUtil.setDataScore(getUserId(), msgAlarmVo);
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getAlarmMile())) {
+            msgAlarmVo.setAlarmMile(msgAlarmVo.getAlarmMile() * 1000);
+        }
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getBeginMile())) {
+            msgAlarmVo.setBeginMile(msgAlarmVo.getBeginMile() * 1000);
+        }
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getEndMile())) {
+            msgAlarmVo.setEndMile(msgAlarmVo.getEndMile() * 1000);
+        }
+        if (!StringUtils.isEmptySunhh(msgAlarmVo.getAlarmMileBD())) {
+            if (!msgAlarmVo.getAlarmMileBD().toString().matches(PATTERN)) {
+                return error("监控范围开始里程位置填写格式不正确");
+            } else {
+                msgAlarmVo.setAlarmMile(msgAlarmVo.getAlarmMileBD().multiply(new BigDecimal("1000")).intValue());
+            }
+        }
+        IPage<MsgAlarmMatter> page = msgAlarmMatterService.queryPage(msgAlarmVo);
+        page.setTotal(page.getTotal());
+        page.setCurrent(page.getCurrent());
+        page.setPages(page.getPages());
+
+        if (!ObjectUtils.isEmpty(page) && page.getRecords().size() > 0) {
+            List<MsgAlarmMatter> dto1 = page.getRecords().stream().map(o -> {
+                LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+                if (!ObjectUtils.isEmpty(o.getRailwayCode())) {
+                    queryWrapper.eq(BaseRailwayManagement::getRailwayCode, o.getRailwayCode());
+                }
+                BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+                if (!StringUtils.isEmptySunhh(baseRailwayManagement) && !StringUtils.isEmptySunhh(baseRailwayManagement.getRailwayName())) {
+                    o.setRailwayName(baseRailwayManagement.getRailwayName());
+                }
+                if (!StringUtils.isEmptySunhh(o.getReleasedBy())) {
+//                    BaseUser user = baseUserService.getUser(o.getReleasedBy());
+//                    if (!StringUtils.isEmptySunhh(user) && !StringUtils.isEmptySunhh(user.getNickName())) {
+//                        o.setReleasedByName(user.getNickName());
+//                    }
+                    o.setReleasedByName(o.getReleasedBy());
+                }
+                String mils = AppendUtils.stringAppend(o.getAlarmMile());
+                o.setAlarmMiles(mils);
+                o.setLineDirName(o.getLineDir() == 1 ? "上行" : "下行");
+                o.setIsReleaseName(o.getIsRelease() == 1 ? "已解除" : (o.getIsRelease() == 2 ? "未解除" : "未知"));
+                List<SysDictData> data = dictTypeService.selectDictDataByType("sys_alarm_type");
+                data.stream().forEach(sysDictData -> {
+                    if (sysDictData.getDictValue().equals(o.getAlarmType().toString())) {
+                        o.setAlarmTypeName(sysDictData.getDictLabel());
+                    }
+                });
+
+                List<MsgAlarmExt> list1 = msgAlarmExtService.list(new LambdaQueryWrapper<MsgAlarmExt>().eq(MsgAlarmExt::getAlarmId, o.getAlarmId()));
+                if (!ObjectUtils.isEmpty(list1)) {
+                    List<String> collect = list1.stream().map(MsgAlarmExt::getAlarmAttPath).collect(Collectors.toList());
+                    o.setImageUrls(collect);
+                }
+                return o;
+            }).collect(Collectors.toList());
+            page.setRecords(dto1);
+        }
+        return AjaxResult.success(page);
+    }
+
+    /**
+     * 导出报警消息
+     *
+     * @param response
+     */
+    @PostMapping("/exportMsgAlarm")
+    @Log(title = "报警信息管理", businessType = BusinessType.EXPORT)
+    public void exportMsgAlarm(HttpServletResponse response, @RequestBody MsgAlarmMatterVo msgAlarmVo) {
+        msgAlarmVo = (MsgAlarmMatterVo) dataScoreUtil.setDataScore(getUserId(), msgAlarmVo);
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getAlarmMile())) {
+            msgAlarmVo.setAlarmMile(msgAlarmVo.getAlarmMile() * 1000);
+        }
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getBeginMile())) {
+            msgAlarmVo.setBeginMile(msgAlarmVo.getBeginMile() * 1000);
+        }
+        if (!ObjectUtils.isEmpty(msgAlarmVo.getEndMile())) {
+            msgAlarmVo.setEndMile(msgAlarmVo.getEndMile() * 1000);
+        }
+        List<MsgAlarmMatter> msgAlarmList = msgAlarmMatterService.msgAlarmList(msgAlarmVo);
+        for (MsgAlarmMatter o : msgAlarmList) {
+            LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<>();
+            if (!StringUtils.isEmptySunhh(o.getRailwayCode())) {
+                queryWrapper.eq(BaseRailwayManagement::getRailwayCode, o.getRailwayCode());
+            }
+            BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+            if (!StringUtils.isEmptySunhh(baseRailwayManagement) && !StringUtils.isEmptySunhh(baseRailwayManagement.getRailwayName())) {
+                o.setRailwayName(baseRailwayManagement.getRailwayName());
+            }
+            if (StringUtils.isNotEmpty(o.getReleasedBy())) {
+//                BaseUser user = baseUserService.getUser(o.getReleasedBy());
+//                if (!StringUtils.isEmptySunhh(user) && !StringUtils.isEmptySunhh(user.getNickName())) {
+//                    o.setReleasedByName(user.getNickName());
+//                }
+                o.setReleasedByName(o.getReleasedBy());
+            }
+            String mils = AppendUtils.stringAppend(o.getAlarmMile());
+            o.setAlarmMiles(mils);
+            o.setLineDirName(o.getLineDir() == 1 ? "上行" : "下行");
+            o.setAlarmTypeStr(o.getAlarmType() == 1 ? "泥石流" : (o.getAlarmType() == 2 ? "异物侵限" : (o.getAlarmType() == 3 ? "断轨监测" : "未知")));
+            o.setIsReleaseName(o.getIsRelease() == 1 ? "已解除" : (o.getIsRelease() == 2 ? "未解除" : "未知"));
+            List<SysDictData> data = dictTypeService.selectDictDataByType("sys_alarm_type");
+            data.stream().forEach(sysDictData -> {
+                if (sysDictData.getDictValue().equals(o.getAlarmType().toString())) {
+                    o.setAlarmTypeName(sysDictData.getDictLabel());
+                }
+            });
+
+            ExcelUtil<MsgAlarmMatter> util = new ExcelUtil<>(MsgAlarmMatter.class);
+            util.exportExcel(response, msgAlarmList, "报警信息管理");
+        }
+    }
+}
+

+ 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;
+    }
+}

+ 351 - 0
hazard-sdk/src/main/java/com/ozs/controller/matter/MatterMonitorTokenController.java

@@ -0,0 +1,351 @@
+package com.ozs.controller.matter;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.common.annotation.SdkLog;
+import com.ozs.common.enums.BusinessTypeSdk;
+import com.ozs.common.utils.ApiTokenUtils;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.stateSecrets.SM4Utils;
+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.RespGeoHazardMonitorVo;
+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.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.text.SimpleDateFormat;
+import java.util.*;
+
+
+/**
+ * 1. 获取身份认证控制层
+ *
+ * @author Administrator
+ */
+@RestController
+@Slf4j
+public class MatterMonitorTokenController {
+    public static final String PATTERNS = "^[0-9]*$";
+    @Resource
+    private ApiTokenUtils apiTokenUtils;
+    @Autowired
+    MsgAlarmMatterService msgAlarmMatterService;
+    @Autowired
+    MsgAlarmFrequencyMatterService msgAlarmFrequencyMatterService;
+    @Autowired
+    SvcAddressService svcAddressService;
+    @Autowired
+    BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    private MsgAlarmExtService msgAlarmExtService;
+    @Autowired
+    private BaseRailwayManagementService baseRailwayManagementService;
+    @Autowired
+    private BaseUserService baseUserService;
+    @Value("${base.imgUrl}")
+    private String imgUrl;
+    @Autowired
+    private BaseMeasurePointService baseMeasurePointService;
+
+    /**
+     * 异物侵限获取web访问令牌
+     *
+     * @return
+     */
+    @PostMapping("/api/token")
+    @SdkLog(title = "获取web访问令牌", businessType = BusinessTypeSdk.TOKEN)
+    public String getWebToken(@RequestBody SvcAddress svcAddress) {
+        // 生成令牌
+        JSONObject jsonObject = new JSONObject();
+        LambdaQueryWrapper<SvcAddress> lw = new LambdaQueryWrapper<SvcAddress>();
+        if (!ObjectUtils.isEmpty(svcAddress.getClientId())) {
+            lw.eq(SvcAddress::getClientId, svcAddress.getClientId());
+        } else {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "客户端编号不能为空");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "f5408458becc8c68");
+        }
+        SvcAddress serviceOne = svcAddressService.getOne(lw);
+        if (!ObjectUtils.isEmpty(serviceOne)) {
+            if (serviceOne.getClientSecret().equals(svcAddress.getClientSecret())) {
+                ArrayList<String> objects = apiTokenUtils.createGeoHazardMonitorToken(svcAddress.getGrantType(), svcAddress.getClientId(), svcAddress.getClientSecret());
+                if (objects.size() > 0) {
+                    RespGeoHazardMonitorVo respGeoHazardMonitorVo = new RespGeoHazardMonitorVo();
+                    respGeoHazardMonitorVo.setAccessToken(objects.get(1));
+                    Long l = Long.valueOf(objects.get(0));
+                    respGeoHazardMonitorVo.setExpiresIn(l / 1000);
+                    respGeoHazardMonitorVo.setTokenType("令牌类型");
+                    jsonObject.put("resultCode", 1);
+                    jsonObject.put("message", "成功");
+                    jsonObject.put("data", respGeoHazardMonitorVo);
+                    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), "f5408458becc8c68");
+                }
+            } else {
+                jsonObject.put("resultCode", 0);
+                jsonObject.put("message", "失败");
+                jsonObject.put("data", "客户端密钥错误");
+                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), "f5408458becc8c68");
+        }
+    }
+
+    /**
+     * 报警信息数据传输
+     */
+    @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:{}", parameterVo);
+        AjaxResults AjaxResults1 = null;
+        if (StringUtils.isNotEmpty(token)) {
+            String[] split = token.split("-");
+            if (ObjectUtils.isEmpty(parameterVo)) {
+                AjaxResults1 = new AjaxResults(0, "parameterVo参数不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "f5408458becc8c68");
+            ReqMsgAlarmMatterVo reqMsgAlarmMatterVo = JSON.parseObject(s, ReqMsgAlarmMatterVo.class);
+            if (!reqMsgAlarmMatterVo.getAlarmMile().toString().matches(PATTERNS)) {
+                AjaxResults1 = new AjaxResults(0, "报警里程位置填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (reqMsgAlarmMatterVo.getLineDir() != 1 && reqMsgAlarmMatterVo.getLineDir() != 2) {
+                AjaxResults1 = new AjaxResults(0, "行别填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+            if (!ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmRailway())) {
+                queryWrapper.eq(BaseRailwayManagement::getRailwayCode, reqMsgAlarmMatterVo.getAlarmRailway());
+            }
+            BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+            if (ObjectUtils.isEmpty(baseRailwayManagement)) {
+                AjaxResults1 = new AjaxResults(0, "填写的报警线路编码不存在");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmId())) {
+                AjaxResults1 = new AjaxResults(0, "报警的唯一标识不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmTime())) {
+                AjaxResults1 = new AjaxResults(0, "报警时间不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getAlarmAttr())) {
+                AjaxResults1 = new AjaxResults(0, "报警病害属性不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (reqMsgAlarmMatterVo.getAlarmType() < 1 || reqMsgAlarmMatterVo.getAlarmType() > 4) {
+                AjaxResults1 = new AjaxResults(0, "报警病害类型填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (!reqMsgAlarmMatterVo.getAlarmLevel().toString().matches(PATTERNS)) {
+                AjaxResults1 = new AjaxResults(0, "报警级别填写错误");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getPointCode())) {
+                AjaxResults1 = new AjaxResults(0, "测点编码不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(reqMsgAlarmMatterVo.getFiles())) {
+                AjaxResults1 = new AjaxResults(0, "报警文件集合不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            BaseMeasurePoint one = baseMeasurePointService.getOne(new LambdaQueryWrapper<BaseMeasurePoint>()
+                    .eq(BaseMeasurePoint::getPointCode, reqMsgAlarmMatterVo.getPointCode()));
+            if (ObjectUtils.isEmpty(one)){
+                AjaxResults1 = new AjaxResults(0, "系统中不存在该测点编码");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            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");
+            MsgAlarmFrequencyMatter msgAlarmFrequencyMatter = new MsgAlarmFrequencyMatter();
+            if (ObjectUtils.isEmpty(alarm)) {
+                MsgAlarmMatter msgAlarmMatter = new MsgAlarmMatter();
+                String[] alarmAttr = reqMsgAlarmMatterVo.getAlarmAttr();
+                if (alarmAttr.length > 0) {
+                    StringBuilder builder = new StringBuilder();
+                    for (int i = 0; i < alarmAttr.length; i++) {
+                        builder.append(alarmAttr[i]);
+                        if (i < alarmAttr.length - 1) {
+                            builder.append(":");
+                        }
+                    }
+
+                    msgAlarmMatter.setAlarmAttr(builder.toString());
+                }
+                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);
+
+                for (Files file : reqMsgAlarmMatterVo.getFiles()) {
+                    if (ObjectUtils.isEmpty(file.getFileType())) {
+                        AjaxResults1 = new AjaxResults(0, "文件类型不能为空");
+                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+                    }
+                    if (ObjectUtils.isEmpty(file.getFileName())) {
+                        AjaxResults1 = new AjaxResults(0, "文件名称不能为空");
+                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+                    }
+                    MsgAlarmExt msgAlarmExt = new MsgAlarmExt();
+                    msgAlarmExt.setAlarmId(msgAlarmMatter.getAlarmId());
+                    SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd");
+                    String format1 = dateFormat1.format(new Date());
+                    String fileName = imgUrl + "/yiwuqinxian/" + reqMsgAlarmMatterVo.getAlarmRailway() + "/" + reqMsgAlarmMatterVo.getPointCode() + "/" + format1 + "/" + file.getFileName();
+                    msgAlarmExt.setAlarmAttPath(fileName);
+                    msgAlarmExt.setAlarmAttType(file.getFileType());
+                    msgAlarmExt.setCreateTime(new Date());
+                    msgAlarmExtService.save(msgAlarmExt);
+                }
+
+
+                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(reqMsgAlarmMatterVo, msgAlarmFrequencyMatter);
+                msgAlarmFrequencyMatter.setCreateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setUpdateBy(admin.getUserId());
+                msgAlarmFrequencyMatter.setAlarmTime(new Date(reqMsgAlarmMatterVo.getAlarmTime()));
+                msgAlarmFrequencyMatter.setRailwayCode(reqMsgAlarmMatterVo.getAlarmRailway());
+                msgAlarmFrequencyMatterService.save(msgAlarmFrequencyMatter);
+            }
+            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), "f5408458becc8c68");
+        } else {
+            AjaxResults1 = new AjaxResults(2, "token验证失败");
+            return JSONObject.toJSONString(AjaxResults1);
+        }
+    }
+
+    /**
+     * 报警解除接口
+     *
+     * @param parameterVo
+     * @param request
+     * @return
+     */
+    @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:{}", parameterVo);
+        if (StringUtils.isNotEmpty(token)) {
+            if (ObjectUtils.isEmpty(parameterVo)) {
+                AjaxResults1 = new AjaxResults(0, "parameterVo参数不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "f5408458becc8c68");
+            ReleaseAlarmVo releaseAlarmVo = JSON.parseObject(s, ReleaseAlarmVo.class);
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getAlarmId())) {
+                AjaxResults1 = new AjaxResults(0, "报警的唯一标识不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseTime())) {
+                AjaxResults1 = new AjaxResults(0, "解除报警时间不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseContent())) {
+                AjaxResults1 = new AjaxResults(0, "解除原因不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            if (ObjectUtils.isEmpty(releaseAlarmVo.getOperator())) {
+                AjaxResults1 = new AjaxResults(0, "解除人不能为空");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(AjaxResults1), "f5408458becc8c68");
+            }
+            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), "f5408458becc8c68");
+            }
+            if (releaseAlarmVo.getReleaseTime().toString().length() == 10) {
+                releaseAlarmVo.setReleaseTime(releaseAlarmVo.getReleaseTime() * 1000);
+            }
+            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), "f5408458becc8c68");
+        } else {
+            AjaxResults1 = new AjaxResults(2, "token验证失败");
+            return JSONObject.toJSONString(AjaxResults1);
+        }
+    }
+}

+ 134 - 0
hazard-sdk/src/main/java/com/ozs/controller/matter/MatterUploadController.java

@@ -0,0 +1,134 @@
+package com.ozs.controller.matter;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.common.utils.MinioUtils;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.service.entity.BaseMeasurePoint;
+import com.ozs.service.entity.BaseRailwayManagement;
+import com.ozs.service.service.BaseCameraManagementService;
+import com.ozs.service.service.BaseMeasurePointService;
+import com.ozs.service.service.BaseRailwayManagementService;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@RestController
+public class MatterUploadController {
+
+    public static final String PATTERN = "^[0-9]*$";
+    @Value("${minio.bucketName}")
+    private String bucketName;
+
+    @Resource
+    MinioUtils minioUtils;
+    @Autowired
+    BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    private BaseRailwayManagementService baseRailwayManagementService;
+    @Autowired
+    private BaseMeasurePointService baseMeasurePointService;
+
+
+    @PostMapping("/api/putFile")
+    public JSONObject upLoadImage(@RequestParam("stream") MultipartFile stream,
+                                  @RequestParam(value = "size", required = false) Long size,
+                                  @RequestParam(value = "contentType", required = false) String contentType,
+                                  @RequestParam(value = "alarmMile", required = false) Integer alarmMile,
+                                  @RequestParam(value = "alarmRailway", required = false) String alarmRailway,
+                                  @RequestParam(value = "fileType", required = false) Integer fileType,
+                                  @RequestParam(value = "fileName", required = false) String fileName,
+                                  @RequestParam(value = "pointCode", required = false) String pointCode,
+                                  @RequestParam(value = "lineDir", required = false) Integer lineDir) throws Exception {
+
+        JSONObject jsonObject = new JSONObject();
+        if (stream.isEmpty()) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "不能上传空文件哦");
+            return jsonObject;
+        }
+        if (lineDir != 1 && lineDir != 2) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "行别填写错误");
+            return jsonObject;
+        }
+        if (!alarmMile.toString().matches(PATTERN)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "报警里程位置填写格式不正确");
+            return jsonObject;
+        }
+        if (!size.toString().matches(PATTERN)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "要上传的stream的填写格式不正确");
+            return jsonObject;
+        }
+        if (ObjectUtils.isEmpty(contentType)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "Content Type不能为空");
+            return jsonObject;
+        }
+        if (ObjectUtils.isEmpty(pointCode)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "测点编码不能为空");
+            return jsonObject;
+        }
+        if (ObjectUtils.isEmpty(fileName)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "文件名不能为空");
+            return jsonObject;
+        }
+        BaseMeasurePoint one = baseMeasurePointService.getOne(new LambdaQueryWrapper<BaseMeasurePoint>()
+                .eq(BaseMeasurePoint::getPointCode, pointCode));
+        if (ObjectUtils.isEmpty(one)){
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "系统中不存在该测点编码");
+            return jsonObject;
+        }
+        LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+        if (!ObjectUtils.isEmpty(alarmRailway)) {
+            queryWrapper.eq(BaseRailwayManagement::getRailwayCode, alarmRailway);
+        }
+        BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+        if (ObjectUtils.isEmpty(baseRailwayManagement)) {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "填写的报警线路编码不存在");
+            return jsonObject;
+        }
+        if (!stream.isEmpty()) {
+            String imageName = stream.getOriginalFilename();
+            if (StringUtils.isNotBlank(imageName)) {
+                SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd");
+                String format1 = dateFormat1.format(new Date());
+                String imgName = "yiwuqinxian/"+alarmRailway + "/" + pointCode + "/" + format1 + "/" + imageName;
+                minioUtils.minIoClientUpload(stream.getInputStream(), imgName);
+            }
+        } else {
+            jsonObject.put("resultCode", 0);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "图片为null");
+            return jsonObject;
+        }
+        jsonObject.put("resultCode", 1);
+        jsonObject.put("message", "成功");
+        jsonObject.put("data", null);
+        return jsonObject;
+    }
+}