Browse Source

告警计划模板 api

chejianzheng 1 month ago
parent
commit
b284dbe944
18 changed files with 606 additions and 19 deletions
  1. 28 4
      portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebAlarmController.java
  2. 58 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/event/AlarmPlanTplDTO.java
  3. 29 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/event/AlarmTimePlanTplDTO.java
  4. 18 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplDelReq.java
  5. 23 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplEnableReq.java
  6. 18 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplQueryReq.java
  7. 83 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplSaveReq.java
  8. 2 0
      portal-service-domain/src/main/java/com/hfln/portal/domain/exception/ErrorEnum.java
  9. 13 4
      portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/AlarmGateway.java
  10. 99 11
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/AlarmGatewayImpl.java
  11. 13 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/AlarmPlanTplMapper.java
  12. 13 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/AlarmTimePlanTplMapper.java
  13. 91 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/AlarmPlanTpl.java
  14. 47 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/AlarmTimePlanTpl.java
  15. 14 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/AlarmPlanTplService.java
  16. 9 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/AlarmTimePlanTplService.java
  17. 32 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/AlarmPlanTplServiceImpl.java
  18. 16 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/AlarmTimePlanTplServiceImpl.java

+ 28 - 4
portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebAlarmController.java

@@ -4,11 +4,9 @@ package com.hfln.portal.application.controller.web;
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.event.AlarmPlanDTO;
+import com.hfln.portal.common.dto.data.event.AlarmPlanTplDTO;
 import com.hfln.portal.common.dto.data.event.EventTypeDTO;
-import com.hfln.portal.common.request.event.AlarmPlanDelReq;
-import com.hfln.portal.common.request.event.AlarmPlanEnableReq;
-import com.hfln.portal.common.request.event.AlarmPlanQueryReq;
-import com.hfln.portal.common.request.event.AlarmPlanSaveReq;
+import com.hfln.portal.common.request.event.*;
 import com.hfln.portal.domain.gateway.AlarmGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -61,4 +59,30 @@ public class WebAlarmController {
     public ApiResult<List<EventTypeDTO>> queryEventType() {
         return ApiResult.success(alarmGateway.queryEventType());
     }
+
+    @PostMapping("/plan/queryTpl")
+    @Operation(summary = "告警计划模板查询")
+    public ApiResult<List<AlarmPlanTplDTO>> queryPlan(@Valid @RequestBody AlarmPlanTplQueryReq req) {
+        return ApiResult.success(alarmGateway.queryPlanTpl(req));
+    }
+
+    @PostMapping("/plan/saveTpl")
+    @Operation(summary = "告警计划模板保存")
+    public ApiResult<AlarmPlanTplDTO> savePlan(@Valid @RequestBody AlarmPlanTplSaveReq req) {
+        return ApiResult.success(alarmGateway.savePlanTpl(req));
+    }
+
+    @PostMapping("/plan/delTpl")
+    @Operation(summary = "告警计划模板删除")
+    public ApiResult<Void> delPlanTpl(@Valid @RequestBody AlarmPlanTplDelReq req) {
+        alarmGateway.delPlanTpl(req);
+        return ApiResult.success();
+    }
+
+    @PostMapping("/plan/enableTpl")
+    @Operation(summary = "告警计划模板是否生效")
+    public ApiResult<Void> enablePlanTpl(@Valid @RequestBody AlarmPlanTplEnableReq req) {
+        alarmGateway.enablePlanTpl(req);
+        return ApiResult.success();
+    }
 }

+ 58 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/event/AlarmPlanTplDTO.java

