zhulu пре 1 година
родитељ
комит
ba0a5d4397

+ 10 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java

@@ -104,12 +104,22 @@ public class IotAlarmData extends BaseEntity {
 
     @ApiModelProperty(value = "处理时间")
     @TableField("do_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime doTime;
 
     @ApiModelProperty(value = "处理方式:0:为处理,1:(暂无)2:误报,3:正常告警,4:报修")
     @TableField("do_type")
     private Integer doType;
 
+    @ApiModelProperty(value = "处置人")
+    @TableField("do_by_user")
+    private String doByUser;
+
+
+    @ApiModelProperty(value = "处置内容")
+    @TableField("do_content")
+    private String doContent;
+
     @ApiModelProperty(value = "是否需要发送短信")
     @TableField(exist = false)
     private Boolean smsType;

+ 7 - 5
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataAppController.java

@@ -4,19 +4,15 @@ 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.dto.alarmData.dealAlarmDto;
 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")
@@ -37,6 +33,12 @@ public class IotAlarmDataAppController {
         return AjaxResult.success(vo);
     }
 
+    @ApiOperation("处置告警")
+    @PutMapping
+    AjaxResult dealAlarm(@RequestBody dealAlarmDto requestDto) {
+        return AjaxResult.success(this.iotAlarmDataService.dealAlarm(requestDto));
+    }
+
     @ApiOperation("告警中心角标")
     @GetMapping({"/badge/{orgId}"})
     AjaxResult badge(@PathVariable("orgId") Long orgId) {

+ 17 - 3
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataController.java

@@ -1,14 +1,14 @@
 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.dealAlarmDto;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/iot_alarm_data")
@@ -23,4 +23,18 @@ public class IotAlarmDataController {
 
         return iotAlarmDataService.selectListPage(requestDto);
     }
+
+    @ApiOperation("告警详情")
+    @GetMapping({"/detail/{id}"})
+    AjaxResult detail(@PathVariable("id") Long id) {
+        IotAlarmDataVo vo = this.iotAlarmDataService.getDetail(id);
+        return AjaxResult.success(vo);
+    }
+
+    @ApiOperation("处置告警")
+    @PutMapping
+    AjaxResult dealAlarm(@RequestBody dealAlarmDto requestDto) {
+        return AjaxResult.success(this.iotAlarmDataService.dealAlarm(requestDto));
+    }
+
 }

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

@@ -1,8 +1,16 @@
 package com.xunmei.iot.dto.alarmData;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.xunmei.common.core.web.domain.PageDto;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 @Data
 public class AppAlarmPageDto extends PageDto {
     private String deviceName;
@@ -10,4 +18,23 @@ public class AppAlarmPageDto extends PageDto {
     private Integer alarmType;
 
     private  Integer state;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Map<String, Object> params;
+
+    @ApiModelProperty(value = "告警时间")
+    private List<String> alarmTime;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    private Integer isDo;
+
+    public Map<String, Object> getParams() {
+        if (params == null) {
+            params = new HashMap<>();
+        }
+        return params;
+    }
 }

+ 12 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/dealAlarmDto.java

@@ -0,0 +1,12 @@
+package com.xunmei.iot.dto.alarmData;
+
+import lombok.Data;
+
+@Data
+public class dealAlarmDto {
+    private Long id;
+
+    private Integer doType;
+
+    private  String doContent;
+}

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

@@ -4,6 +4,7 @@ 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.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 
@@ -20,5 +21,7 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
 
     IotAlarmDataVo getDetail(Long id);
 
+    Integer dealAlarm(dealAlarmDto requestDto);
+
     Integer appBadge(Long orgId);
 }

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

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.util.BeanHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.mapper.IotAlarmDataMapper;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
@@ -18,6 +21,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Date;
 
 @Service
 public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, IotAlarmData> implements IotAlarmDataService {
@@ -49,6 +53,15 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
             request.getParams().put("endAlarmEndTime",endAlarmEndTime);
         }
 
+        if(ObjectUtil.isNotEmpty(request.getAlarmDealTime()) && request.getAlarmDealTime().size() > 0){
+            LocalDateTime dealAlarmStartTime =LocalDateTime.parse(request.getAlarmDealTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime dealAlarmEndTime =LocalDateTime.parse(request.getAlarmDealTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            request.getParams().put("dealAlarmStartTime",dealAlarmStartTime);
+            request.getParams().put("dealAlarmEndTime",dealAlarmEndTime);
+        }
+
+
+
         if(request.getCheckSub() && ObjectUtil.isNotEmpty(request.getOrgId())){
             SysOrg org = orgService.selectSysOrgById(request.getOrgId(), SecurityConstants.INNER);
             request.setOrgPath(org.getPath());
@@ -70,6 +83,12 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
             request.setOrgPath(org.getPath());
             request.setOrgId(null);
         }
+        if(ObjectUtil.isNotEmpty(request.getAlarmTime()) && request.getAlarmTime().size() > 0){
+            LocalDateTime alarmStartTime =LocalDateTime.parse(request.getAlarmTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime alarmEndTime =LocalDateTime.parse(request.getAlarmTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            request.getParams().put("alarmStartTime",alarmStartTime);
+            request.getParams().put("alarmEndTime",alarmEndTime);
+        }
 
         page=baseMapper.selectAppPageList(page,request);
 
@@ -84,6 +103,19 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
     }
 
     @Override
+    public Integer dealAlarm(dealAlarmDto requestDto) {
+        IotAlarmData iotAlarmData = baseMapper.selectById(requestDto.getId());
+//        BeanHelper.copyProperties(requestDto,iotAlarmData);
+        iotAlarmData.setDoType(requestDto.getDoType());
+        iotAlarmData.setDoContent(requestDto.getDoContent());
+        iotAlarmData.setDoByUser(SecurityUtils.getUsername());
+        iotAlarmData.setDoTime(LocalDateTime.now());
+        iotAlarmData.setIsDo(1);
+        baseMapper.updateById(iotAlarmData);
+        return null;
+    }
+
+    @Override
     public Integer appBadge(Long orgId){
         Integer count=baseMapper.appBadge(orgId);
 

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmDataVo.java

@@ -26,7 +26,11 @@ public class IotAlarmDataVo extends IotAlarmData {
     @ApiModelProperty(value = "告警恢复时间")
     private List<String> alarmEndTime;
 
+    @ApiModelProperty(value = "告警处置时间")
+    private List<String> alarmDealTime;
+
     @ApiModelProperty(value = "机构path")
     private String orgPath;
 
+
 }

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

@@ -18,6 +18,9 @@ public class AppAlarmDataPageVo {
     @ApiModelProperty(value = "设备名称")
     private String deviceName;
 
+    @ApiModelProperty(value = "报警源类型")
+    private String sourceType;
+
     @ApiModelProperty(value = "报警源类型(设备类型) 中文")
     private String sourceTypeDes;
 
@@ -28,4 +31,19 @@ public class AppAlarmDataPageVo {
     @ApiModelProperty(value = "告警结束时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "告警处置时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime doTime;
+
+    @ApiModelProperty(value = "告警处理方式:0:未 处理,1:(暂无)2:误报,3:正常告警,4:报修")
+    private Integer doType;
+
+    @ApiModelProperty(value = "告警处置用户")
+    private String doByUser;
+
+    @ApiModelProperty(value = "告警处置内容")
+    private String doContent;
+
+
 }

+ 29 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml

@@ -38,14 +38,31 @@
         <if test="param.params.endAlarmEndTime != null">
             and a.end_time &lt;= #{param.params.endAlarmEndTime}
         </if>
+        <if test="param.params.dealAlarmStartTime != null">
+            and a.do_time &gt;= #{param.params.dealAlarmStartTime}
+        </if>
+        <if test="param.params.dealAlarmEndTime != null">
+            and a.do_time &lt;= #{param.params.dealAlarmEndTime}
+        </if>
+        <if test="param.isDo != null and param.isDo != ''">
+            and a.is_do = #{param.isDo}
+        </if>
+        <if test="param.isDo == 0">
+            and a.is_do is null
+        </if>
     </select>
     <select id="selectAppPageList" resultType="com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo">
         SELECT
         a.id,
         a.device_name,
+        a.source_type,
         a.source_type_des,
         a.time as start_time,
         a.end_time,
+        a.do_time,
+        a.do_type,
+        a.do_by_user,
+        a.do_content,
         b.short_name AS org_name
         FROM
         iot_alarm_data a
@@ -69,6 +86,18 @@
         <if test="param.state==1">
             and a.end_time is null
         </if>
+        <if test="param.params != null and param.params.alarmStartTime != null">
+            and a.time &gt;= #{param.params.alarmStartTime}
+        </if>
+        <if test="param.params != null and param.params.alarmEndTime != null">
+            and a.time &lt;= #{param.params.alarmEndTime}
+        </if>
+        <if test="param.isDo != null and param.isDo != ''">
+            and a.is_do = #{param.isDo}
+        </if>
+        <if test="param.isDo == 0">
+            and a.is_do is null
+        </if>
         order by a.end_time ,a.time desc
     </select>
     <select id="detail" resultType="com.xunmei.iot.vo.alarm.IotAlarmDataVo">