Browse Source

实现app告警中心

jiawuxian 1 year ago
parent
commit
cf70ca8efa

+ 3 - 4
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/DeviceOnlineStatus.java

@@ -9,12 +9,11 @@ import lombok.Getter;
  */
 @JsonSerialize(using = EnumSerializer.class)
 public enum DeviceOnlineStatus {
-    UNKNOW("未知"),
+
     ONLINE("在线"),
+    NA("异常"),
     OFFLINE("离线"),
-    NA("异常"),;
-
-
+    UNKNOW("未知") ;
 
     @Getter
     private final String text;

+ 46 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataAppController.java

@@ -0,0 +1,46 @@
+package com.xunmei.iot.controller;
+
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.service.IotAlarmDataService;
+import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
+import com.xunmei.iot.vo.sensor.SensorAppVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.yaml.snakeyaml.reader.StreamReader;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+@RestController
+@RequestMapping("/iot_alarm_data/app")
+public class IotAlarmDataAppController {
+    @Autowired
+    private IotAlarmDataService iotAlarmDataService;
+
+    @ApiOperation(value = "查询动环告警列表")
+    @PostMapping("/list")
+    public TableDataInfo<AppAlarmDataPageVo> list(@RequestBody AppAlarmPageDto requestDto, HttpServletRequest request) throws  Exception {
+        return iotAlarmDataService.selectListAppPage(requestDto);
+    }
+
+    @ApiOperation("告警详情")
+    @GetMapping({"/detail/{id}"})
+    AjaxResult detail(@PathVariable("id") Long id) {
+        IotAlarmDataVo vo = this.iotAlarmDataService.getDetail(id);
+        return AjaxResult.success(vo);
+    }
+
+    @ApiOperation("告警中心角标")
+    @GetMapping({"/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.iotAlarmDataService.appBadge(orgId);
+        return AjaxResult.success(count);
+    }
+}

+ 2 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotSensorAppController.java

@@ -44,14 +44,14 @@ public class IotSensorAppController {
         return AjaxResult.success(vo);
     }
 
-    @ApiOperation("动环设备分页")
+    @ApiOperation("动环设备详情")
     @GetMapping({"/detail/{id}"})
     AjaxResult detail(@PathVariable("id") Long id) {
         SensorAppVo vo = this.sensorService.appDetail(id);
         return AjaxResult.success(vo);
     }
 
-    @ApiOperation("动环设备分页")
+    @ApiOperation("动环设备角标")
     @GetMapping({"/badge/{orgId}"})
     AjaxResult badge(@PathVariable("orgId") Long orgId) {
         Integer count = this.sensorService.badge(orgId);

+ 13 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/AppAlarmPageDto.java

@@ -0,0 +1,13 @@
+package com.xunmei.iot.dto.alarmData;
+
+import com.xunmei.common.core.web.domain.PageDto;
+import lombok.Data;
+
+@Data
+public class AppAlarmPageDto extends PageDto {
+    private String deviceName;
+
+    private Integer alarmType;
+
+    private  Integer state;
+}

+ 7 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java

@@ -3,13 +3,19 @@ package com.xunmei.iot.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
+import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface IotAlarmDataMapper extends BaseMapper<IotAlarmData> {
-
     Page<IotAlarmDataVo> selectPageList(@Param("page") Page<IotAlarmDataVo> page, @Param("param") IotAlarmDataVo param);
 
+    Page<AppAlarmDataPageVo> selectAppPageList(@Param("page") Page<AppAlarmDataPageVo> page, @Param("param") AppAlarmPageDto param);
+
+    IotAlarmDataVo detail(Long id);
+
+    Integer appBadge(Long orgId);
 }

+ 8 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmDataService.java

@@ -3,7 +3,9 @@ package com.xunmei.iot.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 
 public interface IotAlarmDataService extends IService<IotAlarmData> {
 
@@ -13,4 +15,10 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
      * @return
      */
     TableDataInfo<IotAlarmDataVo> selectListPage(IotAlarmDataVo requestDto);
+
+    TableDataInfo<AppAlarmDataPageVo> selectListAppPage(AppAlarmPageDto requestDto);
+
+    IotAlarmDataVo getDetail(Long id);
+
+    Integer appBadge(Long orgId);
 }

+ 30 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmDataServiceImpl.java

@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.mapper.IotAlarmDataMapper;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.stereotype.Service;
@@ -59,4 +61,32 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(iotAlarmDataVoPage);
     }
+
+    @Override
+    public TableDataInfo<AppAlarmDataPageVo> selectListAppPage(AppAlarmPageDto request) {
+        Page<AppAlarmDataPageVo> page=request.toPage();
+        if(request.getCheckSub() && ObjectUtil.isNotEmpty(request.getOrgId())){
+            SysOrg org = orgService.selectSysOrgById(request.getOrgId(), SecurityConstants.INNER);
+            request.setOrgPath(org.getPath());
+            request.setOrgId(null);
+        }
+
+        page=baseMapper.selectAppPageList(page,request);
+
+        return TableDataInfo.build(page);
+    }
+
+    @Override
+    public IotAlarmDataVo getDetail(Long id) {
+        IotAlarmDataVo vo=baseMapper.detail(id);
+
+        return  vo;
+    }
+
+    @Override
+    public Integer appBadge(Long orgId){
+        Integer count=baseMapper.appBadge(orgId);
+
+        return  count;
+    }
 }

+ 1 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java

@@ -134,6 +134,7 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
                 vo.getStorage().setAllLostDates(new ArrayList<>());
             }
 