@@ -0,0 +1,58 @@
+package com.hfln.portal.common.dto.data.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AlarmPlanTplDTO extends BaseVO {
+
+    @Schema(description = "告警表主键ID")
+    private Integer id;
+
+    @Schema(description = "uuid")
+    private String uuid;
+
+    @Schema(description = "计划名称")
+    private String name;
+
+    @Schema(description = "设备ID")
+    private String clientId;
+
+    @Schema(description = "是否启用 1:启用 0:禁用")
+    private Integer enable;
+
+    @Schema(description = "检测区域")
+    private String region;
+
+    @Schema(description = "事件值类型")
+    private Integer eventVal;
+
+    @Schema(description = "时间计划表ID")
+    private Integer alarmTimePlanTplId;
+
+    @Schema(description = "触发阈值(秒)")
+    private Integer thresholdTime;
+
+    @Schema(description = "归并时间(秒)")
+    private Integer mergeTime;
+
+    @Schema(description = "参数")
+    private String param;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "时间计划")
+    private AlarmTimePlanTplDTO alarmTimePlanTpl;
+} 

+ 29 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/event/AlarmTimePlanTplDTO.java

@@ -0,0 +1,29 @@
+package com.hfln.portal.common.dto.data.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AlarmTimePlanTplDTO extends BaseVO {
+
+    @Schema(description = "主键ID")
+    private Integer id;
+
+    @Schema(description = "开始日期")
+    private String startDate;
+
+    @Schema(description = "结束日期")
+    private String stopDate;
+
+    @Schema(description = "每日生效时间[{\"start_time\": \"00:00\",\"end_time\": \"12:00\"},{\"start_time\": \"18:00\",\"end_time\": \"23:59\"}, ...]")
+    private String timeRange;
+
+    @Schema(description = "每月的生效日期[1,2,3,15,20,25,26,27]")
+    private String monthDays;
+
+    @Schema(description = "每周的生效日期[1,2,3,6,7]")
+    private String weekdays;
+} 

+ 18 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplDelReq.java

@@ -0,0 +1,18 @@
+package com.hfln.portal.common.request.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AlarmPlanTplDelReq extends BaseVO {
+
+    @Schema(description = "主键ID")
+    @NotNull(message = "告警计划ID不能为空!")
+    private Integer id;
+}

+ 23 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplEnableReq.java

@@ -0,0 +1,23 @@
+package com.hfln.portal.common.request.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AlarmPlanTplEnableReq extends BaseVO {
+
+    @Schema(description = "告警计划ID")
+    @NotNull(message = "告警计划ID不能为空")
+    private Integer id;
+
+    @Schema(description = "是否启用 1:启用 0:禁用")
+    @NotNull(message = "是否启用不能为空")
+    private Integer enable;
+
+}

+ 18 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplQueryReq.java

@@ -0,0 +1,18 @@
+package com.hfln.portal.common.request.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AlarmPlanTplQueryReq extends BaseVO {
+
+    @Schema(description = "是否启用 1:启用 0:禁用")
+    private Integer enable;
+
+    @Schema(description = "事件值类型")
+    private Integer eventVal;
+}

+ 83 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/event/AlarmPlanTplSaveReq.java

@@ -0,0 +1,83 @@
+package com.hfln.portal.common.request.event;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AlarmPlanTplSaveReq extends BaseVO {
+
+    @Schema(description = "告警表主键ID")
+    private Long id;
+
+    @Schema(description = "uuid")
+    private String uuid;
+
+    @Schema(description = "计划名称")
+    @NotBlank(message = "计划名称不能为空!")
+    private String name;
+
+    @Schema(description = "设备ID")
+    @NotBlank(message = "设备ID不能为空!")
+    private String clientId;
+
+    @Schema(description = "是否启用 1:启用 0:禁用")
+    private Integer enable;
+
+    @Schema(description = "检测区域")
+    private String region;
+
+    @Schema(description = "事件值类型")
+    private Integer eventVal;
+
+    @Schema(description = "时间计划表ID")
+    private Integer alarmTimePlanTplId;
+
+    @Schema(description = "触发阈值(秒)")
+    private Integer thresholdTime;
+
+    @Schema(description = "归并时间(秒)")
+    private Integer mergeTime;
+
+    @Schema(description = "参数")
+    private String param;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "时间计划")
+    @NotNull(message = "时间计划不能为空!")
+    private AlarmTimePlanTplParam alarmTimePlanTpl;
+
+    @Data
+    @Valid
+    public static class AlarmTimePlanTplParam extends BaseVO {
+
+        @Schema(description = "主键ID")
+        private Long id;
+
+        @Schema(description = "开始日期")
+        @NotBlank(message = "开始日期不能为空!")
+        private String startDate;
+
+        @Schema(description = "结束日期")
+        @NotBlank(message = "结束日期不能为空!")
+        private String stopDate;
+
+        @Schema(description = "每日生效时间[{\"start_time\": \"00:00\",\"end_time\": \"12:00\"},{\"start_time\": \"18:00\",\"end_time\": \"23:59\"}, ...]")
+        private String timeRange;
+
+        @Schema(description = "每月的生效日期[1,2,3,15,20,25,26,27]")
+        private String monthDays;
+
+        @Schema(description = "每周的生效日期[1,2,3,6,7]")
+        private String weekdays;
+    }
+}

