高雄 1 год назад
Родитель
Сommit
ab55b0ea9a

+ 9 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.web.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,7 +28,7 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = false)
 @TableName("iot_alarm_data")
 @ApiModel(value = "IotAlarmData", description = "告警数据表")
-public class IotAlarmData {
+public class IotAlarmData extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
@@ -41,6 +43,10 @@ public class IotAlarmData {
     @TableField("device_id")
     private Long deviceId;
 
+    @ApiModelProperty(value = "设备id")
+    @TableField("device_name")
+    private String deviceName;
+
     @ApiModelProperty(value = "机构id")
     @TableField("org_id")
     private Long orgId;
@@ -59,10 +65,12 @@ public class IotAlarmData {
 
     @ApiModelProperty(value = "告警开始时间")
     @TableField("time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime time;
 
     @ApiModelProperty(value = "告警结束时间")
     @TableField("end_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
 
     @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)")

+ 26 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataController.java

@@ -0,0 +1,26 @@
+package com.xunmei.iot.controller;
+
+
+import com.xunmei.common.core.web.page.TableDataInfo;
+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;
+
+@RestController
+@RequestMapping("/iot_alarm_data")
+public class IotAlarmDataController {
+
+    @Autowired
+    private IotAlarmDataService iotAlarmDataService;
+
+    @ApiOperation(value = "查询动环告警列表")
+    @GetMapping("/list")
+    public TableDataInfo<IotAlarmDataVo> list(IotAlarmDataVo requestDto) {
+
+        return iotAlarmDataService.selectListPage(requestDto);
+    }
+}

+ 15 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java

@@ -0,0 +1,15 @@
+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.vo.alarm.IotAlarmDataVo;
+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);
+
+}

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

@@ -0,0 +1,16 @@
+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.vo.alarm.IotAlarmDataVo;
+
+public interface IotAlarmDataService extends IService<IotAlarmData> {
+
+    /**
+     * 告警列表分页查询
+     * @param requestDto
+     * @return
+     */
+    TableDataInfo<IotAlarmDataVo> selectListPage(IotAlarmDataVo requestDto);
+}

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

@@ -0,0 +1,63 @@
+package com.xunmei.iot.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.web.page.TableDataInfo;
+import com.xunmei.iot.mapper.IotAlarmDataMapper;
+import com.xunmei.iot.service.IotAlarmDataService;
+import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Service
+public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, IotAlarmData> implements IotAlarmDataService {
+
+    @Resource
+    private RemoteOrgService orgService;
+    @Override
+    public TableDataInfo<IotAlarmDataVo> selectListPage(IotAlarmDataVo request) {
+        //未删除
+        Page<IotAlarmDataVo> page;
+        //分页
+        if (request.getPageNum() != null && request.getPageSize() != null) {
+            page = new Page<>(request.getPageNum(), request.getPageSize());
+        } else {
+            page = new Page<>();
+        }
+
+        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);
+        }
+
+        if(ObjectUtil.isNotEmpty(request.getAlarmEndTime()) && request.getAlarmEndTime().size() > 0){
+            LocalDateTime endAlarmStartTime =LocalDateTime.parse(request.getAlarmEndTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime endAlarmEndTime =LocalDateTime.parse(request.getAlarmEndTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            request.getParams().put("endAlarmStartTime",endAlarmStartTime);
+            request.getParams().put("endAlarmEndTime",endAlarmEndTime);
+        }
+
+        if(request.getCheckSub() && ObjectUtil.isNotEmpty(request.getOrgId())){
+            SysOrg org = orgService.selectSysOrgById(request.getOrgId(), SecurityConstants.INNER);
+            request.setOrgPath(org.getPath());
+            request.setOrgId(null);
+        }
+
+
+        Page<IotAlarmDataVo> iotAlarmDataVoPage = baseMapper.selectPageList(page, request);
+
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(iotAlarmDataVoPage);
+    }
+}

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

@@ -0,0 +1,32 @@
+package com.xunmei.iot.vo.alarm;
+
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class IotAlarmDataVo extends IotAlarmData {
+
+    @ApiModelProperty(value = "地区")
+    private String city;
+    @ApiModelProperty(value = "行社")
+    private String bank;
+    @ApiModelProperty(value = "机构名称")
+    private String orgName;
+
+    @ApiModelProperty(value = "设备类型")
+    private String deviceType;
+
+    @ApiModelProperty(value = "告警时间")
+    private List<String> alarmTime;
+
+    @ApiModelProperty(value = "告警恢复时间")
+    private List<String> alarmEndTime;
+
+    @ApiModelProperty(value = "机构path")
+    private String orgPath;
+
+}

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

@@ -0,0 +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.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
+        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.deviceType != null and param.deviceType != ''">
+            and a.source_type = #{param.deviceType}
+        </if>
+        <if test="param.params.alarmStartTime != null">
+            and a.time &gt;= #{param.params.alarmStartTime}
+        </if>
+        <if test="param.params.alarmEndTime != null">
+            and a.time &lt;= #{param.params.alarmEndTime}
+        </if>
+        <if test="param.params.endAlarmStartTime != null">
+            and a.end_time &gt;= #{param.params.endAlarmStartTime}
+        </if>
+        <if test="param.params.endAlarmEndTime != null">
+            and a.end_time &lt;= #{param.params.endAlarmEndTime}
+        </if>
+    </select>
+</mapper>

+ 2 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotSensorMapper.java

@@ -3,6 +3,7 @@ package com.xunmei.mediator.api.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,6 +13,7 @@ import com.xunmei.common.core.domain.iot.domain.IotSensor;
  * @author oygj
  * @since 2024-02-21
  */
+@Mapper
 public interface IotSensorMapper extends BaseMapper<IotSensor> {
 
 }

+ 10 - 4
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDataServiceImpl.java

@@ -16,10 +16,7 @@ import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.mediator.api.enums.AlarmRuleExpressOperateEnum;
-import com.xunmei.mediator.api.mapper.IotAlarmDataMapper;
-import com.xunmei.mediator.api.mapper.IotAlarmRuleExpressMapper;
-import com.xunmei.mediator.api.mapper.IotAlarmRuleSourceMapper;
-import com.xunmei.mediator.api.mapper.IotAlarmSystemFieldMapper;
+import com.xunmei.mediator.api.mapper.*;
 import com.xunmei.mediator.api.service.IotAlarmDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -50,6 +47,9 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
     @Autowired
     private IotAlarmSystemFieldMapper iotAlarmSystemFieldMapper;
 
+    @Autowired
+    private IotSensorMapper iotSensorMapper;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void dealSensorData(IotSensor iotSensor) throws Exception {
@@ -111,12 +111,17 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         if(isAlarm && alarms.size() == 0){
             //报警中,且表中没有告警数据,则插入数据
             this.saveBatch(list);
+            iotSensor.setState(1);
+            iotSensorMapper.updateById(iotSensor);
         }
         if(isExpress && !isAlarm && alarms.size() != 0){
             //报警恢复
             IotAlarmData iotAlarmData = alarms.get(0);
             iotAlarmData.setEndTime(LocalDateTime.now());
             this.updateById(iotAlarmData);
+
+            iotSensor.setState(0);
+            iotSensorMapper.updateById(iotSensor);
         }
 
     }
@@ -189,6 +194,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         IotAlarmData iotAlarmData = new IotAlarmData();
         iotAlarmData.setAlarmValue(sensorValue + field.getUnit());
         iotAlarmData.setTime(LocalDateTime.now());
+        iotAlarmData.setDeviceName(iotSensor.getDeviceName());
         iotAlarmData.setRuleId(express.getRuleId());
         iotAlarmData.setDeviceId(iotSensor.getDeviceId());
         iotAlarmData.setSourceType(field.getSourceType());