xujiaheng пре 3 година
родитељ
комит
e2e5703941
14 измењених фајлова са 188 додато и 38 уклоњено
  1. 2 3
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/UpdateGroupAlarmRuleDTO.java
  2. 58 12
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java
  3. 1 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/AddProjectAlarmRuleDTO.java
  4. 3 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java
  5. 28 5
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java
  6. 10 9
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java
  7. 5 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/AddProjectAlarmRuleObjRelDTO.java
  8. 23 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/AddProjectRelDTO.java
  9. 8 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/QueryRuleObjRelDTO.java
  10. 2 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectAlarmRuleObjRelVO.java
  11. 3 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java
  12. 42 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java
  13. 1 1
      src/main/resources/json/Project.json
  14. 2 2
      src/main/resources/mapper/ProjectAlarmRuleMapper.xml

+ 2 - 3
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/UpdateGroupAlarmRuleDTO.java

@@ -23,8 +23,8 @@ public class UpdateGroupAlarmRuleDTO {
     @NotNull(message = "分组id不能为空") // todo 更新校验规则
     private String groupId;
     
-    @ApiModelProperty(value = "报警条目编码", required = true)
-    @NotNull(message = "报警条目编码不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "报警类型编码", required = true)
+    @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
 
     @ApiModelProperty(value = "报警规则", required = true)
@@ -36,7 +36,6 @@ public class UpdateGroupAlarmRuleDTO {
     private String classCode;
 
     @ApiModelProperty(value = "查询条件",required = true)
-    @NotBlank(message = "查询条件必传")
     private String condition;
     
 }

+ 58 - 12
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java

@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 import com.persagy.apm.alarmservice.group.alarmrule.controller.GroupAlarmRuleController;
 import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.ConvertGroupAlarmRuleTool;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.group.management.model.equip.dto.QueryEquipDTO;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
 import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
@@ -23,6 +26,7 @@ import com.persagy.apm.alarmservice.project.alarmcondition.service.impl.AlarmCon
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
@@ -97,25 +101,33 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
         for (AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO : addProjectAlarmRuleObjRelDTOS) {
             AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
-            String equipId = addProjectAlarmRuleObjRelDTO.getEquipId();
+            String equipId = addProjectAlarmRuleObjRelDTO.getObjId();
             addAlarmConfigDTO.setObjId(equipId);
             addAlarmConfigDTO.setItemCode(addGroupAlarmRuleDTO.getAlarmItemCode());
             addAlarmConfigDTO.setClassCode(addGroupAlarmRuleDTO.getClassCode());
             addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
             addAlarmConfigDTO.setCategory("Eqdx");
+            addAlarmConfigDTO.setOpen(1);
             AlarmCondition condition = new AlarmCondition();
             List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
-            condition.setInfoCode(infoCodeList);
+            List<String> infoCodeNew = new ArrayList<>();
+            for (String infoCode : infoCodeList) {
+                String replacement = equipId + "-" + infoCode;
+                infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
+            }
+            condition.setInfoCode(infoCodeNew);
             String backend = (String) conditionMap.get("backend");
             for (String infoCode : infoCodeList) {
-                String replacement = equipId+"-"+infoCode;
-                backend = backend.replaceAll(infoCode,replacement);
+                String replacement = equipId + "-" + infoCode;
+                backend = backend.replaceAll(infoCode, replacement);
             }
-            condition.setEnd("!"+backend);
+            condition.setEnd("!" + backend);
             condition.setEndUphold(0);
             condition.setTrigger(backend);
-            condition.setTriggerUphold(alarmCondition.getTriggerUphold()*60);
+            condition.setTriggerUphold(alarmCondition.getTriggerUphold() * 60);
             condition.setRules((List<String>) conditionMap.get("displayFormula"));
+            JSONArray configs= JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
+            condition.setConfigs(configs);
             addAlarmConfigDTO.setCondition(condition);
             alarmConfigs.add(addAlarmConfigDTO);
         }
@@ -166,19 +178,30 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(groupAlarmRule, updateGroupAlarmRuleDTO);
         groupAlarmRule.setModifier(AppContext.getContext().getAccountId());
         updateById(groupAlarmRule);
+        //获得报警规则
         UpdateAlarmConditionDTO alarmCondition = updateGroupAlarmRuleDTO.getAlarmCondition();
+        //更新报警规则
         alarmConditionService.updateAlarmCondition(alarmCondition);
         if (alarmCondition != null) {
             //同步更新设备报警条件 begin
-            BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
             List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
             String condition = updateGroupAlarmRuleDTO.getCondition();
             String classCode = updateGroupAlarmRuleDTO.getClassCode();
-            List<EquipItem> equipList = groupManagementService.getEquipList(condition, classCode);
+            List<ProjectVO> projects = projectAlarmRuleService.getProject();
+            List<EquipItem> records = new ArrayList<>();
+            for (ProjectVO project : projects) {
+                QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
+                queryEquipDTO.setClassCode(classCode);
+                queryEquipDTO.setCondition(condition);
+                queryEquipDTO.setProjectId(project.getProjectId());
+                List<EquipItem> equipList = groupManagementService.getEquipList(queryEquipDTO);
+                records.addAll(equipList);
+            }
+
             Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmCondition.getFrontend());
-            for (EquipItem record : equipList) {
+            for (EquipItem record : records) {
                 AlarmCondition alarmCondit = new AlarmCondition();
-                alarmCondit.setTrigger((String) alarmCondition.getBackend());
+                alarmCondit.setTrigger(alarmCondition.getBackend());
                 List<String> infoCodeList = alarmCondition.getInfoCodes();
                 alarmCondit.setInfoCode(infoCodeList);
                 alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
@@ -189,8 +212,12 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
                 updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
                 updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
             }
-            batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
-            alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
+            List<List<UpdateAlarmConfigDTO>> lists = averageAssign(updateAlarmConfigDTOs, 200);
+            for (List<UpdateAlarmConfigDTO> list : lists) {
+                BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
+                batchUpdateAlarmConfigDTO.setAlarmConfigs(list);
+                alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
+            }
             //同步更新设备报警条件 end
         }
 
@@ -364,4 +391,23 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         queryWrapper.eq(GroupAlarmRule.PROP_ALARM_ITEM_CODE, getGroupAlarmRuleDTO.getAlarmItemCode());
         return getOne(queryWrapper);
     }
+
+    public static <T> List<List<T>> averageAssign(List<T> source, int n) {
+        List<List<T>> result = new ArrayList<List<T>>();
+        int remainder = source.size() % n;  //(先计算出余数)
+        int number = source.size() / n;  //然后是商
+        int offset = 0;//偏移量
+        for (int i = 0; i < n; i++) {
+            List<T> value = null;
+            if (remainder > 0) {
+                value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
+                remainder--;
+                offset++;
+            } else {
+                value = source.subList(i * number + offset, (i + 1) * number + offset);
+            }
+            result.add(value);
+        }
+        return result;
+    }
 }

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

