Przeglądaj źródła

添加告警规则的contoller 和 service

高雄 1 rok temu
rodzic
commit
3b53e49da9
26 zmienionych plików z 720 dodań i 99 usunięć
  1. 3 3
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmCode.java
  2. 14 6
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java
  3. 5 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRule.java
  4. 26 7
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRuleExpress.java
  5. 8 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRuleSource.java
  6. 9 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmSystemField.java
  7. 8 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmSystemFieldMapperDevice.java
  8. 0 65
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorTimeTemplate.java
  9. 55 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleController.java
  10. 15 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleSourceController.java
  11. 54 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarm/IotAlarmRuleDto.java
  12. 68 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarm/IotAlarmRuleExpressDto.java
  13. 9 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleExpressMapper.java
  14. 9 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleMapper.java
  15. 10 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleSourceMapper.java
  16. 9 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmSystemFieldMapper.java
  17. 7 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleExpressService.java
  18. 33 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleService.java
  19. 10 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleSourceService.java
  20. 11 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleExpressServiceImpl.java
  21. 168 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleServiceImpl.java
  22. 9 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleSourceServiceImpl.java
  23. 49 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmRuleEditVo.java
  24. 50 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmRuleExpressEditVo.java
  25. 54 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmSystemFieldVo.java
  26. 27 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotInitAlarmRuleVo.java

+ 3 - 3
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmCode.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmCode.java