+ 2 - 0
portal-service-domain/src/main/java/com/hfln/portal/domain/exception/ErrorEnum.java

@@ -138,6 +138,8 @@ public enum ErrorEnum implements ErrorEnumInterface{
      */
     ALARM_PLAN_NOT_EXIST("15001", "告警计划不存在!"),
     ALARM_TIME_NOT_EXIST("15002", "时间计划不存在!"),
+    ALARM_PLAN_TPL_NOT_EXIST("15011", "告警计划模板不存在!"),
+    ALARM_TIME_TPL_NOT_EXIST("15012", "时间计划模板不存在!"),
     ;
 
     private final String errorCode;

+ 13 - 4
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/AlarmGateway.java

@@ -1,11 +1,9 @@
 package com.hfln.portal.domain.gateway;
 
 import com.hfln.portal.common.dto.data.event.AlarmPlanDTO;
+import com.hfln.portal.common.dto.data.event.AlarmPlanTplDTO;
 import com.hfln.portal.common.dto.data.event.EventTypeDTO;
-import com.hfln.portal.common.request.event.AlarmPlanDelReq;
-import com.hfln.portal.common.request.event.AlarmPlanEnableReq;
-import com.hfln.portal.common.request.event.AlarmPlanQueryReq;
-import com.hfln.portal.common.request.event.AlarmPlanSaveReq;
+import com.hfln.portal.common.request.event.*;
 
 import java.util.List;
 
@@ -25,4 +23,15 @@ public interface AlarmGateway {
 
     List<EventTypeDTO> queryEventType();
 
+    /**
+     *  告警模板计划相关
+     */
+    List<AlarmPlanTplDTO> queryPlanTpl(AlarmPlanTplQueryReq req);
+
+    AlarmPlanTplDTO savePlanTpl(AlarmPlanTplSaveReq req);
+
+    void delPlanTpl(AlarmPlanTplDelReq req);
+
+    void enablePlanTpl(AlarmPlanTplEnableReq req);
+
 }

+ 99 - 11
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/AlarmGatewayImpl.java

@@ -1,24 +1,18 @@
 package com.hfln.portal.infrastructure.gateway.impl;
 
 import cn.hfln.framework.extension.BizException;
-import com.hfln.portal.common.dto.data.event.AlarmPlanDTO;
-import com.hfln.portal.common.dto.data.event.AlarmTimePlanDTO;
-import com.hfln.portal.common.dto.data.event.EventTypeDTO;
-import com.hfln.portal.common.request.event.AlarmPlanDelReq;
-import com.hfln.portal.common.request.event.AlarmPlanEnableReq;
-import com.hfln.portal.common.request.event.AlarmPlanQueryReq;
-import com.hfln.portal.common.request.event.AlarmPlanSaveReq;
+import com.hfln.portal.common.dto.data.event.*;
+import com.hfln.portal.common.request.event.*;
 import com.hfln.portal.domain.customer.OprLogType;
 import com.hfln.portal.domain.customer.util.CopyUtils;
 import com.hfln.portal.domain.exception.ErrorEnum;
 import com.hfln.portal.domain.gateway.AlarmGateway;
 import com.hfln.portal.infrastructure.mqtt.MqttSend;
 import com.hfln.portal.infrastructure.po.AlarmPlan;
+import com.hfln.portal.infrastructure.po.AlarmPlanTpl;
 import com.hfln.portal.infrastructure.po.AlarmTimePlan;
-import com.hfln.portal.infrastructure.service.AlarmPlanService;
-import com.hfln.portal.infrastructure.service.AlarmTimePlanService;
-import com.hfln.portal.infrastructure.service.EventTypeService;
-import com.hfln.portal.infrastructure.service.TblOprLogService;
+import com.hfln.portal.infrastructure.po.AlarmTimePlanTpl;
+import com.hfln.portal.infrastructure.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -41,6 +36,12 @@ public class AlarmGatewayImpl implements AlarmGateway {
     private AlarmTimePlanService alarmTimePlanService;
 
     @Autowired
+    private AlarmPlanTplService alarmPlanTplService;
+
+    @Autowired
+    private AlarmTimePlanTplService alarmTimePlanTplService;
+
+    @Autowired
     private TblOprLogService logService;
 
     @Autowired
@@ -81,6 +82,8 @@ public class AlarmGatewayImpl implements AlarmGateway {
             }
         }
         BeanUtils.copyProperties(req, alarmPlan);
+        alarmPlan.setUpdateTime(LocalDateTime.now());
+        alarmPlan.setCreateTime(LocalDateTime.now());
         alarmPlanService.saveOrUpdate(alarmPlan);
 
         AlarmTimePlan alarmTimePlan = new AlarmTimePlan();
@@ -131,6 +134,7 @@ public class AlarmGatewayImpl implements AlarmGateway {
             throw new BizException(ErrorEnum.ALARM_PLAN_NOT_EXIST.getErrorCode(), ErrorEnum.ALARM_PLAN_NOT_EXIST.getErrorMessage());
         }
         alarmPlan.setEnable(req.getEnable());
+        alarmPlan.setUpdateTime(LocalDateTime.now());
         alarmPlanService.updateById(alarmPlan);
 
         mqttSend.sendAlarmPlanToLas(alarmPlan.getUuid(), "update");
@@ -142,4 +146,88 @@ public class AlarmGatewayImpl implements AlarmGateway {
 
         return CopyUtils.copyList(eventTypeService.list(), EventTypeDTO.class);
     }
+
+    @Override
+    public List<AlarmPlanTplDTO> queryPlanTpl(AlarmPlanTplQueryReq req) {
+
+        List<AlarmPlanTpl> list = alarmPlanTplService.queryPlan(req);
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+
+        List<AlarmPlanTplDTO> resList = new ArrayList<>();
+        for (AlarmPlanTpl alarmPlanTpl : list) {
+            AlarmPlanTplDTO copy = CopyUtils.copy(alarmPlanTpl, AlarmPlanTplDTO.class);
+            if (alarmPlanTpl.getAlarmTimePlanTplId() != null) {
+                AlarmTimePlanTpl byId = alarmTimePlanTplService.getById(copy.getAlarmTimePlanTplId());
+                copy.setAlarmTimePlanTpl(CopyUtils.copy(byId, AlarmTimePlanTplDTO.class));
+                resList.add(copy);
+            }
+        }
+        return resList;
+    }
+
+    @Override
+    @Transactional
+    public AlarmPlanTplDTO savePlanTpl(AlarmPlanTplSaveReq req) {
+
+        AlarmPlanTpl alarmPlanTpl = new AlarmPlanTpl();
+        if (req.getId() != null) {
+            alarmPlanTpl = alarmPlanTplService.getById(req.getId());
+            if (alarmPlanTpl == null) {
+                throw new BizException(ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorCode(), ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorMessage());
+            }
+        }
+        BeanUtils.copyProperties(req, alarmPlanTpl);
+        alarmPlanTpl.setCreateTime(LocalDateTime.now());
+        alarmPlanTpl.setUpdateTime(LocalDateTime.now());
+        alarmPlanTplService.saveOrUpdate(alarmPlanTpl);
+
+        AlarmTimePlanTpl alarmTimePlanTpl = new AlarmTimePlanTpl();
+        if (req.getAlarmTimePlanTplId() != null) {
+            alarmTimePlanTpl = alarmTimePlanTplService.getById(req.getAlarmTimePlanTplId());
+            if (alarmTimePlanTpl == null) {
+                throw new BizException(ErrorEnum.ALARM_TIME_NOT_EXIST.getErrorCode(), ErrorEnum.ALARM_TIME_NOT_EXIST.getErrorMessage());
+            }
+        }
+        BeanUtils.copyProperties(req.getAlarmTimePlanTpl(), alarmTimePlanTpl);
+        alarmTimePlanTplService.saveOrUpdate(alarmTimePlanTpl);
+
+        alarmPlanTpl.setAlarmTimePlanTplId(alarmTimePlanTpl.getId());
+        alarmPlanTplService.updateById(alarmPlanTpl);
+
+        AlarmPlanTplDTO copy = CopyUtils.copy(alarmPlanTpl, AlarmPlanTplDTO.class);
+        copy.setAlarmTimePlanTpl(CopyUtils.copy(alarmTimePlanTpl, AlarmTimePlanTplDTO.class));
+        return copy;
+    }
+
+    @Override
+    @Transactional
+    public void delPlanTpl(AlarmPlanTplDelReq req) {
+
+        AlarmPlanTpl alarmPlanTpl = alarmPlanTplService.getById(req.getId());
+        if (alarmPlanTpl == null) {
+            throw new BizException(ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorCode(), ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorMessage());
+        }
+
+        AlarmTimePlanTpl alarmTimePlanTpl = alarmTimePlanTplService.getById(alarmPlanTpl.getAlarmTimePlanTplId());
+
+        alarmPlanTplService.delById(req.getId());
+        alarmTimePlanTplService.delById(alarmTimePlanTpl.getId());
+    }
+
+    @Override
+    @Transactional
+    public void enablePlanTpl(AlarmPlanTplEnableReq req) {
+
+        AlarmPlanTpl alarmPlanTpl = alarmPlanTplService.getById(req.getId());
+        if (alarmPlanTpl == null) {
+            throw new BizException(ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorCode(), ErrorEnum.ALARM_PLAN_TPL_NOT_EXIST.getErrorMessage());
+        }
+        alarmPlanTpl.setEnable(req.getEnable());
+        alarmPlanTpl.setUpdateTime(LocalDateTime.now());
+        alarmPlanTplService.updateById(alarmPlanTpl);
+
+        log.info("告警计划alarmPlanId:{}, set enable = {}", req.getId(), req.getEnable());
+    }
 }

