Quellcode durchsuchen

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/VehicleMonitor

gao.qiang vor 2 Jahren
Ursprung
Commit
ee8b6477c0
21 geänderte Dateien mit 711 neuen und 162 gelöschten Zeilen
  1. 7 4
      business-service/src/main/java/com/ozs/entity/BaseVehicle.java
  2. 38 0
      business-service/src/main/java/com/ozs/entity/vo/AlarmFreqArea.java
  3. 5 0
      business-service/src/main/java/com/ozs/entity/vo/AlarmStatisticMonthDto.java
  4. 0 120
      business-service/src/main/java/com/ozs/entity/vo/AlarmStatisticVo.java
  5. 62 0
      business-service/src/main/java/com/ozs/entity/vo/BaseVehicleVo.java
  6. 31 0
      business-service/src/main/java/com/ozs/entity/vo/DataStatisticNum.java
  7. 2 1
      business-service/src/main/java/com/ozs/entity/vo/TerminalIgnoreVo.java
  8. 9 0
      business-service/src/main/java/com/ozs/mapper/MsgAlarmMapper.java
  9. 14 1
      business-service/src/main/java/com/ozs/mapper/TerminalIgnoreAlarmMapper.java
  10. 9 1
      business-service/src/main/java/com/ozs/service/BaseVehicleService.java
  11. 8 0
      business-service/src/main/java/com/ozs/service/MsgAlarmService.java
  12. 14 0
      business-service/src/main/java/com/ozs/service/TerminalIgnoreAlarmService.java
  13. 76 1
      business-service/src/main/java/com/ozs/service/impl/BaseVehicleServiceImpl.java
  14. 18 0
      business-service/src/main/java/com/ozs/service/impl/MsgAlarmServiceImpl.java
  15. 16 0
      business-service/src/main/java/com/ozs/service/impl/TerminalIgnoreAlarmServiceImpl.java
  16. 74 8
      business-service/src/main/resources/mapper/MsgAlarmMapper.xml
  17. 36 0
      business-service/src/main/resources/mapper/TerminalIgnoreAlarmMapper.xml
  18. 1 0
      business-service/src/main/resources/mapper/VehiclePositionMapper.xml
  19. 94 4
      vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseVehicleController.java
  20. 116 20
      vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/DataStatisticController.java
  21. 81 2
      vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/TerminalIgnoreAlarmController.java

+ 7 - 4
business-service/src/main/java/com/ozs/entity/BaseVehicle.java

@@ -2,12 +2,12 @@ package com.ozs.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import java.util.Date;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 机车信息表
@@ -63,5 +63,8 @@ public class BaseVehicle implements Serializable {
      */
     private String remark;
 
-
+    /**
+     * 挂载终端ID terminal_id
+     */
+    private long terminalId;
 }

+ 38 - 0
business-service/src/main/java/com/ozs/entity/vo/AlarmFreqArea.java

@@ -0,0 +1,38 @@
+package com.ozs.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ozs.common.annotation.Excel;
+import lombok.Data;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/13
+ */
+@Data
+public class AlarmFreqArea {
+    /**
+     * 线路名称
+     */
+    private String railwayName;
+
+    /**
+     * 线路名编码
+     */
+    private String railwayCode;
+
+    /**
+     * 里程位置
+     */
+    private String alarmMile;
+
+    /**
+     * 报警里程位置字符串形式
+     */
+    private String alarmMiles;
+
+    /**
+     * 报警频次
+     */
+    private Integer frequency;
+}

+ 5 - 0
business-service/src/main/java/com/ozs/entity/vo/AlarmStatisticMonthDto.java