@@ -25,9 +25,9 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_code")
-@ApiModel(value = "MediatorAlarmCode对象", description = "")
-public class MediatorAlarmCode implements Serializable {
+@TableName("iot_alarm_code")
+@ApiModel(value = "IotAlarmCode对象", description = "")
+public class IotAlarmCode implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 14 - 6
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmData.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java

@@ -2,9 +2,13 @@ package com.xunmei.common.core.domain.mediator.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,13 +24,13 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_data")
-@ApiModel(value="MediatorAlarmData对象", description="告警数据表")
-public class MediatorAlarmData {
+@TableName("iot_alarm_data")
+@ApiModel(value = "IotAlarmData", description = "告警数据表")
+public class IotAlarmData {
 
     private static final long serialVersionUID = 1L;
 
-      @TableId("id")
+    @TableId("id")
     private Long id;
 
     @ApiModelProperty(value = "规则id")
@@ -49,11 +53,15 @@ public class MediatorAlarmData {
     @TableField("field_code")
     private String fieldCode;
 
-    @ApiModelProperty(value = "告警时间")
+    @ApiModelProperty(value = "告警开始时间")
     @TableField("time")
     private LocalDateTime time;
 
-    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等	于)、EQUALS(等于)")
+    @ApiModelProperty(value = "告警结束时间")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)")
     @TableField("operator")
     private String operator;
 

+ 5 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmRule.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRule.java

@@ -24,9 +24,9 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_rule")
-@ApiModel(value = "MediatorAlarmRule对象", description = "告警规则表")
-public class MediatorAlarmRule implements Serializable {
+@TableName("iot_alarm_rule")
+@ApiModel(value = "IotAlarmRule对象", description = "告警规则表")
+public class IotAlarmRule implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -45,9 +45,9 @@ public class MediatorAlarmRule implements Serializable {
     @TableField("isdeleted")
     private Integer isdeleted;
 
-    @ApiModelProperty(value = "alarm:告警,inspection:一键巡检")
+    @ApiModelProperty(value = "alarm:告警,inspection:一键巡检;默认值为告警")
     @TableField("type")
-    private String type;
+    private String type = "alarm";
 
     @ApiModelProperty(value = "备注信息")
     @TableField("remark")

+ 26 - 7
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmRuleExpress.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRuleExpress.java

@@ -2,9 +2,13 @@ package com.xunmei.common.core.domain.mediator.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,13 +24,13 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_rule_express")
-@ApiModel(value="MediatorAlarmRuleExpress对象", description="告警规则表达式表")
-public class MediatorAlarmRuleExpress implements Serializable {
+@TableName("iot_alarm_rule_express")
+@ApiModel(value = "IotAlarmRuleExpress对象", description = "告警规则表达式表")
+public class IotAlarmRuleExpress implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-      @TableId("id")
+    @TableId("id")
     private Long id;
 
     @ApiModelProperty(value = "规则编码")
@@ -37,7 +41,7 @@ public class MediatorAlarmRuleExpress implements Serializable {
     @TableField("fieldCode")
     private String fieldcode;
 
-    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等	于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
+    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
     @TableField("operator")
     private String operator;
 
@@ -53,13 +57,28 @@ public class MediatorAlarmRuleExpress implements Serializable {
     @TableField("source_type")
     private Integer sourceType;
 
-    @ApiModelProperty(value = "时间模板编码")
+    /**
+     * 采用时间段方式,农信版本不使用时间模板,不撤防不加入报警列表
+     */
+/*    @ApiModelProperty(value = "时间模板编码")
     @TableField("time_template_id")
     private Integer timeTemplateId;
 
     @ApiModelProperty(value = "是否使用作息时间模板(0否1是)")
     @TableField("is_use_work_template")
-    private Integer isUseWorkTemplate;
+    private Integer isUseWorkTemplate;*/
+
+    @ApiModelProperty(value = "规则使用周期:1.周一,2.周二,3.周三,4.周四,5.周五,6.周六,7.周日")
+    @TableField("week_day")
+    private Integer weekDay;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    private String endTime;
 
     @ApiModelProperty(value = "创建人")
     @TableField("create_by")

+ 8 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmRuleSource.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmRuleSource.java

@@ -2,9 +2,13 @@ package com.xunmei.common.core.domain.mediator.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,13 +24,13 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_rule_source")
-@ApiModel(value="MediatorAlarmRuleSource对象", description="告警规则与设备源关系表")
-public class MediatorAlarmRuleSource implements Serializable {
+@TableName("iot_alarm_rule_source")
+@ApiModel(value = "IotAlarmRuleSource对象", description = "告警规则与设备源关系表")
+public class IotAlarmRuleSource implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-      @TableId("id")
+    @TableId("id")
     private Long id;
 
     @ApiModelProperty(value = "value_type=Device时有值为设备所属机构Id,否则为空")

+ 9 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmSystemField.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmSystemField.java

@@ -3,9 +3,13 @@ package com.xunmei.common.core.domain.mediator.domain;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,14 +25,14 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_system_field")
-@ApiModel(value="MediatorAlarmSystemField对象", description="系统报警属性字段表")
-public class MediatorAlarmSystemField implements Serializable {
+@TableName("iot_alarm_system_field")
+@ApiModel(value = "IotAlarmSystemField对象", description = "系统报警属性字段表")
+public class IotAlarmSystemField implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "主键")
-      @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty(value = "报警源类型(设备类型):4:烟雾传感器;5: 温湿度采集器;6:水浸; 7:门磁、窗磁;8:卷帘门门磁;9:地磁;10燃气报警器;50:报警防区")
@@ -51,7 +55,7 @@ public class MediatorAlarmSystemField implements Serializable {
     @TableField("specs")
     private String specs;
 
-    @ApiModelProperty(value = "该属性拥有哪些操作符eg:{ 'GT': '大于', 'LT': '小于' }GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等	于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
+    @ApiModelProperty(value = "该属性拥有哪些操作符eg:{ 'GT': '大于', 'LT': '小于' }GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
     @TableField("operators")
     private String operators;
 

+ 8 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorAlarmSystemFieldMapperDevice.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmSystemFieldMapperDevice.java

@@ -3,9 +3,13 @@ package com.xunmei.common.core.domain.mediator.domain;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,14 +25,14 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_alarm_system_field_mapper_device")
-@ApiModel(value="MediatorAlarmSystemFieldMapperDevice对象", description="系统报警属性字段与设备上报数据属性关系表")
-public class MediatorAlarmSystemFieldMapperDevice implements Serializable {
+@TableName("iot_alarm_system_field_mapper_device")
+@ApiModel(value = "IotAlarmSystemFieldMapperDevice对象", description = "系统报警属性字段与设备上报数据属性关系表")
+public class IotAlarmSystemFieldMapperDevice implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "主键")
-      @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty(value = "系统属性code(报警类型编码,全表唯一)")

+ 0 - 65
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/MediatorTimeTemplate.java

@@ -1,65 +0,0 @@
-package com.xunmei.common.core.domain.mediator.domain;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 时间模板表
- * </p>
- *
- * @author oygj
- * @since 2024-01-26
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("mediator_time_template")
-@ApiModel(value="MediatorTimeTemplate对象", description="时间模板表")
-public class MediatorTimeTemplate implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-      @TableId("id")
-    private Integer id;
-
-    @ApiModelProperty(value = "名称")
-    @TableField("name")
-    private String name;
-
-    @ApiModelProperty(value = "描述")
-    @TableField("remark")
-    private String remark;
-
-    @ApiModelProperty(value = "时间模板内容,json 格式字符串")
-    @TableField("templateContent")
-    private String templatecontent;
-
-    @ApiModelProperty(value = "是否启用 0是1否")
-    @TableField("enable")
-    private Integer enable;
-
-    @ApiModelProperty(value = "创建人")
-    @TableField("create_by")
-    private String createBy;
-
-    @ApiModelProperty(value = "创建人名称")
-    @TableField("create_time")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "修改人名称")
-    @TableField("update_by")
-    private String updateBy;
-
-    @ApiModelProperty(value = "修改时间")
-    @TableField("update_time")
-    private LocalDateTime updateTime;
-
-
-}

+ 55 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleController.java

@@ -0,0 +1,55 @@
+package com.xunmei.iot.controller;
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.iot.dto.alarm.IotAlarmRuleDto;
+import com.xunmei.iot.service.IotAlarmRuleService;
+import com.xunmei.iot.vo.alarm.IotInitAlarmRuleVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/iot_alarm")
+public class IotAlarmRuleController {
+
+    @Autowired
+    private IotAlarmRuleService iotAlarmRuleService;
+
+    @ApiOperation(value = "新增界面初始化数据;")
+    @GetMapping(value = "/getAddAlarmRule")
+    public AjaxResult getAddAlarmRule(){
+        try {
+            IotInitAlarmRuleVo data = iotAlarmRuleService.getAddInitAlarmRuleData();
+            return AjaxResult.success(data);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "修改界面")
+    @GetMapping(value = "/getRuleById/{ruleId}")
+    public AjaxResult getRuleById(@PathVariable Long ruleId){
+        try {
+            IotInitAlarmRuleVo alarmRuleData = iotAlarmRuleService.getAlarmRuleData(ruleId);
+            return AjaxResult.success(alarmRuleData);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "保存或者更新告警规则")
+    @PostMapping(value = "/saveOrUpdateAlarmRule")
+    public AjaxResult saveOrUpdateAlarmRule( @RequestBody IotAlarmRuleDto request) {
+        try {
+            iotAlarmRuleService.saveOrUpdateAlarmRule(request);
+            return AjaxResult.success();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+
+}

+ 15 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleSourceController.java

@@ -0,0 +1,15 @@
+package com.xunmei.iot.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 高雄
+ * 告警设备规则
+ */
+@RestController
+@RequestMapping("/iot_alarm_device")
+public class IotAlarmRuleSourceController {
+
+
+}

+ 54 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarm/IotAlarmRuleDto.java

@@ -0,0 +1,54 @@
+package com.xunmei.iot.dto.alarm;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 告警规则表
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-07-26
+ */
+@Data
+public class IotAlarmRuleDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(value = "规则名称")
+    private String name;
+
+    @ApiModelProperty(value = "是否启用")
+    private Integer enabled;
+
+    @ApiModelProperty(value = "是否删除")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "alarm:告警,inspection:一键巡检")
+    private String type;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "修改人名称")
+    private String modifiedName;
+
+    @ApiModelProperty(value = "修改人id")
+    private Long modifiedBy;
+
+    @ApiModelProperty(value = "具体告警规则")
+    private List<IotAlarmRuleExpressDto> iotAlarmRuleExpressDtoList;
+}

+ 68 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarm/IotAlarmRuleExpressDto.java

@@ -0,0 +1,68 @@
+package com.xunmei.iot.dto.alarm;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-07-26
+ */
+@Data
+public class IotAlarmRuleExpressDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(value = "规则编码")
+    private Long ruleId;
+
+    @ApiModelProperty(value = "属性code")
+    private String fieldcode;
+
+    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
+    private String operator;
+
+    @ApiModelProperty(value = "对比值")
+    private String value;
+
+    @ApiModelProperty(value = "对比值")
+    private String valueText;
+
+    @ApiModelProperty(value = "报警源类型:4:烟雾传感器;5: 温湿度采集器;6:水浸; 7:门磁、窗磁;8:卷帘门门磁;9:地磁;10燃气报警器;20:报警防区")
+    private Integer sourceType;
+
+    @ApiModelProperty(value = "规则使用周期:1.周一,2.周二,3.周三,4.周四,5.周五,6.周六,7.周日")
+    @TableField("week_day")
+    private Integer weekDay;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    private String endTime;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "修改人名称")
+    private String modifiedName;
+
+    @ApiModelProperty(value = "修改人id")
+    private Long modifiedBy;
+
+
+}

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleExpressMapper.java

@@ -0,0 +1,9 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleExpress;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface IotAlarmRuleExpressMapper extends BaseMapper<IotAlarmRuleExpress> {
+}

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmRuleMapper.java

@@ -0,0 +1,9 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRule;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface IotAlarmRuleMapper extends BaseMapper<IotAlarmRule> {
+}

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

@@ -0,0 +1,10 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleSource;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface IotAlarmRuleSourceMapper extends BaseMapper<IotAlarmRuleSource> {
+
+}

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmSystemFieldMapper.java

@@ -0,0 +1,9 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface IotAlarmSystemFieldMapper extends BaseMapper<IotAlarmSystemField> {
+}

+ 7 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleExpressService.java

@@ -0,0 +1,7 @@
+package com.xunmei.iot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleExpress;
+
+public interface IotAlarmRuleExpressService extends IService<IotAlarmRuleExpress> {
+}

+ 33 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleService.java

@@ -0,0 +1,33 @@
+package com.xunmei.iot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRule;
+import com.xunmei.iot.dto.alarm.IotAlarmRuleDto;
+import com.xunmei.iot.vo.alarm.IotInitAlarmRuleVo;
+
+/**
+ * @author 高雄
+ * 告警规则服务类
+ */
+public interface IotAlarmRuleService extends IService<IotAlarmRule> {
+
+    /**
+     * 新增时初始化数据
+     * @return
+     */
+    IotInitAlarmRuleVo getAddInitAlarmRuleData()throws Exception;
+
+    /**
+     * 修改时获取告警规则数据
+     * @return
+     * @throws Exception
+     */
+    IotInitAlarmRuleVo getAlarmRuleData(Long ruleId)throws Exception;
+
+    /**
+     *
+     * @param ruleDto
+     * @throws Exception
+     */
+    void saveOrUpdateAlarmRule(IotAlarmRuleDto ruleDto)throws Exception;
+}

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

@@ -0,0 +1,10 @@
+package com.xunmei.iot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleSource;
+
+/**
+ * @author 高雄
+ */
+public interface IotAlarmRuleSourceService  extends IService<IotAlarmRuleSource> {
+}

+ 11 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleExpressServiceImpl.java

@@ -0,0 +1,11 @@
+package com.xunmei.iot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleExpress;
+import com.xunmei.iot.mapper.IotAlarmRuleExpressMapper;
+import com.xunmei.iot.service.IotAlarmRuleExpressService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IotAlarmRuleExpressServiceImpl extends ServiceImpl<IotAlarmRuleExpressMapper, IotAlarmRuleExpress> implements IotAlarmRuleExpressService {
+}

+ 168 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleServiceImpl.java

@@ -0,0 +1,168 @@
+package com.xunmei.iot.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRule;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleExpress;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
+import com.xunmei.common.core.util.BeanHelper;
+import com.xunmei.common.core.utils.IDHelper;
+import com.xunmei.common.core.utils.KeyValue;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.iot.dto.alarm.IotAlarmRuleDto;
+import com.xunmei.iot.dto.alarm.IotAlarmRuleExpressDto;
+import com.xunmei.iot.mapper.IotAlarmRuleMapper;
+import com.xunmei.iot.mapper.IotAlarmSystemFieldMapper;
+import com.xunmei.iot.service.IotAlarmRuleExpressService;
+import com.xunmei.iot.service.IotAlarmRuleService;
+import com.xunmei.iot.vo.alarm.IotAlarmRuleEditVo;
+import com.xunmei.iot.vo.alarm.IotAlarmRuleExpressEditVo;
+import com.xunmei.iot.vo.alarm.IotAlarmSystemFieldVo;
+import com.xunmei.iot.vo.alarm.IotInitAlarmRuleVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, IotAlarmRule> implements IotAlarmRuleService {
+
+    @Autowired
+    private IotAlarmSystemFieldMapper iotAlarmSystemFieldMapper;
+
+    @Autowired
+    private IotAlarmRuleExpressService iotAlarmRuleExpressService;
+
+    @Override
+    public IotInitAlarmRuleVo getAddInitAlarmRuleData()throws Exception {
+
+        IotInitAlarmRuleVo  ruleVo = new IotInitAlarmRuleVo();
+        LambdaQueryWrapper<IotAlarmSystemField>  lqw = new LambdaQueryWrapper<IotAlarmSystemField>().eq(IotAlarmSystemField::getEnable, 1).orderByDesc(IotAlarmSystemField::getId);
+        List<IotAlarmSystemField> systemFieldList = iotAlarmSystemFieldMapper.selectList(lqw);
+        //
+        List<IotAlarmSystemFieldVo> appAlarmSystemFieldVoList = new ArrayList<>();
+        for(IotAlarmSystemField systemField:systemFieldList){
+            IotAlarmSystemFieldVo appAlarmSystemFieldVo = new IotAlarmSystemFieldVo();
+            BeanHelper.copyProperties(appAlarmSystemFieldVo, systemField);
+            List<KeyValue> specsList = new ArrayList<>();
+            List<KeyValue> operatorsList = new ArrayList<>();
+            if(systemField.getType().equals("ENUM")){
+                String specs = systemField.getSpecs();
+                JSONObject obj = JSON.parseObject(specs);
+                Iterator iterator = obj.entrySet().iterator();
+                while (iterator.hasNext()){
+                    Map.Entry entry = (Map.Entry) iterator.next();
+                    KeyValue keyValue = new KeyValue();
+                    keyValue.setKey(entry.getKey());
+                    keyValue.setValue(entry.getValue());
+                    specsList.add(keyValue);
+                }
+            }
+            String operators = systemField.getOperators();
+            JSONObject obj = JSON.parseObject(operators);
+            Iterator iterator = obj.entrySet().iterator();
+            while (iterator.hasNext()){
+                Map.Entry entry = (Map.Entry) iterator.next();
+                KeyValue keyValue = new KeyValue();
+                keyValue.setKey(entry.getKey());
+                keyValue.setValue(entry.getValue());
+                operatorsList.add(keyValue);
+            }
+            appAlarmSystemFieldVo.setSpecsList(specsList);
+            appAlarmSystemFieldVo.setOperatorsList(operatorsList);
+            appAlarmSystemFieldVoList.add(appAlarmSystemFieldVo);
+        }
+        Map<Integer,List<IotAlarmSystemFieldVo>> appAlarmSystemFieldVoMapList = appAlarmSystemFieldVoList.stream().collect(Collectors.groupingBy(r->r.getSourceType()));
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        for(Integer key:appAlarmSystemFieldVoMapList.keySet()){
+            Map<String,Object> map = new HashMap<>();
+            List<IotAlarmSystemFieldVo> systemFieldVos  = appAlarmSystemFieldVoMapList.get(key);
+            map.put("sourceTypeDes",systemFieldVos.get(0).getSourceTypeDes());
+            map.put("sourceType",systemFieldVos.get(0).getSourceType());
+            List<Map<String,Object>> systemFieldsList = new ArrayList<>();
+            for(IotAlarmSystemFieldVo vo:systemFieldVos){
+                Map<String,Object> mapa = new HashMap<>();
+                mapa.put("sysFieldCode",vo.getSysFieldCode());
+                mapa.put("name",vo.getName());
+                mapa.put("specsList",vo.getSpecsList());
+                mapa.put("operatorsList",vo.getOperatorsList());
+                mapa.put("type",vo.getType());
+                mapa.put("typeDes",vo.getTypeDes());
+                mapa.put("unit",vo.getUnit());
+                systemFieldsList.add(mapa);
+            }
+            map.put("systemFields",systemFieldsList);
+            mapList.add(map);
+        }
+        ruleVo.setSourceTypeList(mapList);
+        return ruleVo;
+    }
+
+    @Override
+    public IotInitAlarmRuleVo getAlarmRuleData(Long ruleId) throws Exception {
+        IotInitAlarmRuleVo ruleVo = getAddInitAlarmRuleData();
+        IotAlarmRule appAlarmRule = this.baseMapper.selectById(ruleId);
+
+        IotAlarmRuleEditVo ruleEditVo = new IotAlarmRuleEditVo();
+        BeanHelper.copyProperties(ruleEditVo, appAlarmRule);
+        ruleVo.setIotAlarmRule(appAlarmRule);
+
+        List<IotAlarmRuleExpress> appAlarmRuleExpressList =iotAlarmRuleExpressService.list(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId,ruleId));
+        List<IotAlarmRuleExpressEditVo> appAlarmRuleExpressEditVos = new ArrayList<>();
+        for(IotAlarmRuleExpress express:appAlarmRuleExpressList){
+            IotAlarmRuleExpressEditVo expressNew = new IotAlarmRuleExpressEditVo();
+            BeanHelper.copyProperties(expressNew, express);
+            appAlarmRuleExpressEditVos.add(expressNew);
+        }
+        Map<Integer,List<IotAlarmRuleExpressEditVo>> appAlarmSystemFieldVoMapList = appAlarmRuleExpressEditVos.stream().collect(Collectors.groupingBy(r->r.getSourceType()));
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        for(Integer key:appAlarmSystemFieldVoMapList.keySet()){
+            Map<String,Object> map = new HashMap();
+            map.put("sourceType",key);
+            map.put("AppAlarmRuleExpressList",appAlarmSystemFieldVoMapList.get(key));
+            mapList.add(map);
+        }
+        ruleVo.setIotAlarmRuleExpressEditVosBySourceType(mapList);
+        return ruleVo;
+    }
+
+    @Override
+    public void saveOrUpdateAlarmRule(IotAlarmRuleDto ruleDto) throws Exception {
+        IotAlarmRule rule = new IotAlarmRule();
+        BeanHelper.copyProperties(rule, ruleDto);
+        if(rule.getId()==null){//新增
+            rule.setId(IDHelper.id());
+            rule.setCreateTime(LocalDateTime.now());
+            rule.setCreateBy(SecurityUtils.getUsername());
+            rule.setUpdateBy(SecurityUtils.getUsername());
+            rule.setUpdateTime(LocalDateTime.now());
+        }else{//修改
+            rule.setUpdateBy(SecurityUtils.getUsername());
+            rule.setUpdateTime(LocalDateTime.now());
+        }
+        List<IotAlarmRuleExpressDto> appAlarmRuleExpressDtos = ruleDto.getIotAlarmRuleExpressDtoList();
+        List<IotAlarmRuleExpress> appAlarmRuleExpressesList = new ArrayList<>();
+        if(appAlarmRuleExpressDtos!=null&&appAlarmRuleExpressDtos.size()>0){
+            for(IotAlarmRuleExpressDto vo:appAlarmRuleExpressDtos){
+                IotAlarmRuleExpress express = new IotAlarmRuleExpress();
+                BeanHelper.copyProperties(express, vo);
+                express.setRuleId(rule.getId());
+                express.setId(IDHelper.id());
+                express.setCreateTime(LocalDateTime.now());
+                express.setUpdateBy(SecurityUtils.getUsername());
+                express.setUpdateTime(LocalDateTime.now());
+                appAlarmRuleExpressesList.add(express);
+            }
+        }
+        Set<Integer> sourceTypes = new HashSet<>();
+        appAlarmRuleExpressesList.forEach(r->sourceTypes.add(r.getSourceType()));
+        this.saveOrUpdate(rule);
+        //规则先删除原来的然重新插入
+        iotAlarmRuleExpressService.remove(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId,rule.getId()));
+        iotAlarmRuleExpressService.saveBatch(appAlarmRuleExpressesList);
+    }
+}

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

@@ -0,0 +1,9 @@
+package com.xunmei.iot.service.impl;
+
+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;
+
+public class IotAlarmRuleSourceServiceImpl extends ServiceImpl<IotAlarmRuleSourceMapper, IotAlarmRuleSource> implements IotAlarmRuleSourceService {
+}

+ 49 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmRuleEditVo.java

@@ -0,0 +1,49 @@
+package com.xunmei.iot.vo.alarm;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 告警规则表
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-07-26
+ */
+@Data
+
+@ApiModel(value="AppAlarmRule对象", description="告警规则表")
+public class IotAlarmRuleEditVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(value = "规则名称")
+    private String name;
+
+    @ApiModelProperty(value = "是否启用")
+    private Integer enabled;
+
+
+    @ApiModelProperty(value = "alarm:告警,inspection:一键巡检")
+    private String type;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+    /**
+     * 具体规则
+     */
+    @ApiModelProperty(value = "具体规则信息")
+    private List<IotAlarmRuleExpressEditVo> iotAlarmRuleExpressEditVos;
+
+
+
+
+}

+ 50 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmRuleExpressEditVo.java

@@ -0,0 +1,50 @@
+package com.xunmei.iot.vo.alarm;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-07-26
+ */
+@Data
+
+public class IotAlarmRuleExpressEditVo implements Serializable {
+
+
+    private Long id;
+
+    @ApiModelProperty(value = "规则编码")
+    private Long ruleId;
+
+    @ApiModelProperty(value = "属性code")
+    private String fieldcode;
+
+    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等	于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
+    private String operator;
+
+    @ApiModelProperty(value = "对比值")
+    private String value;
+    @ApiModelProperty(value = "对比值")
+    private String valueText;
+
+    @ApiModelProperty(value = "报警源类型:4:烟雾传感器;5: 温湿度采集器;6:水浸; 7:门磁、窗磁;8:卷帘门门磁;9:地磁;10燃气报警器;20:报警防区")
+    private Integer sourceType;
+
+    @ApiModelProperty(value = "规则使用周期:1.周一,2.周二,3.周三,4.周四,5.周五,6.周六,7.周日")
+    private Integer weekDay;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+
+}

+ 54 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmSystemFieldVo.java

@@ -0,0 +1,54 @@
+package com.xunmei.iot.vo.alarm;
+
+import com.xunmei.common.core.utils.KeyValue;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 履职,安全检查计划表
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-07-28
+ */
+@Data
+public class IotAlarmSystemFieldVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "报警源类型(设备类型):4:烟雾传感器;5: 温湿度采集器;6:水浸; 7:门磁、窗磁;8:卷帘门门磁;9:地磁;10燃气报警器;50:报警防区")
+    private Integer sourceType;
+
+    @ApiModelProperty(value = "报警源类型(设备类型) 中文")
+    private String sourceTypeDes;
+
+    @ApiModelProperty(value = "系统属性code(报警类型编码,全表唯一)")
+    private String sysFieldCode;
+
+    @ApiModelProperty(value = "系统属性名称")
+    private String name;
+
+    @ApiModelProperty(value = "属性规格信息,eg:{ 	'0': '门已关闭', 	'1': '门已打开' 	}")
+    private List<KeyValue> specsList;
+
+    @ApiModelProperty(value = "该属性拥有哪些操作符eg:{ 	'GT': '大于', 	'LT': '小于' 	}		GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等	于)、EQUALS(等于)、STARTS_WITH(以什么开始)、	ENDS_WITH(以什么结束)、CONTAIN(包含)")
+    private List<KeyValue> operatorsList;
+
+    @ApiModelProperty(value = "数据值类型,eg:'FLOAT'、'ENUM'")
+    private String type;
+
+    @ApiModelProperty(value = "数据值类型中午描述,eg:”浮点型“、'枚举'")
+    private String typeDes;
+
+    @ApiModelProperty(value = "属性单位,非必填")
+    private String unit;
+
+
+}

+ 27 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotInitAlarmRuleVo.java

@@ -0,0 +1,27 @@
+package com.xunmei.iot.vo.alarm;
+
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmRule;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@ApiModel(value = "初始化告警规则对象", description = "告警规则表")
+public class IotInitAlarmRuleVo implements Serializable {
+    /**
+     * 对应的告警规则
+     */
+    private IotAlarmRule iotAlarmRule;
+
+    /**
+     * 数据来源
+     */
+    private List<Map<String,Object>> sourceTypeList;
+    /**
+     * 告警规则
+     */
+    private List<Map<String,Object>>  iotAlarmRuleExpressEditVosBySourceType;
+}