@@ -54,7 +54,7 @@ public class AddProjectAlarmRuleDTO {
     private String classCode;
 
     @ApiModelProperty(value = "查询条件",required = true)
-    @NotBlank(message = "查询条件必传")
+    //@NotBlank(message = "查询条件必传")
     private String condition;
     
 }

+ 3 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java

@@ -6,6 +6,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.model.dto.*;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.QueryRuleObjRelDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 
 /**
@@ -80,4 +81,6 @@ public interface IProjectAlarmRuleService  {
      * 获取项目
      */
     List<ProjectVO> getProject();
+
+    List<String> queryAlarmRule(QueryRuleObjRelDTO queryRuleObjRelDTO);
 }

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

@@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.alarmservice.common.util.DataUtils;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.group.management.model.equip.dto.QueryEquipDTO;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipListItem;
 import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
@@ -23,6 +25,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.model.dto.QueryProjectAlar
 import com.persagy.apm.alarmservice.project.alarmrule.model.dto.UpdateProjectAlarmRuleDTO;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.QueryRuleObjRelDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -48,6 +51,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE;
 
@@ -406,9 +410,17 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     public List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
         String condition = addGroupAlarmRuleDTO.getCondition();
         String classCode = addGroupAlarmRuleDTO.getClassCode();