@@ -45,6 +45,11 @@ public class AlarmStatisticMonthDto {
     @Excel(name = "报警日期")
     private String monthstaString;
 
+    /**
+     * 百分比
+     */
+    private String percent;
+
     /**
      * 报警次数
      */

+ 0 - 120
business-service/src/main/java/com/ozs/entity/vo/AlarmStatisticVo.java

@@ -1,120 +0,0 @@
-package com.ozs.entity.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ozs.common.annotation.Excel;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 统计管理页面实体类
- *
- * @author wyy
- * @subject
- * @creat 2023/3/6
- */
-@Data
-public class AlarmStatisticVo {
-
-    /**
-     * 报警唯一标识
-     */
-    private String alarmId;
-
-    /**
-     * 报警时间
-     */
-    @JsonFormat(
-            pattern = "yyyy-MM-dd HH:mm:ss"
-    )
-    private Date alarmTime;
-
-    /**
-     * 线路名称
-     */
-    private String railwayName;
-
-    /**
-     * 报警行别(1上行2下行)
-     */
-    private Integer lineDir;
-
-    /**
-     * 报警里程位置
-     */
-    private String alarmMile;
-
-    /**
-     * 报警内容
-     */
-    private String content;
-
-    /**
-     * 报警级别
-     */
-    private String alarmLevel;
-
-    /**
-     * 报警置信度(百分比)
-     */
-    private Integer alarmConfidence;
-
-    /**
-     * 报警病害类型(目前只有1泥石流,后续可扩展使用)
-     */
-    private Integer alarmType;
-
-    /**
-     * 框定范围
-     */
-    private Integer alarmAttr;
-
-    /**
-     * 报警是否解除 1已解除2未解除
-     */
-    private Integer isRelease;
-
-    /**
-     * 解除人
-     */
-    private String releasedBy;
-
-    /**
-     * 解除时间
-     */
-    @JsonFormat(
-            pattern = "yyyy-MM-dd HH:mm:ss"
-    )
-    private Date releasedTime;
-
-    /**
-     * 解除内容
-     */
-    private String releaseContent;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 报警行别字符串(1上行2下行)
-     */
-    private String lineDirName;
-
-
-    /**
-     * 报警病害类型(目前只有1泥石流,后续可扩展使用)
-     */
-    private String alarmTypeName;
-
-    /**
-     * 解除人
-     */
-    private String releasedByName;
-
-    /**
-     * 报警是否解除 1已解除2未解除
-     */
-    private String isReleaseName;
-}

+ 62 - 0
business-service/src/main/java/com/ozs/entity/vo/BaseVehicleVo.java

@@ -0,0 +1,62 @@
+package com.ozs.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ozs.common.vo.PageVo;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author : sunhh
+ * @create 2023/4/14 15:31
+ */
+@Data
+public class BaseVehicleVo extends PageVo {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 机车编码
+     */
+    private String vehicleCode;
+
+    /**
+     * 机车名称
+     */
+    private String vehicleName;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 挂载终端ID terminal_id
+     */
+    private long terminalId;
+}

+ 31 - 0
business-service/src/main/java/com/ozs/entity/vo/DataStatisticNum.java

@@ -0,0 +1,31 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/14
+ */
+@Data
+public class DataStatisticNum {
+    /**
+     *机车个数
+     */
+    private Long vehicleNum;
+
+    /**
+     *终端个数
+     */
+    private Long terminalNum;
+
+    /**
+     *累计报警
+     */
+    private Long alarmNum;
+
+    /**
+     *相机个数
+     */
+    private Long cameraNum;
+}

+ 2 - 1
business-service/src/main/java/com/ozs/entity/vo/TerminalIgnoreVo.java

@@ -1,5 +1,6 @@
 package com.ozs.entity.vo;
 
+import com.ozs.common.vo.PageVo;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -8,7 +9,7 @@ import java.io.Serializable;
  * @author Administrator
  */
 @Data
-public class TerminalIgnoreVo implements Serializable {
+public class TerminalIgnoreVo extends PageVo implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 车载终端编码

+ 9 - 0
business-service/src/main/java/com/ozs/mapper/MsgAlarmMapper.java

@@ -2,6 +2,7 @@ package com.ozs.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ozs.entity.MsgAlarm;
+import com.ozs.entity.vo.AlarmFreqArea;
 import com.ozs.entity.vo.AlarmStatisticDto;
 import com.ozs.entity.vo.AlarmStatisticMonthDto;
 import com.ozs.entity.vo.MsgAlarmVo;
@@ -29,6 +30,14 @@ public interface MsgAlarmMapper extends BaseMapper<MsgAlarm> {
     //报警月统计数据导出数据集合(天)
     List<AlarmStatisticMonthDto> listDtoDay(@Param("railwayCode") String railwayCode, @Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth);
 
+    //数据统计-灾害占比
+    List<AlarmStatisticMonthDto> alarmTypeCount(@Param("railwayCode") String railwayCode, @Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth);
+
+    //数据统计-频繁出现灾害地点排名
+    List<AlarmFreqArea> alarmTypeAreaCount(@Param("railwayCode") String railwayCode, @Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth);
+
+    Long getAlarmNum();
+
     Integer selectCameraCode(@Param("cameraCode") String cameraCode);
 
     MsgAlarm selectByCameraCode(@Param("cameraCode") String cameraCode);

+ 14 - 1
business-service/src/main/java/com/ozs/mapper/TerminalIgnoreAlarmMapper.java

@@ -1,7 +1,11 @@
 package com.ozs.mapper;
 
+import com.ozs.entity.MsgAlarm;
 import com.ozs.entity.TerminalIgnoreAlarm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +16,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2023-04-11
  */
 public interface TerminalIgnoreAlarmMapper extends BaseMapper<TerminalIgnoreAlarm> {
-
+    /**
+     * 查询终端忽略报警信息列表
+     *@param terminalCode 终端编码
+     */
+    List<TerminalIgnoreAlarm> list(@Param("terminalCode") String terminalCode);
+    /**
+     * 终端忽略报警信息根据alarmId查询详情
+     *@param alarmId 报警编码
+     */
+    MsgAlarm selectDetailByAlarmId(String alarmId);
 }

+ 9 - 1
business-service/src/main/java/com/ozs/service/BaseVehicleService.java

@@ -1,7 +1,10 @@
 package com.ozs.service;
 
-import com.ozs.entity.BaseVehicle;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.entity.BaseVehicle;
+import com.ozs.entity.vo.BaseVehicleVo;
 
 /**
  * <p>
@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface BaseVehicleService extends IService<BaseVehicle> {
 
+    IPage<BaseVehicle> vehicleList(BaseVehicleVo baseVehicle);
+
+    AjaxResult vehicleAdd(BaseVehicle baseVehicle, String userId);
+
+    AjaxResult vehicleUpdate(BaseVehicle baseVehicle, String userId);
 }

+ 8 - 0
business-service/src/main/java/com/ozs/service/MsgAlarmService.java

@@ -28,8 +28,16 @@ public interface MsgAlarmService extends IService<MsgAlarm> {
     //web数据统计 报警月统计数据(天)
     List<AlarmStatisticMonthDto> getDayCount(String railwayCode, Integer currentYear, Integer currentMonth);
 
+    //数据统计-灾害占比
+    List<AlarmStatisticMonthDto> getAlarmTypeCount(String railwayCode, Integer currentYear, Integer currentMonth);
+
+    //数据统计-频繁出现灾害地点排名
+    List<AlarmFreqArea> alarmTypeAreaCount(String railwayCode, Integer currentYear, Integer currentMonth);
+
     //报警数据详情导出数据集合
     List<AlarmStatisticDto> exportExcel(AlarmStatisticResVo alarmStatisticResVo);
+    //获取报警数量
+    Long getAlarmNum();
 
     /**
      * 通过相机编码查询未解除预警信息

+ 14 - 0
business-service/src/main/java/com/ozs/service/TerminalIgnoreAlarmService.java

@@ -1,7 +1,11 @@
 package com.ozs.service;
 
+import com.ozs.entity.MsgAlarm;
 import com.ozs.entity.TerminalIgnoreAlarm;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +16,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-04-11
  */
 public interface TerminalIgnoreAlarmService extends IService<TerminalIgnoreAlarm> {
+    /**
+     * 查询终端忽略报警信息列表
+     *@param terminalCode 终端编码
+     */
+    List<TerminalIgnoreAlarm> list(@Param("terminalCode") String terminalCode);
 
+    /**
+     * 终端忽略报警信息根据alarmId查询详情
+     *@param alarmId 报警编码
+     */
+    MsgAlarm selectDetailByAlarmId(String alarmId);
 }

+ 76 - 1
business-service/src/main/java/com/ozs/service/impl/BaseVehicleServiceImpl.java

@@ -1,11 +1,21 @@
 package com.ozs.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.utils.StringUtils;
 import com.ozs.entity.BaseVehicle;
+import com.ozs.entity.vo.BaseVehicleVo;
 import com.ozs.mapper.BaseVehicleMapper;
 import com.ozs.service.BaseVehicleService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 机车信息表 服务实现类
@@ -17,4 +27,69 @@ import org.springframework.stereotype.Service;
 @Service
 public class BaseVehicleServiceImpl extends ServiceImpl<BaseVehicleMapper, BaseVehicle> implements BaseVehicleService {
 
+    @Autowired
+    private BaseVehicleMapper baseVehicleMapper;
+
+    @Override
+    public IPage<BaseVehicle> vehicleList(BaseVehicleVo baseVehicle) {
+        LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<BaseVehicle>();
+        if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleName())) {
+            wrapper.eq(BaseVehicle::getVehicleName, baseVehicle.getVehicleName());
+        }
+        if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
+            wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
+        }
+        int pageNum = Integer.parseInt(baseVehicle.getPageNum().toString());
+        int pageSize = Integer.parseInt(baseVehicle.getPageSize().toString());
+        com.github.pagehelper.Page<BaseVehicle> page = PageHelper.startPage(pageNum, pageSize)
+                .doSelectPage(() -> baseVehicleMapper.selectList(wrapper));
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseVehicle> pageR =
+                new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
+        pageR.setRecords(page.getResult());
+        pageR.setTotal(page.getTotal());
+        return pageR;
+    }
+
+    @Override
+    public AjaxResult vehicleAdd(BaseVehicle baseVehicle, String userId) {
+        LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<BaseVehicle>();
+        if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
+            wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
+        }
+        List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(wrapper);
+        if (baseVehicles.size() > 0) {
+            return AjaxResult.error("机车编码已存在!");
+        }
+        Date date = new Date();
+        baseVehicle.setCreateBy(userId);
+        baseVehicle.setUpdateBy(userId);
+        baseVehicle.setCreateTime(date);
+        baseVehicle.setUpdateTime(date);
+        int insert = baseVehicleMapper.insert(baseVehicle);
+        if (insert > 0) {
+            return AjaxResult.success();
+        } else {
+            return AjaxResult.error();
+        }
+    }
+
+    @Override
+    public AjaxResult vehicleUpdate(BaseVehicle baseVehicle, String userId) {
+        LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<BaseVehicle>();
+        if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
+            wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
+        }
+        List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(wrapper);
+        if (baseVehicles.size() > 0) {
+            return AjaxResult.error("机车编码已存在!");
+        }
+        baseVehicle.setUpdateBy(userId);
+        baseVehicle.setUpdateTime(new Date());
+        int update = baseVehicleMapper.updateById(baseVehicle);
+        if (update > 0) {
+            return AjaxResult.success();
+        } else {
+            return AjaxResult.error();
+        }
+    }
 }