+ 13 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/AlarmPlanTplMapper.java

@@ -0,0 +1,13 @@
+package com.hfln.portal.infrastructure.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hfln.portal.infrastructure.po.AlarmPlanTpl;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AlarmPlanTplMapper extends BaseMapper<AlarmPlanTpl> {
+
+    @Delete("DELETE FROM alarm_plan_tpl WHERE id = #{id}")
+    int delById(Integer id);
+}

+ 13 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/AlarmTimePlanTplMapper.java

@@ -0,0 +1,13 @@
+package com.hfln.portal.infrastructure.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hfln.portal.infrastructure.po.AlarmTimePlanTpl;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AlarmTimePlanTplMapper extends BaseMapper<AlarmTimePlanTpl> {
+
+    @Delete("DELETE FROM alarm_time_plan_tpl WHERE id = #{id}")
+    int delById(Integer id);
+}

+ 91 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/AlarmPlanTpl.java

@@ -0,0 +1,91 @@
+package com.hfln.portal.infrastructure.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hfln.portal.common.vo.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 告警计划表
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("alarm_plan_tpl")
+public class AlarmPlanTpl extends BaseVO {
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * uuid
+     */
+    private String uuid;
+
+    /**
+     * 计划名称
+     */
+    private String name;
+
+    /**
+     * 设备ID
+     */
+    @TableField(value = "dev_id")
+    private String clientId;
+
+    /**
+     * 是否启用 1:启用 0:禁用
+     */
+    private Integer enable;
+
+    /**
+     * 检测区域
+     */
+    private String region;
+
+    /**
+     * 事件值类型
+     */
+    private Integer eventVal;
+
+    /**
+     * 时间计划表ID
+     */
+    private Integer alarmTimePlanTplId;
+
+    /**
+     * 触发阈值(秒)
+     */
+    private Integer thresholdTime;
+
+    /**
+     * 归并时间(秒)
+     */
+    private Integer mergeTime;
+
+    /**
+     * 参数
+     */
+    private String param;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+} 