+            vo.getStorage().setLastTime(DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1));
             setUnknownDate(vo.getStorage(), earliestDate);
         }
 

+ 31 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/AppAlarmDataPageVo.java

@@ -0,0 +1,31 @@
+package com.xunmei.iot.vo.alarmData;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AppAlarmDataPageVo {
+    private Long id;
+
+    @ApiModelProperty(value = "机构名称")
+    private String orgName;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "报警源类型(设备类型) 中文")
+    private String sourceTypeDes;
+
+    @ApiModelProperty(value = "告警开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "告警结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisStorageVo.java

@@ -18,6 +18,8 @@ public class VideoDiagnosisStorageVo {
     private  Integer realDays;
     @ApiModelProperty("最早录像时间")
     private Date earliestTime;
+    @ApiModelProperty("最晚录像时间")
+    private Date lastTime;
     @ApiModelProperty("录像完整日期")
     private List<String> fullDates;
     @ApiModelProperty("部分丢失日期")

+ 51 - 7
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml

@@ -1,16 +1,14 @@
 <?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.xunmei.iot.mapper.IotAlarmDataMapper">
-
-
     <select id="selectPageList" resultType="com.xunmei.iot.vo.alarm.IotAlarmDataVo">
         SELECT
-            a.*,
-            b.affiliated_area AS city,
-            b.affiliated_bank AS bank,
-            b.short_name AS org_name
+        a.*,
+        b.affiliated_area AS city,
+        b.affiliated_bank AS bank,
+        b.short_name AS org_name
         FROM
-            iot_alarm_data a
+        iot_alarm_data a
         LEFT JOIN sys_org b ON a.org_id = b.id
         where 1=1
         <if test="param.deviceName != null and param.deviceName != ''">
@@ -41,4 +39,50 @@
             and a.end_time &lt;= #{param.params.endAlarmEndTime}
         </if>
     </select>
+    <select id="selectAppPageList" resultType="com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo">
+        SELECT
+        a.id,
+        a.device_name,
+        a.source_type_des,
+        a.time as start_time,
+        a.end_time,
+        b.short_name AS org_name
+        FROM
+        iot_alarm_data a
+        LEFT JOIN sys_org b ON a.org_id = b.id
+        where 1=1
+        <if test="param.deviceName != null and param.deviceName != ''">
+            and a.device_name like concat('%',#{param.deviceName},'%')
+        </if>
+        <if test="param.orgId != null and param.orgId != ''">
+            and a.org_id = #{param.orgId}
+        </if>
+        <if test="param.orgPath != null and param.orgPath != ''">
+            and b.path like concat(#{param.orgPath},'%')
+        </if>
+        <if test="param.alarmType != null and param.alarmType != ''">
+            and a.source_type = #{param.alarmType}
+        </if>
+        <if test="param.state==0">
+            and a.end_time is not null
+        </if>
+        <if test="param.state==1">
+            and a.end_time is null
+        </if>
+        order by a.end_time ,a.time desc
+    </select>
+    <select id="detail" resultType="com.xunmei.iot.vo.alarm.IotAlarmDataVo">
+        SELECT a.*,
+               b.affiliated_area AS city,
+               b.affiliated_bank AS bank,
+               b.short_name      AS org_name
+        FROM iot_alarm_data a
+                 LEFT JOIN sys_org b ON a.org_id = b.id
+        where a.id = #{id}
+    </select>
+    <select id="appBadge" resultType="java.lang.Integer">
+        SELECT count(0)
+        FROM iot_alarm_data a
+        where a.org_id = #{orgId} and a.end_time is null
+    </select>
 </mapper>