Browse Source

增加根据设备和报警类型编码查询报警条件的接口

lixing 3 years ago
parent
commit
19b02b5593

+ 10 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/controller/AlarmConditionController.java

@@ -98,6 +98,16 @@ public class AlarmConditionController {
         return ResultHelper.single(alarmConditionList);
     }
 
+    @ApiOperation(value = "根据设备和报警类型编码获取绑定的报警条件")
+    @ApiIgnore
+    @PostMapping("/query_by_obj_and_itemcode")
+    public CommonResult<PageList<AlarmCondition>> queryByObjAndItemCode(
+            @Valid @RequestBody QueryAlarmConditionByObjDTO queryAlarmConditionByObjDTO) {
+        List<AlarmCondition> alarmConditionList = alarmConditionService.queryByObjAndItemCode(
+                queryAlarmConditionByObjDTO.getObjId(), queryAlarmConditionByObjDTO.getItemCode());
+        return ResultHelper.multi(alarmConditionList);
+    }
+
     @ApiOperation(value = "报警条件合法性校验")
     @PostMapping("/validate")
     public CommonResult<Boolean> validate(

+ 1 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/AlarmCondition.java

@@ -70,6 +70,7 @@ public class AlarmCondition extends AuditableEntity<AlarmCondition> implements S
     private JSONObject effectTimeDetail;
 
 
+    public static String PROP_ID = "id";
     public static String PROP_INFO_CODES = "info_codes";
     public static String PROP_TRIGGER_UPHOLD = "trigger_uphold";
     public static String PROP_ALARM_LEVEL = "alarm_level";

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/dto/QueryAlarmConditionDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -26,5 +27,7 @@ public class QueryAlarmConditionDTO {
     
     @ApiModelProperty(value = "报警等级", required = true)
     private String alarmLevel;
-    
+
+    @ApiModelProperty(value = "报警条件id数组")
+    private List<String> ids;
 }

+ 42 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/IAlarmConditionService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.*;
+import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
 import com.persagy.apm.common.response.CommonResult;
 
 import java.util.List;
@@ -93,4 +94,45 @@ public interface IAlarmConditionService  {
      * @version V1.0 2021/10/22 9:59 上午
      */
     List<AlarmCondition> queryAllAlarmConditions();
+
+    /**
+     * 根据设备查询报警条件
+     *
+     * @param objId 设备id
+     * @return 报警条件列表
+     * @author lixing
+     * @version V1.0 2021/11/3 8:40 下午
+     */
+    List<AlarmCondition> queryByObj(String objId);
+
+    /**
+     * 根据设备和报警类型编码查询报警条件
+     *
+     * @param objId 设备id
+     * @param itemCode 报警类型编码
+     * @return 报警条件列表
+     * @author lixing
+     * @version V1.0 2021/11/3 8:40 下午
+     */
+    List<AlarmCondition> queryByObjAndItemCode(String objId, String itemCode);
+
+    /**
+     * 根据报警规则查询关联的报警条件
+     *
+     * @param projectAlarmRules 报警规则列表
+     * @return 关联的报警条件列表
+     * @author lixing
+     * @version V1.0 2021/11/3 9:03 下午
+     */
+    List<AlarmCondition> queryByProjectAlarmRules(List<ProjectAlarmRule> projectAlarmRules);
+
+    /**
+     * 根据报警条件id列表查询报警条件
+     *
+     * @param conditionIdList 报警条件id列表
+     * @return 报警条件列表
+     * @author lixing
+     * @version V1.0 2021/11/3 9:03 下午
+     */
+    List<AlarmCondition> queryByIds(List<String> conditionIdList);
 }

+ 70 - 5
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -16,6 +16,10 @@ import com.persagy.apm.alarmservice.project.alarmcondition.model.ConvertAlarmCon
 import com.persagy.apm.alarmservice.project.alarmcondition.model.Formula;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.*;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
+import com.persagy.apm.alarmservice.project.alarmrule.model.dto.QueryProjectAlarmRuleDTO;
+import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
@@ -29,6 +33,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * 报警条件(AlarmCondition) service层
@@ -44,6 +49,10 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     private IMonitorIndicatorService monitorIndicatorService;
     @Autowired
     JmsSender jmsSender;
+    @Autowired
+    private IProjectAlarmRuleService projectAlarmRuleService;
+    @Autowired
+    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
     /**
      * 创建报警条件
@@ -282,11 +291,11 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
      */
     @Override
     public AlarmCondition queryAlarmConditionDetail(String id) {
-//        AlarmCondition alarmCondition = getById(id);
-//        if (alarmCondition == null) {
-//            throw new IllegalArgumentException("查看AlarmCondition详情时发生异常,找不到要查看的记录,id=" + id);
-//        }
-//        return alarmCondition;
+        //        AlarmCondition alarmCondition = getById(id);
+        //        if (alarmCondition == null) {
+        //            throw new IllegalArgumentException("查看AlarmCondition详情时发生异常,找不到要查看的记录,id=" + id);
+        //        }
+        //        return alarmCondition;
         return getById(id);
     }
 
@@ -367,6 +376,13 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
 
         if (queryAlarmConditionDTO != null) {
 
+            if (queryAlarmConditionDTO.getIds() != null) {
+                if (CollectionUtils.isEmpty(queryAlarmConditionDTO.getIds())) {
+                    return new ArrayList<>();
+                }
+                queryWrapper.in(AlarmCondition.PROP_ID, queryAlarmConditionDTO.getIds());
+            }
+
             if (queryAlarmConditionDTO.getInfoCodes() != null) {
                 queryWrapper.eq(AlarmCondition.PROP_INFO_CODES, queryAlarmConditionDTO.getInfoCodes());
             }
@@ -561,4 +577,53 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     public List<AlarmCondition> queryAllAlarmConditions() {
         return queryAlarmConditionList(new QueryAlarmConditionDTO());
     }
+
+    @Override
+    public List<AlarmCondition> queryByObj(String objId) {
+        // 获取设备id关联的项目报警规则
+        List<String> ruleIdList = projectAlarmRuleObjRelService.queryRuleIdsByObj(objId);
+        if (CollectionUtils.isEmpty(ruleIdList)) {
+            return new ArrayList<>();
+        }
+
+        QueryProjectAlarmRuleDTO queryProjectAlarmRuleDTO = new QueryProjectAlarmRuleDTO();
+        queryProjectAlarmRuleDTO.setIds(ruleIdList);
+        List<ProjectAlarmRule> projectAlarmRules = projectAlarmRuleService.queryProjectAlarmRuleList(queryProjectAlarmRuleDTO);
+        // 查询这些规则中包含的报警条件
+        return queryByProjectAlarmRules(projectAlarmRules);
+    }
+
+    @Override
+    public List<AlarmCondition> queryByObjAndItemCode(String objId, String itemCode) {
+        // 获取设备id关联的项目报警规则
+        List<String> ruleIdList = projectAlarmRuleObjRelService.queryRuleIdsByObj(objId);
+        if (CollectionUtils.isEmpty(ruleIdList)) {
+            return new ArrayList<>();
+        }
+
+        QueryProjectAlarmRuleDTO queryProjectAlarmRuleDTO = new QueryProjectAlarmRuleDTO();
+        queryProjectAlarmRuleDTO.setIds(ruleIdList);
+        queryProjectAlarmRuleDTO.setAlarmItemCode(itemCode);
+        List<ProjectAlarmRule> projectAlarmRules = projectAlarmRuleService.queryProjectAlarmRuleList(queryProjectAlarmRuleDTO);
+        return queryByProjectAlarmRules(projectAlarmRules);
+    }
+
+    @Override
+    public List<AlarmCondition> queryByProjectAlarmRules(List<ProjectAlarmRule> projectAlarmRules) {
+        if (CollectionUtils.isEmpty(projectAlarmRules)) {
+            return new ArrayList<>();
+        }
+
+        List<String> conditionIdList = projectAlarmRules.stream().map(
+                ProjectAlarmRule::getAlarmConditionId).collect(Collectors.toList());
+
+        return queryByIds(conditionIdList);
+    }
+
+    @Override
+    public List<AlarmCondition> queryByIds(List<String> conditionIdList) {
+        QueryAlarmConditionDTO queryAlarmConditionDTO = new QueryAlarmConditionDTO();
+        queryAlarmConditionDTO.setIds(conditionIdList);
+        return queryAlarmConditionList(queryAlarmConditionDTO);
+    }
 }

+ 1 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/ProjectAlarmRule.java

@@ -38,6 +38,7 @@ public class ProjectAlarmRule extends AuditableEntity<ProjectAlarmRule> implemen
     private String projectId;
     
 
+    public static String PROP_ID = "id";
     public static String PROP_GROUP_ID = "group_id";
     public static String PROP_ALARM_ITEM_CODE = "alarm_item_code";
     public static String PROP_ALARM_CONDITION_ID = "alarm_condition_id";

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/QueryProjectAlarmRuleDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -26,5 +27,7 @@ public class QueryProjectAlarmRuleDTO {
     
     @ApiModelProperty(value = "项目id", required = true)
     private String projectId;
-    
+
+    @ApiModelProperty(value = "id数组")
+    private List<String> ids;
 }

+ 6 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java

@@ -414,6 +414,12 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         queryWrapper.orderBy(true, false, ProjectAlarmRule.PROP_CREATIONTIME);
 
         if (queryProjectAlarmRuleDTO != null) {
+            if (queryProjectAlarmRuleDTO.getIds() != null) {
+                if (CollectionUtils.isEmpty(queryProjectAlarmRuleDTO.getIds())) {
+                    return new ArrayList<>();
+                }
+                queryWrapper.in(ProjectAlarmRule.PROP_ID, queryProjectAlarmRuleDTO.getIds());
+            }
 
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleDTO.getGroupId())) {
                 queryWrapper.eq(ProjectAlarmRule.PROP_GROUP_ID, queryProjectAlarmRuleDTO.getGroupId());

+ 10 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java

@@ -103,4 +103,14 @@ public interface IProjectAlarmRuleObjRelService  {
      * @version V1.0 2021/10/22 10:46 上午
      */
     List<ObjConditionRel> queryObjAlarmConditionRel(QueryObjConditionRelDTO queryObjConditionRelDTO);
+
+    /**
+     * 根据设备id查询关联的报警规则id列表
+     *
+     * @param objId 设备id
+     * @return 报警规则id列表
+     * @author lixing
+     * @version V1.0 2021/11/3 8:58 下午
+     */
+    List<String> queryRuleIdsByObj(String objId);
 }

+ 14 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java

@@ -443,4 +443,18 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         saveBatch(relList);
         jmsSender.sendNewObjConditionRelListMsg(relList);
     }
+
+    @Override
+    public List<String> queryRuleIdsByObj(String objId) {
+        QueryProjectAlarmRuleObjRelDTO queryProjectAlarmRuleObjRelDTO = new QueryProjectAlarmRuleObjRelDTO();
+        queryProjectAlarmRuleObjRelDTO.setEquipId(objId);
+        // 屏蔽状态 1-open、0- 屏蔽
+        queryProjectAlarmRuleObjRelDTO.setOpen(1);
+        List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRels = queryProjectAlarmRuleObjRelList(queryProjectAlarmRuleObjRelDTO);
+        if (CollectionUtils.isEmpty(projectAlarmRuleObjRels)) {
+            return new ArrayList<>();
+        }
+        return projectAlarmRuleObjRels.stream().map(
+                ProjectAlarmRuleObjRel::getProjectAlarmRuleId).collect(Collectors.toList());
+    }
 }