+ 47 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/AlarmTimePlanTpl.java

@@ -0,0 +1,47 @@
+package com.hfln.portal.infrastructure.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hfln.portal.common.vo.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 时间计划表
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("alarm_time_plan_tpl")
+public class AlarmTimePlanTpl extends BaseVO {
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 开始日期
+     */
+    private String startDate;
+
+    /**
+     * 结束日期
+     */
+    private String stopDate;
+
+    /**
+     * 每日生效时间[{"start_time": "00:00","end_time": "12:00"},{"start_time": "18:00","end_time": "23:59"}, ...]
+     */
+    private String timeRange;
+
+    /**
+     * 每月的生效日期[1,2,3,15,20,25,26,27]
+     */
+    private String monthDays;
+
+    /**
+     * 每周的生效日期[1,2,3,6,7]
+     */
+    private String weekdays;
+} 

+ 14 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/AlarmPlanTplService.java

@@ -0,0 +1,14 @@
+package com.hfln.portal.infrastructure.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.common.request.event.AlarmPlanTplQueryReq;
+import com.hfln.portal.infrastructure.po.AlarmPlanTpl;
+
+import java.util.List;
+
+public interface AlarmPlanTplService extends IService<AlarmPlanTpl> {
+
+    List<AlarmPlanTpl> queryPlan(AlarmPlanTplQueryReq req);
+
+    void delById(Integer alarmPlanId);
+}