-        List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
         //查询所有项目
         List<ProjectVO> projects = this.getProject();
+        List<EquipItem> records = new ArrayList<>();
+        for (ProjectVO project : projects) {
+            QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
+            queryEquipDTO.setProjectId(project.getProjectId());
+            queryEquipDTO.setClassCode(classCode);
+            queryEquipDTO.setCondition(condition);
+            List<EquipItem> record = groupManagementService.getEquipList(queryEquipDTO);
+            records.addAll(record);
+        }
         //遍历项目,组好对象进行插入
         List<ProjectAlarmRule> projectAlarmRuleList = new ArrayList<>();
         String alarmItemCode = addGroupAlarmRuleDTO.getAlarmItemCode();
@@ -421,23 +433,24 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             projectAlarmRule.setAlarmItemName(alarmItemName);
             projectAlarmRule.setBelong(INTEGER_ONE);
             projectAlarmRule.setGroupId(addGroupAlarmRuleDTO.getGroupId());
+            projectAlarmRule.setId(DataUtils.getUUID());
             String conditionId = getConditionId(alarmItemCode);
             projectAlarmRule.setAlarmConditionId(conditionId);
             setDefaultValue(projectAlarmRule);
             projectAlarmRuleList.add(projectAlarmRule);
             //新增关联关系
-            records.forEach(groupManagementVo -> {
+            for (EquipItem record : records) {
                 AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
                 addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(projectAlarmRule.getId());
                 addProjectAlarmRuleObjRelDTO.setProjectId(project.getProjectId());
-                addProjectAlarmRuleObjRelDTO.setEquipId(groupManagementVo.getId());
+                addProjectAlarmRuleObjRelDTO.setObjId(record.getId());
+                addProjectAlarmRuleObjRelDTO.setObjName(record.getName());
                 addProjectAlarmRuleObjRelDTO.setOpen(INTEGER_ONE);
                 addRelationList.add(addProjectAlarmRuleObjRelDTO);
-            });
+            }
         }
         projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
         saveBatch(projectAlarmRuleList);
-
         return addRelationList;
     }
 
@@ -456,4 +469,14 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             throw new RuntimeException("json文件有误", ioe);
         }
     }
+
+    @Override
+    public List<String> queryAlarmRule(QueryRuleObjRelDTO queryRuleObjRelDTO) {
+        QueryWrapper<ProjectAlarmRule> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ProjectAlarmRule.PROP_GROUP_ID, queryRuleObjRelDTO.getGroupId());
+        queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, queryRuleObjRelDTO.getAlarmItemCode());
+        List<ProjectAlarmRule> list = list(queryWrapper);
+        List<String> idList = list.stream().map(ProjectAlarmRule::getId).collect(Collectors.toList());
+        return idList;
+    }
 }

+ 10 - 9
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java

