Эх сурвалжийг харах

动环告警,设备关联添加中

高雄 1 жил өмнө
parent
commit
e3e8584c0a

+ 12 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleSourceController.java

@@ -1,8 +1,15 @@
 package com.xunmei.iot.controller;
 
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.iot.dto.alarm.IotAlarmRuleSourceDetailDto;
+import io.swagger.annotations.ApiOperation;
+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.validation.Valid;
+
 /**
  * @author 高雄
  * 告警设备规则
@@ -11,6 +18,10 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/iot_alarm_device")
 public class IotAlarmRuleSourceController {
 
-
+    @ApiOperation(value = "查看动环告警规则详情")
+    @PostMapping(value = "detail")
+    public AjaxResult detail(@RequestBody @Valid IotAlarmRuleSourceDetailDto detailDto){
+        return null;
+    }
 
 }

+ 16 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarm/IotAlarmRuleSourceDetailDto.java

@@ -0,0 +1,16 @@
+package com.xunmei.iot.dto.alarm;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author jingyuanchao
+ * @date 2022/7/26 23:17
+ */
+@Data
+public class IotAlarmRuleSourceDetailDto {
+
+    @NotNull(message = "请选择具体的规则进行查看!")
+    private Long ruleId;
+}

+ 10 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleSourceMapper.java

@@ -2,9 +2,18 @@ package com.xunmei.iot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleSource;
+import com.xunmei.iot.vo.alarm.IotAlarmRuleSourceDetailVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface IotAlarmRuleSourceMapper extends BaseMapper<IotAlarmRuleSource> {
-
+    /**
+     * 根据规则id获取详情数据
+     * @param ruleId
+     * @return
+     */
+    List<IotAlarmRuleSourceDetailVo> selectDetailData(@Param("ruleId") Long ruleId);
 }

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleSourceService.java

@@ -2,9 +2,18 @@ package com.xunmei.iot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleSource;
+import com.xunmei.iot.vo.alarm.IotAlarmRuleSourceDetailVo;
 
 /**
  * @author 高雄
  */
 public interface IotAlarmRuleSourceService  extends IService<IotAlarmRuleSource> {
+
+    /**
+     * 告警规则和设备绑定详情
+     * @param detailVo
+     * @return
+     * @throws Exception
+     */
+    IotAlarmRuleSourceDetailVo detail(IotAlarmRuleSourceDetailVo detailVo)throws Exception;
 }

+ 31 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleSourceServiceImpl.java

@@ -1,11 +1,42 @@
 package com.xunmei.iot.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleSource;
 import com.xunmei.iot.mapper.IotAlarmRuleSourceMapper;
 import com.xunmei.iot.service.IotAlarmRuleSourceService;
+import com.xunmei.iot.vo.alarm.IotAlarmRuleSourceDetailVo;
+import com.xunmei.iot.vo.alarm.ProductTypeDataVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 @Service
 public class IotAlarmRuleSourceServiceImpl extends ServiceImpl<IotAlarmRuleSourceMapper, IotAlarmRuleSource> implements IotAlarmRuleSourceService {
+
+    @Autowired
+    private IotAlarmRuleSourceMapper iotAlarmRuleSourceMapper;
+
+    @Override
+    public IotAlarmRuleSourceDetailVo detail(IotAlarmRuleSourceDetailVo detailVo) throws Exception {
+        //根据规则id获取,规则数据
+        List<IotAlarmRuleSourceDetailVo> detailVoList = iotAlarmRuleSourceMapper.selectDetailData(detailVo.getRuleId());
+        if(ObjectUtil.isEmpty(detailVoList)){
+            return new IotAlarmRuleSourceDetailVo();
+        }
+
+        IotAlarmRuleSourceDetailVo iotAlarmRuleSourceDetailVo = detailVoList.get(0);
+
+        List<ProductTypeDataVo> list = new ArrayList<>();
+        Map<Integer, List<IotAlarmRuleSourceDetailVo>> listMap =
+                detailVoList.stream().sorted(Comparator.comparing(IotAlarmRuleSourceDetailVo::getSourceType)).collect(Collectors.groupingBy(IotAlarmRuleSourceDetailVo::getSourceType));
+
+
+        return null;
+    }
 }

+ 38 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmRuleSourceDetailVo.java

@@ -0,0 +1,38 @@
+package com.xunmei.iot.vo.alarm;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author jingyuanchao
+ * @date 2022/7/26 23:24
+ */
+@Data
+public class IotAlarmRuleSourceDetailVo {
+
+    @ApiModelProperty(value = "规则id")
+    private Long ruleId;
+
+    @ApiModelProperty(value = "规则名称")
+    private String ruleName;
+
+    @ApiModelProperty(value = "是否启用", notes = "0:启用 1:禁用")
+    private Integer enable;
+
+    @ApiModelProperty(value = "规则类型", notes = "alarm:告警,inspection:一键巡检")
+    private String ruleType;
+
+    @ApiModelProperty(value = "备注信息")
+    private String ruleRemark;
+
+    @ApiModelProperty(value = "产品类型关联设备信息")
+    private List<ProductTypeDataVo> typeDataList;
+
+    @JsonIgnore
+    @ApiModelProperty(value = "产品类型",notes = "地磁,温湿度...")
+    private Integer sourceType;
+
+}

+ 31 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/ProductDeviceTempVo.java

@@ -0,0 +1,31 @@
+package com.xunmei.iot.vo.alarm;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+/**
+ * @author jingyuanchao
+ * @date 2022/7/27 1:42
+ */
+@Data
+public class ProductDeviceTempVo {
+
+    /**
+     * 设备id
+     */
+    private String deviceId;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 机构id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+    /**
+     * 机构名称
+     */
+    private String orgName;
+}

+ 33 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/ProductTypeDataVo.java

@@ -0,0 +1,33 @@
+package com.xunmei.iot.vo.alarm;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author jingyuanchao
+ * @date 2022/7/26 23:44
+ */
+@Data
+public class ProductTypeDataVo {
+
+    /**
+     * 告警类型
+     */
+    private Integer type;
+    /**
+     * 告警类型名称
+     */
+    private String typeText;
+
+    @ApiModelProperty(value = "关联类型",notes = "AllDevice:所有设备,Device:单个设备")
+    private String  valueType;
+
+    @ApiModelProperty(value = "是否全部设备启用")
+    private Boolean isAllDeviceEnable;
+
+    @ApiModelProperty(value = "规则关联的设备信息")
+    private List<ProductDeviceTempVo> deviceTempList;
+
+}

+ 16 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmRuleSourceMapper.xml

@@ -0,0 +1,16 @@
+<?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.IotAlarmRuleSourceMapper">
+
+    <select id="selectDetailData" resultType="com.xunmei.iot.vo.alarm.IotAlarmRuleSourceDetailVo">
+        select r.id          as ruleId,
+               r.enabled     as enable,
+               r.name        as ruleName,
+               r.remark      as ruleRemark,
+               r.type        as ruleType,
+               e.source_type as sourceType
+        from t_app_alarm_rule r
+                 inner join t_app_alarm_rule_express e on r.id = e.rule_id
+        where r.id = #{ruleId}
+    </select>
+</mapper>