+ 9 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/AlarmTimePlanTplService.java

@@ -0,0 +1,9 @@
+package com.hfln.portal.infrastructure.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.infrastructure.po.AlarmTimePlanTpl;
+
+public interface AlarmTimePlanTplService extends IService<AlarmTimePlanTpl> {
+
+    void delById(Integer id);
+}

+ 32 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/AlarmPlanTplServiceImpl.java

@@ -0,0 +1,32 @@
+package com.hfln.portal.infrastructure.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.common.request.event.AlarmPlanTplQueryReq;
+import com.hfln.portal.infrastructure.mapper.AlarmPlanTplMapper;
+import com.hfln.portal.infrastructure.po.AlarmPlanTpl;
+import com.hfln.portal.infrastructure.service.AlarmPlanTplService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class AlarmPlanTplServiceImpl extends ServiceImpl<AlarmPlanTplMapper, AlarmPlanTpl> implements AlarmPlanTplService {
+
+    @Override
+    public List<AlarmPlanTpl> queryPlan(AlarmPlanTplQueryReq req) {
+        LambdaQueryWrapper<AlarmPlanTpl> wrapper = new LambdaQueryWrapper<>();
+        if (req.getEnable() != null) {
+            wrapper.eq(AlarmPlanTpl::getEnable, req.getEnable());
+        }
+        if (req.getEventVal() != null) {
+            wrapper.eq(AlarmPlanTpl::getEventVal, req.getEventVal());
+        }
+        return this.baseMapper.selectList(wrapper);
+    }
+
+    @Override
+    public void delById(Integer id) {
+        this.baseMapper.delById(id);
+    }
+}

+ 16 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/AlarmTimePlanTplServiceImpl.java

@@ -0,0 +1,16 @@
+package com.hfln.portal.infrastructure.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.infrastructure.mapper.AlarmTimePlanTplMapper;
+import com.hfln.portal.infrastructure.po.AlarmTimePlanTpl;
+import com.hfln.portal.infrastructure.service.AlarmTimePlanTplService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AlarmTimePlanTplServiceImpl extends ServiceImpl<AlarmTimePlanTplMapper, AlarmTimePlanTpl> implements AlarmTimePlanTplService {
+
+    @Override
+    public void delById(Integer id) {
+        this.baseMapper.delById(id);
+    }
+}