@@ -1,12 +1,12 @@
 package com.persagy.apm.alarmservice.project.alarmruleobjrel.controller;
 
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.*;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.*;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.*;
@@ -33,6 +33,8 @@ public class ProjectAlarmRuleObjRelController {
     private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
     @Autowired
     private IAlarmConditionService alarmConditionService;
+    @Autowired
+    private IProjectAlarmRuleService projectAlarmRuleService;
 
 	@ApiOperation(value = "创建项目报警规则与监测对象的关联")
     @ApiIgnore
@@ -116,13 +118,12 @@ public class ProjectAlarmRuleObjRelController {
         return ResultHelper.multi(resultList);
     }
 
-//    @ApiOperation(value = "项目报警规则与监测对象的关联列表")
-//    @PostMapping("/queryRuleObjRel")
-//    public CommonResult<PageList<ProjectAlarmRuleObjRelListItemVO>> queryRuleObjRel(
-//            @Valid @RequestBody QueryRuleObjRelDTO queryRuleObjRelDTO) {
-//        alarmConditionService.queryRuleObjRel(queryRuleObjRelDTO);
-//        List<ProjectAlarmRuleObjRelListItemVO> resultList = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convert2List(projectAlarmRuleObjRelList);
-//        return ResultHelper.multi(resultList);
-//    }
+    @ApiOperation(value = "查询报警类型")
+    @PostMapping("/queryRuleObjRel")
+    public CommonResult<PageList<ProjectAlarmRuleObjRelVO>> queryRuleObjRel(
+            @Valid @RequestBody QueryRuleObjRelDTO queryRuleObjRelDTO) {
+        List<ProjectAlarmRuleObjRelVO> projectAlarmRuleObjRelVOS = projectAlarmRuleObjRelService.queryRuleObjRel(queryRuleObjRelDTO);
+        return ResultHelper.multi(projectAlarmRuleObjRelVOS);
+    }
 }
 

+ 5 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/AddProjectAlarmRuleObjRelDTO.java