+ 18 - 0
business-service/src/main/java/com/ozs/service/impl/MsgAlarmServiceImpl.java

@@ -63,6 +63,18 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         return list;
     }
 
+    @Override
+    public List<AlarmStatisticMonthDto> getAlarmTypeCount(String railwayCode, Integer currentYear, Integer currentMonth) {
+        List<AlarmStatisticMonthDto> list = msgAlarmMapper.alarmTypeCount(railwayCode, currentYear, currentMonth);
+        return list;
+    }
+
+    @Override
+    public List<AlarmFreqArea> alarmTypeAreaCount(String railwayCode, Integer currentYear, Integer currentMonth) {
+        List<AlarmFreqArea> list = msgAlarmMapper.alarmTypeAreaCount(railwayCode, currentYear, currentMonth);
+        return list;
+    }
+
     @Override
     public List<AlarmStatisticDto> exportExcel(AlarmStatisticResVo alarmStatisticResVo) {
         List<AlarmStatisticDto> listDto = msgAlarmMapper.list(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
@@ -70,6 +82,12 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         return listDto;
     }
 
+    @Override
+    public Long getAlarmNum() {
+        Long alarmNum =  msgAlarmMapper.getAlarmNum();
+        return alarmNum;
+    }
+
     @Override
     public MsgAlarm selectByCameraCode(String cameraCode) {
         return msgAlarmMapper.selectByCameraCode(cameraCode);

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

@@ -1,11 +1,15 @@
 package com.ozs.service.impl;
 
+import com.ozs.entity.MsgAlarm;
 import com.ozs.entity.TerminalIgnoreAlarm;
 import com.ozs.mapper.TerminalIgnoreAlarmMapper;
 import com.ozs.service.TerminalIgnoreAlarmService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +20,17 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class TerminalIgnoreAlarmServiceImpl extends ServiceImpl<TerminalIgnoreAlarmMapper, TerminalIgnoreAlarm> implements TerminalIgnoreAlarmService {
+    @Autowired
+    private TerminalIgnoreAlarmMapper terminalIgnoreAlarmMapper;
+    @Override
+    public List<TerminalIgnoreAlarm> list(String terminalCode) {
+        List<TerminalIgnoreAlarm> list = terminalIgnoreAlarmMapper.list(terminalCode);
+        return list;
+    }
 
+    @Override
+    public MsgAlarm selectDetailByAlarmId(String alarmId) {
+        MsgAlarm msgAlarm = terminalIgnoreAlarmMapper.selectDetailByAlarmId(alarmId);
+        return msgAlarm;
+    }
 }

+ 74 - 8
business-service/src/main/resources/mapper/MsgAlarmMapper.xml

@@ -43,7 +43,7 @@
 
         <where>
             <if test="railwayCode != null and railwayCode != ''">
-                and UPPER(b.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+                and UPPER(a.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
             </if>
             <if test="currentYear != null and currentYear != 0">
                 and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
@@ -61,10 +61,35 @@
     <resultMap id="AlarmStatisticMonthDtoResult" type="com.ozs.entity.vo.AlarmStatisticMonthDto">
         <id column="id" property="id"/>
         <result column="monthsta" property="monthsta"/>
+        <result column="alarmType" property="alarmType"/>
         <result column="monthstaString" property="monthstaString"/>
         <result column="frequency" property="frequency"/>
-        <result column="alarm_type" property="alarmType"/>
     </resultMap>
+    <select id="alarmTypeCount" resultMap="AlarmStatisticMonthDtoResult">
+        SELECT sum(p.fre) as frequency,p.alarmType as alarmType
+        from
+        (SELECT
+        a.alarm_type as alarmType,
+        count(DISTINCT a.alarm_id) as fre
+        FROM
+        msg_alarm AS a
+
+        <where>
+            <if test="railwayCode != null and railwayCode != ''">
+                and UPPER(a.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+            </if>
+            <if test="currentYear != null and currentYear != 0">
+                and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
+            </if>
+            <if test="currentYear == null or currentYear == ''">
+                and YEAR(a.alarm_time) = YEAR(SYSDATE())
+            </if>
+            <if test="currentMonth != null and currentMonth != 0">
+                and MONTH(a.alarm_time) =#{currentMonth}
+            </if>
+        </where>
+        group by a.alarm_id) AS p group by p.alarmType
+    </select>
     <select id="listDtoMonth" resultMap="AlarmStatisticMonthDtoResult">
         SELECT p.monthsta as monthsta,sum(p.fre) as frequency,p.monthstaString as monthstaString
         from
@@ -73,12 +98,11 @@
         MONTH(a.alarm_time) as monthsta,
         count(DISTINCT a.alarm_id) as fre
         FROM
-        msg_alarm AS a inner join
-        base_railway_management AS b on a.railway_code=b.railway_code
+        msg_alarm AS a
 
         <where>
             <if test="railwayCode != null and railwayCode != ''">
-                and UPPER(b.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+                and UPPER(a.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
             </if>
             <if test="currentYear != null and currentYear != 0">
                 and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
@@ -101,12 +125,11 @@
         DAY(a.alarm_time) as daysta,
         count(DISTINCT a.alarm_id) as fre
         FROM
-        msg_alarm AS a inner join
-        base_railway_management AS b on a.railway_code=b.railway_code
+        msg_alarm AS a
 
         <where>
             <if test="railwayCode != null and railwayCode != ''">
-                and UPPER(b.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+                and UPPER(a.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
             </if>
             <if test="currentYear != null and currentYear != 0">
                 and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
@@ -120,6 +143,49 @@
         </where>
         group by a.alarm_id) AS p group by p.daysta order by p.daysta
     </select>
+
+    <resultMap id="AlarmTypeStatisticResult" type="com.ozs.entity.vo.AlarmFreqArea">
+        <id column="id" property="id"/>
+        <result column="railwayName" property="railwayName"/>
+        <result column="railwayCode" property="railwayCode"/>
+        <result column="alarmMile" property="alarmMile"/>
+        <result column="frequency" property="frequency"/>
+    </resultMap>
+    <select id="alarmTypeAreaCount" resultMap="AlarmTypeStatisticResult">
+        SELECT railwayCode,railwayName,alarmMile,SUM(p.pre) as frequency
+        from
+        (SELECT
+        a.railway_code as railwayCode,
+        b.railway_name as railwayName,
+        a.alarm_mile as alarmMile,
+        count(a.railway_code) as pre
+        FROM
+        msg_alarm AS a inner join
+        base_railway_management b on a.railway_code=b.railway_code
+
+        <where>
+            <if test="railwayCode != null and railwayCode != ''">
+                and UPPER(a.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+            </if>
+            <if test="currentYear != null and currentYear != 0">
+                and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
+            </if>
+            <if test="currentYear == null or currentYear == ''">
+                and YEAR(a.alarm_time) = YEAR(SYSDATE())
+            </if>
+            <if test="currentMonth != null and currentMonth != 0">
+                and MONTH(a.alarm_time) =#{currentMonth}
+            </if>
+        </where>
+        group by a.alarm_id) AS p group by p.railwayCode order by frequency desc
+    </select>
+
+    <select id="getAlarmNum" resultType="java.lang.Long">
+        select count(DISTINCT alarm_id) as alarmNum
+        from
+        msg_alarm
+    </select>
+
     <select id="selectCameraCode" parameterType="java.lang.String" resultType="java.lang.Integer">
         select is_lock from msg_alarm where camera_code = #{cameraCode} ORDER BY alarm_time DESC LIMIT 1
     </select>

+ 36 - 0
business-service/src/main/resources/mapper/TerminalIgnoreAlarmMapper.xml

@@ -1,5 +1,41 @@
 <?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.mapper.TerminalIgnoreAlarmMapper">
+    <resultMap id="TerminalIgnoreAlarmResult" type="com.ozs.entity.TerminalIgnoreAlarm">
+        <id column="id" property="id"/>
+        <result column="terminal_code" property="terminalCode"/>
+        <result column="alarm_id" property="alarmId"/>
+        <result column="ignore_time" property="ignoreTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+    <select id="list" resultMap="TerminalIgnoreAlarmResult" >
+        SELECT
+        a.terminal_code,
+        a.alarm_id,
+        a.ignore_time,
+        a.create_by,
+        a.create_time,
+        a.update_by,
+        a.update_time,
+        a.remark
+        FROM terminal_ignore_alarm as a
+
+        <where>
+            <if test="terminalCode != null and terminalCode != ''">
+                and a.terminalCode = #{terminalCode}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectDetailByAlarmId" resultType="com.ozs.entity.MsgAlarm">
+        select a.*,b.railway_name
+        from msg_alarm as a inner join
+        base_railway_management as b on a.railway_code=b.railway_code
+        where alarm_id = #{alarmId} limit 1
+    </select>
 
 </mapper>

+ 1 - 0
business-service/src/main/resources/mapper/VehiclePositionMapper.xml

@@ -48,6 +48,7 @@
                 and c.status = #{status}
             </if>
         </where>
+        order by create_time desc
     </select>
 
 

+ 94 - 4
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseVehicleController.java

@@ -1,8 +1,21 @@
 package com.ozs.web.controller.accountmanagment;
 
+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.enums.BusinessType;
+import com.ozs.common.utils.StringUtils;
+import com.ozs.entity.BaseVehicle;
+import com.ozs.entity.vo.BaseVehicleVo;
+import com.ozs.service.BaseVehicleService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -13,8 +26,85 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2023-04-11
  */
 @RestController
-@RequestMapping("/base-vehicle")
-public class BaseVehicleController {
+@RequestMapping("/baseVehicle")
+@Slf4j
+public class BaseVehicleController extends BaseController {
+
+    @Autowired
+    private BaseVehicleService baseVehicleService;
+
+    public static void main(String[] args) {
+        System.out.println(new Date().getTime());
+    }
+
+    /**
+     * 机车信息表 分页查询
+     *
+     * @param baseVehicle
+     * @return
+     */
+    @ApiOperation(value = "机车信息表 分页查询")
+    @PostMapping("/vehicleList")
+    @Log(title = "机车信息表 分页查询", businessType = BusinessType.SELECT)
+    public AjaxResult vehicleList(@RequestBody BaseVehicleVo baseVehicle) {
+        IPage<BaseVehicle> baseVehicleList = baseVehicleService.vehicleList(baseVehicle);
+        return AjaxResult.success(baseVehicleList);
+    }
+
+    /**
+     * 机车信息表 新增
+     *
+     * @param baseVehicle
+     * @return
+     */
+    @ApiOperation(value = "机车信息表 新增")
+    @PostMapping("/vehicleAdd")
+    @Log(title = "机车信息表 新增", businessType = BusinessType.SELECT)
+    public AjaxResult vehicleAdd(@RequestBody BaseVehicle baseVehicle) {
+        if (StringUtils.isEmptySunhh(baseVehicle) || StringUtils.isEmptySunhh(baseVehicle.getVehicleName())
+                || StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
+            return AjaxResult.error("机车名称、机车编码不能为空!");
+        }
+        return baseVehicleService.vehicleAdd(baseVehicle, getUserId());
+    }
+
+    /**
+     * 机车信息表 修改
+     *
+     * @param baseVehicle
+     * @return
+     */
+    @ApiOperation(value = "机车信息表 修改")
+    @PostMapping("/vehicleUpdate")
+    @Log(title = "机车信息表 修改", businessType = BusinessType.SELECT)
+    public AjaxResult vehicleUpdate(@RequestBody BaseVehicle baseVehicle) {
+        if (StringUtils.isEmptySunhh(baseVehicle) || StringUtils.isEmptySunhh(baseVehicle.getId())) {
+            return AjaxResult.error("修改ID不能为空!");
+        }
+        return baseVehicleService.vehicleUpdate(baseVehicle,getUserId());
+    }
+
+    /**
+     * 机车信息表 删除
+     *
+     * @param ids
+     * @return
+     */
+    @ApiOperation(value = "机车信息表 删除")
+    @PostMapping("/vehicleDelete")
+    @Log(title = "机车信息表 删除", businessType = BusinessType.SELECT)
+    public AjaxResult vehicleDelete(@PathVariable List<Long> ids) {
+        if (StringUtils.isEmptySunhh(ids)) {
+            return AjaxResult.error("删除ID不能为空!");
+        }
+        boolean delete = baseVehicleService.removeByIds(ids);
+        if (delete) {
+            return AjaxResult.success();
+        } else {
+            return AjaxResult.error();
+        }
+    }
+
 
 }
 

+ 116 - 20
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/DataStatisticController.java

@@ -1,5 +1,6 @@
 package com.ozs.web.controller.accountmanagment;
 
+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;
@@ -10,12 +11,10 @@ import com.ozs.common.utils.AppendUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.poi.ExcelUtil;
 import com.ozs.entity.BaseUser;
-import com.ozs.entity.vo.AlarmStatisticDto;
-import com.ozs.entity.vo.AlarmStatisticMonthDto;
-import com.ozs.entity.vo.AlarmStatisticResVo;
-import com.ozs.entity.vo.AlarmStatisticVo;
-import com.ozs.service.BaseUserService;
-import com.ozs.service.MsgAlarmService;
+import com.ozs.entity.BaseVehicleTerminal;
+import com.ozs.entity.TerminalIgnoreAlarm;
+import com.ozs.entity.vo.*;
+import com.ozs.service.*;
 import com.ozs.system.service.ISysDictDataService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -32,6 +31,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
 import java.util.*;
 
 /**
@@ -44,25 +45,30 @@ import java.util.*;
 public class DataStatisticController extends BaseController {
     private static final Logger log = LoggerFactory.getLogger(DataStatisticController.class);
     @Resource
-    MsgAlarmService msgAlarmService;
+    private MsgAlarmService msgAlarmService;
     @Resource
     private BaseUserService baseUserService;
     @Autowired
     private ISysDictDataService dictDataService;
+    @Autowired
+    private BaseVehicleService baseVehicleService;
+    @Autowired
+    private BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    private BaseVehicleTerminalService baseVehicleTerminalService;
     /**
      * web数据统计
      *
      * @param alarmStatisticResVo
      * @return
      */
-    @Log(title = "报警信息管理", businessType = BusinessType.OTHER)
+    @Log(title = "报警数据详情", businessType = BusinessType.SELECT)
     @PostMapping("/dataStatistic")
     @ApiOperation(value = "web数据统计 报警数据详情")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
             @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
-            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份"),
-            @ApiImplicitParam(paramType = "query", name = "alarmType", value = "灾害类型"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
     })
     public AjaxResult dataStatistic(@RequestBody AlarmStatisticResVo alarmStatisticResVo) {
         Integer pageNum = alarmStatisticResVo.getPageNum().intValue();
@@ -100,14 +106,13 @@ public class DataStatisticController extends BaseController {
      * @param
      * @return
      */
-    @Log(title = "报警信息管理", businessType = BusinessType.OTHER)
+    @Log(title = "报警月统计", businessType = BusinessType.SELECT)
     @PostMapping("/alarmMonthStatistic")
     @ApiOperation(value = "web数据统计 报警月统计数据")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
             @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
-            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份"),
-            @ApiImplicitParam(paramType = "query", name = "alarmType", value = "灾害类型"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
     })
     public AjaxResult alarmMonthStatistic(@RequestBody AlarmStatisticResVo alarmStatisticResVo) {
         List<Integer> numbs = new ArrayList<>();
@@ -160,6 +165,67 @@ public class DataStatisticController extends BaseController {
         return AjaxResult.success(list);
     }
 
+    /**
+     * web数据统计
+     *
+     * @param
+     * @return
+     */
+    @Log(title = "灾害类型统计", businessType = BusinessType.SELECT)
+    @PostMapping("/alarmTypeStatistic")
+    @ApiOperation(value = "web数据统计 灾害类型统计数据")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
+            @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
+    })
+    public AjaxResult alarmTypeStatistic(@RequestBody AlarmStatisticResVo alarmStatisticResVo) {
+        List<AlarmStatisticMonthDto> list = msgAlarmService.getAlarmTypeCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                alarmStatisticResVo.getCurrentMonth());
+        Integer sum = list.stream().mapToInt((x) -> Integer.parseInt(String.valueOf(x.getFrequency()))).sum();
+        NumberFormat numberFormat = NumberFormat.getPercentInstance();
+        numberFormat.setMinimumFractionDigits(2);
+        if (!CollectionUtils.isEmpty(list) && list.size()!= 0){
+            list.forEach(l -> {
+                if (!ObjectUtils.isEmpty(l.getAlarmType())) {
+                    l.setAlarmTypeValue(dictDataService.selectDictLabel("sys_alarm_type", String.valueOf(l.getAlarmType())));
+                }
+                    l.setPercent(numberFormat.format(l.getFrequency()*1.0 / sum));
+            });
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * web数据统计
+     *
+     * @param
+     * @return
+     */
+    @Log(title = "频繁出现灾害地点排名", businessType = BusinessType.SELECT)
+    @PostMapping("/alarmTypeAreaCount")
+    @ApiOperation(value = "web数据统计 频繁出现灾害地点排名")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
+            @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
+    })
+    public AjaxResult alarmTypeAreaCount(@RequestBody AlarmStatisticResVo alarmStatisticResVo) {
+        Integer pageNum = alarmStatisticResVo.getPageNum().intValue();
+        Integer pageSize = alarmStatisticResVo.getPageSize().intValue();
+        List<AlarmFreqArea> list = msgAlarmService.alarmTypeAreaCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                alarmStatisticResVo.getCurrentMonth());
+        list.forEach(l -> {
+                    if (!ObjectUtils.isEmpty(l.getAlarmMile())) {
+                        l.setAlarmMiles(AppendUtils.stringAppend(Integer.valueOf(l.getAlarmMile())));
+                    }
+        });
+        IPage page = msgAlarmService.listToPage(list, pageNum, pageSize);
+        if (!ObjectUtils.isEmpty(page) && !ObjectUtils.isEmpty(page.getRecords())) {
+            return AjaxResult.success(page);
+        }
+        return AjaxResult.success(null);
+    }
 
     /**
      * web数据统计 数据导出
@@ -167,14 +233,13 @@ public class DataStatisticController extends BaseController {
      * @param
      * @return
      */
-    @Log(title = "报警信息管理", businessType = BusinessType.EXPORT)
+    @Log(title = "报警详情导出管理", businessType = BusinessType.EXPORT)
     @PostMapping("/exportDataStatistic")
-    @ApiOperation(value = "web数据统计-数据导出")
+    @ApiOperation(value = "报警详情导出管理")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
             @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
-            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份"),
-            @ApiImplicitParam(paramType = "query", name = "alarmType", value = "灾害类型"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
     })
     public void exportDataStatistic(HttpServletResponse response, @RequestBody AlarmStatisticResVo alarmStatisticResVo) {
         try {
@@ -216,14 +281,13 @@ public class DataStatisticController extends BaseController {
      * @param
      * @return
      */
-    @Log(title = "报警信息管理", businessType = BusinessType.EXPORT)
+    @Log(title = "报警月统计数据导出", businessType = BusinessType.EXPORT)
     @PostMapping("/exportDataStatisticMonth")
     @ApiOperation(value = "报警月统计数据导出")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
             @ApiImplicitParam(paramType = "query", name = "currentYear", value = "当前年份"),
-            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份"),
-            @ApiImplicitParam(paramType = "query", name = "alarmType", value = "灾害类型"),
+            @ApiImplicitParam(paramType = "query", name = "currentMonth", value = "当前月份")
     })
     public void exportDataStatisticMonth(HttpServletResponse response, @RequestBody AlarmStatisticResVo alarmStatisticResVo) {
         List<AlarmStatisticMonthDto> list = null;
@@ -237,4 +301,36 @@ public class DataStatisticController extends BaseController {
         ExcelUtil<AlarmStatisticMonthDto> util = new ExcelUtil<>(AlarmStatisticMonthDto.class);
         util.exportExcel(response, list, "报警月统计数据");
     }
+
+    /**
+     * 查询终端数、机车数、相机数、预警数
+     *
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "查询终端数、机车数、相机数、预警数")
+    @PostMapping("/getNum")
+    @Log(title = "查询终端数、机车数、相机数、预警数", businessType = BusinessType.SELECT)
+    public AjaxResult getNum() {
+        Long alarmNum = msgAlarmService.getAlarmNum();
+        Long vehicleNum = baseVehicleService.count();
+        QueryWrapper<BaseVehicleTerminal> wrapper = new QueryWrapper<BaseVehicleTerminal>();
+        wrapper.lambda().eq(BaseVehicleTerminal::getStatus,1);
+        Long terminalNum= baseVehicleTerminalService.count();
+        Long cameraNum = baseCameraManagementService.count();
+        DataStatisticNum dataStatisticNum =new DataStatisticNum();
+        if(!ObjectUtils.isEmpty(alarmNum)){
+            dataStatisticNum.setAlarmNum(alarmNum);
+        }
+        if(!ObjectUtils.isEmpty(vehicleNum)){
+            dataStatisticNum.setVehicleNum(vehicleNum);
+        }
+        if(!ObjectUtils.isEmpty(terminalNum)){
+            dataStatisticNum.setTerminalNum(terminalNum);
+        }
+        if(!ObjectUtils.isEmpty(cameraNum)){
+            dataStatisticNum.setCameraNum(cameraNum);
+        }
+        return AjaxResult.success(dataStatisticNum);
+    }
 }

+ 81 - 2
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/TerminalIgnoreAlarmController.java

@@ -1,9 +1,31 @@
 package com.ozs.web.controller.accountmanagment;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ozs.common.annotation.Log;
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.enums.BusinessType;
+import com.ozs.common.utils.AppendUtils;
+import com.ozs.common.utils.poi.ExcelUtil;
+import com.ozs.entity.MsgAlarm;
+import com.ozs.entity.TerminalIgnoreAlarm;
+import com.ozs.entity.vo.TerminalIgnoreVo;
+import com.ozs.service.TerminalIgnoreAlarmService;
+import com.ozs.system.service.ISysDictDataService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 /**
  * <p>
  *  前端控制器
@@ -13,8 +35,65 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2023-04-11
  */
 @RestController
-@RequestMapping("/terminal-ignore-alarm")
-public class TerminalIgnoreAlarmController {
+@RequestMapping("/terminal/ignore")
+public class TerminalIgnoreAlarmController extends BaseController {
+    @Autowired
+    private TerminalIgnoreAlarmService terminalIgnoreAlarmService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    /**
+     * 查询终端忽略报警信息列表
+     *
+     * @param terminalIgnoreVo
+     * @return
+     */
+    @ApiOperation(value = "查询终端忽略报警信息列表")
+    @PostMapping("/list")
+    @Log(title = "终端忽略报警信息列表", businessType = BusinessType.SELECT)
+    public AjaxResult list(@RequestBody TerminalIgnoreVo terminalIgnoreVo) {
+        QueryWrapper<TerminalIgnoreAlarm> wrapper = new QueryWrapper<TerminalIgnoreAlarm>();
+        if (!ObjectUtils.isEmpty(terminalIgnoreVo.getTerminalCode())) {
+            wrapper.lambda().like(TerminalIgnoreAlarm::getTerminalCode, terminalIgnoreVo.getTerminalCode());
+        }
+        wrapper.orderByDesc("ignore_time");
+        IPage<TerminalIgnoreAlarm> page = terminalIgnoreAlarmService.page(new Page<>(terminalIgnoreVo.getPageNum(), terminalIgnoreVo.getPageSize()), wrapper);
+        return AjaxResult.success(page);
+    }
+
+    /**
+     * 查询终端忽略报警信息详情
+     *
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "终端忽略报警信息详情")
+    @PostMapping("/detail")
+    @Log(title = "终端忽略报警信息详情", businessType = BusinessType.SELECT)
+    public AjaxResult detail(@RequestBody TerminalIgnoreVo terminalIgnoreVo) {
+        MsgAlarm msgAlarm = terminalIgnoreAlarmService.selectDetailByAlarmId(terminalIgnoreVo.getAlarmId());
+        if(!ObjectUtils.isEmpty(msgAlarm.getLineDir())){//行别
+            msgAlarm.setLineDirName(msgAlarm.getLineDir() == 1 ? "上行" : "下行");
+        }
+        if(!ObjectUtils.isEmpty(msgAlarm.getAlarmType())){//报警类型
+            msgAlarm.setAlarmTypeName(dictDataService.selectDictLabel("sys_alarm_type", String.valueOf(msgAlarm.getAlarmType())));
+        }
+        if(!ObjectUtils.isEmpty(msgAlarm.getAlarmMile())){//里程位置
+            msgAlarm.setAlarmMiles(AppendUtils.stringAppend(Integer.valueOf(msgAlarm.getAlarmMile())));
+        }
+        if(!ObjectUtils.isEmpty(msgAlarm.getIsRelease())){//状态
+            msgAlarm.setIsReleaseName(msgAlarm.getIsRelease() == 1 ? "已解除" : "未解除");
+        }
+        return AjaxResult.success(msgAlarm);
+    }
 
+    @ApiOperation(value = "终端忽略报警信息导出")
+    @Log(title = "终端忽略报警信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, @RequestBody TerminalIgnoreVo terminalIgnoreVo) {
+        List<TerminalIgnoreAlarm> list = terminalIgnoreAlarmService.list(terminalIgnoreVo.getTerminalCode());
+        ExcelUtil<TerminalIgnoreAlarm> util = new ExcelUtil<TerminalIgnoreAlarm>(TerminalIgnoreAlarm.class);
+        util.exportExcel(response, list, "终端忽略报警信息");
+    }
 }