@@ -19,7 +19,11 @@ public class AddProjectAlarmRuleObjRelDTO {
     
     @ApiModelProperty(value = "设备ID", required = true)
     @NotNull(message = "设备ID不能为空") // todo 更新校验规则
-    private String equipId;
+    private String objId;
+
+    @ApiModelProperty(value = "设备名称", required = true)
+    @NotNull(message = "设备名称不能为空") // todo 更新校验规则
+    private String objName;
     
     @ApiModelProperty(value = "屏蔽状态 1-open、0- 屏蔽", required = true)
     @NotNull(message = "屏蔽状态 1-open、0- 屏蔽不能为空") // todo 更新校验规则

+ 23 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/AddProjectRelDTO.java

@@ -0,0 +1,23 @@
+package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-08 22:46:37
+ */
+@Data
+@ApiModel(value = "创建项目报警规则与监测对象的关联入参")
+public class AddProjectRelDTO {
+    @ApiModelProperty(value = "设备ID", required = true)
+    @NotNull(message = "设备ID不能为空") // todo 更新校验规则
+    private String objId;
+
+    @ApiModelProperty(value = "设备名称", required = true)
+    @NotNull(message = "设备名称不能为空") // todo 更新校验规则
+    private String objName;
+}

+ 8 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/QueryRuleObjRelDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -20,4 +21,11 @@ public class QueryRuleObjRelDTO {
     @ApiModelProperty(value = "报警类型编码", required = true)
     @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
+
+    @ApiModelProperty(value = "对象类编码",required = true)
+    @NotBlank(message = "对象类编码必传")
+    private String classCode;
+
+    @ApiModelProperty(value = "分组条件",required = true)
+    private String condition;
 }

+ 2 - 2
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectAlarmRuleObjRelVO.java

@@ -22,10 +22,10 @@ public class ProjectAlarmRuleObjRelVO {
     private String projectAlarmRuleId;
     
     @ApiModelProperty("设备ID")
-    private String equipId;
+    private String objId;
 
     @ApiModelProperty("设备名称")
-    private String equipName;
+    private String objName;
     
     @ApiModelProperty("屏蔽状态 1-open、0- 屏蔽")
     private Integer open;

+ 3 - 2
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java

@@ -4,8 +4,7 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.*;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.*;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectAlarmRuleObjRelVO;
 
 /**
  * 项目报警规则与监测对象的关联(ProjectAlarmRuleObjRel) service接口
@@ -84,4 +83,6 @@ public interface IProjectAlarmRuleObjRelService  {
     void deleteBatch();
 
     List<ProjectAlarmRuleObjRel> queryShieldManage(QueryShieldManageDTO queryShieldManageDTO);
+
+    List<ProjectAlarmRuleObjRelVO> queryRuleObjRel(QueryRuleObjRelDTO queryRuleObjRelDTO);
 }

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

@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
+import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
+import com.persagy.apm.alarmservice.group.management.service.GroupManagementService;
+import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.dao.ProjectAlarmRuleObjRelMapper;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ConvertProjectAlarmRuleObjRelTool;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.*;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectAlarmRuleObjRelVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -22,6 +26,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -36,6 +41,11 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
 
     @Autowired
     private IProjectAlarmRuleService projectAlarmRuleService;
+
+
+    @Autowired
+    GroupManagementService groupManagementService;
+
     /**
      * 创建项目报警规则与监测对象的关联
      *
@@ -288,4 +298,36 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
 
         return list(queryWrapper);
     }
+
+    @Override
+    public List<ProjectAlarmRuleObjRelVO> queryRuleObjRel(QueryRuleObjRelDTO queryRuleObjRelDTO) {
+        List<String> projectAlarmRuleIdList = projectAlarmRuleService.queryAlarmRule(queryRuleObjRelDTO);
+        List<ProjectAlarmRuleObjRel> relationList = this.queryObjRelList(projectAlarmRuleIdList);
+        Map<String, ProjectAlarmRuleObjRel> partitionMap = relationList.stream().collect(Collectors.toMap(
+                ProjectAlarmRuleObjRel::getObjId, equip -> equip));
+        String condition = queryRuleObjRelDTO.getCondition();
+        String classCode = queryRuleObjRelDTO.getClassCode();
+        List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
+        List<ProjectAlarmRuleObjRelVO> resultList = new ArrayList<>();
+        for (EquipItem record : records) {
+            if (partitionMap.get(record.getId()) == null) {
+                ProjectAlarmRuleObjRelVO projectAlarmRuleObjRelVO = new ProjectAlarmRuleObjRelVO();
+                projectAlarmRuleObjRelVO.setObjId(record.getId());
+                projectAlarmRuleObjRelVO.setObjName(record.getName());
+                resultList.add(projectAlarmRuleObjRelVO);
+            }
+        }
+        return resultList;
+    }
+
+    private List<ProjectAlarmRuleObjRel> queryObjRelList(List<String> projectAlarmRuleIdList) {
+        List<ProjectAlarmRuleObjRel> list = new ArrayList<>();
+        for (String projectAlarmRuleId : projectAlarmRuleIdList) {
+            QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, projectAlarmRuleId);
+            list.addAll(list(queryWrapper));
+
+        }
+        return list;
+    }
 }

+ 1 - 1
src/main/resources/json/Project.json

@@ -1 +1 @@
-[{"projectName":"衡阳蒸湘万达广场","projectId":"1101051029","groupCode":"WD"},{"projectName":"泉州安溪万达广场","projectId":"1101051130","groupCode":"WD"}]
+[{"projectName":"衡阳蒸湘万达广场","projectId":"Pj1101060001","groupCode":"WD"}]

+ 2 - 2
src/main/resources/mapper/ProjectAlarmRuleMapper.xml

@@ -16,8 +16,8 @@
         <result column="modified_time" property="modifiedTime"/>
         <collection property="relListItemList"
                     ofType="com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectAlarmRuleObjRelVO">
-            <result column="obj_id" property="equipId"/>
-            <result column="obj_name" property="equipName"/>
+            <result column="obj_id" property="objId"/>
+            <result column="obj_name" property="objName"/>
             <result column="open" property="open"/>
         </collection>
         <collection property="alarmCondition"