Quellcode durchsuchen

设备分组、监测指标、指标公式添加报警分类编码字段,查询方法兼容修改

miaolijing vor 3 Jahren
Ursprung
Commit
c217082fdb

+ 29 - 7
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/service/AlarmRecordWrapper.java

@@ -110,11 +110,13 @@ public class AlarmRecordWrapper {
      * @version V1.0 2021/9/20 6:16 下午
      */
     public List<AlarmRecordListItem> getAlarmRecordListItems(DmpResult<List<AlarmRecordItem>> dmpResult) throws Exception {
-        // 获取查询结果中的设备
         Set<String> objIds = dmpResult.getData().stream().map(AlarmRecordItem::getObjId).collect(Collectors.toSet());
         List<String> objIdList = Lists.newArrayList(objIds);
+        // 获取查询结果中的设备
+        Map<String,Set<String>> categoryObjIdsMap = categoryObjIdsMap(dmpResult);
         // 获取这些设备所在的分组信息
-        Map<String, SimpleObjVO> objGroupMap = groupManagementService.queryObjGroup(objIdList);
+//        Map<String, SimpleObjVO> objGroupMap = groupManagementService.queryObjGroup(objIdList);
+        Map<String, Map<String, SimpleObjVO>> objGroupMap = groupManagementService.queryObjGroupMap(categoryObjIdsMap);
         // 获取这些设备的名称
         Map<String, EquipItem> objMap = groupManagementService.queryEquipsByIds(objIdList);
         if (CollectionUtils.isEmpty(dmpResult.getData())) {
@@ -130,6 +132,22 @@ public class AlarmRecordWrapper {
                 collect(Collectors.toList());
     }
 
+    public Map<String,Set<String>> categoryObjIdsMap(DmpResult<List<AlarmRecordItem>> dmpResult){
+        List<AlarmRecordItem> alarmRecordItemList = dmpResult.getData();
+        if (CollectionUtils.isEmpty(alarmRecordItemList)){
+            return new HashMap<>();
+        }
+        Map<String,Set<String>> categoryObjIdsMap = new HashMap<>();
+        alarmRecordItemList.forEach(alarmRecordItem -> {
+            if (categoryObjIdsMap.containsKey(alarmRecordItem.getCategory())){
+                categoryObjIdsMap.get(alarmRecordItem.getCategory()).add(alarmRecordItem.getObjId());
+            }else{
+                categoryObjIdsMap.put(alarmRecordItem.getCategory(),new HashSet<>(Lists.newArrayList(alarmRecordItem.getObjId())));
+            }
+        });
+        return categoryObjIdsMap;
+    }
+
     /**
      * 将报警数据中台返回的一条记录转换为报警服务中台报警记录列表中的一条数据
      *
@@ -142,13 +160,14 @@ public class AlarmRecordWrapper {
      * @version V1.0 2021/9/20 6:21 下午
      */
     private AlarmRecordListItem getAlarmRecordListItem(
-            Map<String, SimpleObjVO> objGroupMap,
+            Map<String, Map<String, SimpleObjVO>> objGroupMap,
             Map<String, EquipItem> objMap,
             Map<String, SimpleObjVO> alarmItemMap,
             AlarmRecordItem alarmRecordItem) {
         AlarmRecordListItem alarmRecordListItem = new AlarmRecordListItem();
         alarmRecordListItem.setId(alarmRecordItem.getId());
-        alarmRecordListItem.setGroup(objGroupMap.get(alarmRecordItem.getObjId()));
+//        alarmRecordListItem.setGroup(objGroupMap.get(alarmRecordItem.getObjId()));
+        alarmRecordListItem.setGroup(objGroupMap.get(alarmRecordItem.getCategory()).get(alarmRecordItem.getObjId()));
         EquipItem objInfo = objMap.get(alarmRecordItem.getObjId());
         alarmRecordListItem.setObj(new SimpleObjVO(alarmRecordItem.getObjId(),
                 objInfo == null ? null : objInfo.getLocalName()));
@@ -282,9 +301,12 @@ public class AlarmRecordWrapper {
      */
     public void copyBasicInfo(AlarmRecordItem alarmRecordItem, AlarmRecordItemVO alarmRecordItemVO) throws Exception {
         alarmRecordItemVO.setId(alarmRecordItem.getId());
-        Map<String, SimpleObjVO> objGroupMap = groupManagementService.queryObjGroup(
-                Lists.newArrayList(alarmRecordItem.getObjId()));
-        alarmRecordItemVO.setGroup(objGroupMap.get(alarmRecordItem.getObjId()));
+//        Map<String, SimpleObjVO> objGroupMap = groupManagementService.queryObjGroup(Lists.newArrayList(alarmRecordItem.getObjId()));
+//        alarmRecordItemVO.setGroup(objGroupMap.get(alarmRecordItem.getObjId()));
+        Map<String,Set<String>> categoryObjIdsMap = new HashMap<>();
+        categoryObjIdsMap.put(alarmRecordItem.getCategory(),new HashSet<>(Lists.newArrayList(alarmRecordItem.getObjId())));
+        Map<String, Map<String, SimpleObjVO>> objGroupMap = groupManagementService.queryObjGroupMap(categoryObjIdsMap);
+        alarmRecordItemVO.setGroup(objGroupMap.get(alarmRecordItem.getCategory()).get(alarmRecordItem.getObjId()));
         // 获取这些设备的名称
         Map<String, EquipItem> objMap = groupManagementService.queryEquipsByIds(
                 Lists.newArrayList(alarmRecordItem.getObjId())

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/group/calculatemethod/model/CalculateMethod.java

@@ -29,11 +29,14 @@ public class CalculateMethod extends AuditableEntity<CalculateMethod> implements
     
     @ApiModelProperty("是否是指标默认计算方式")
     private String isDefault;
-    
+
+    @ApiModelProperty("报警系统编码")
+    private String category;
 
     public static String PROP_NAME = "name";
     public static String PROP_FORMULA = "formula";
     public static String PROP_MONITOR_INDICATOR_ID = "monitor_indicator_id";
     public static String PROP_IS_DEFAULT = "is_default";
+    public static String PROP_CATEGORY = "category";
 
 }

+ 3 - 1
src/main/java/com/persagy/apm/alarmservice/group/calculatemethod/model/dto/QueryCalculateMethodDTO.java

@@ -23,5 +23,7 @@ public class QueryCalculateMethodDTO {
     
     @ApiModelProperty(value = "是否是指标默认计算方式", required = true)
     private String isDefault;
-    
+
+    @ApiModelProperty(value = "报警分类编码", required = true)
+    private String category;
 }

+ 4 - 0
src/main/java/com/persagy/apm/alarmservice/group/calculatemethod/service/impl/CalculateMethodServiceImpl.java

@@ -155,6 +155,10 @@ public class CalculateMethodServiceImpl extends ServiceImpl<CalculateMethodMappe
             if (queryCalculateMethodDTO.getIsDefault() != null) {
                 queryWrapper.eq(CalculateMethod.PROP_IS_DEFAULT, queryCalculateMethodDTO.getIsDefault());
             }
+
+            if (queryCalculateMethodDTO.getCategory() != null) {
+                queryWrapper.eq(CalculateMethod.PROP_CATEGORY, queryCalculateMethodDTO.getCategory());
+            }
                                             
         }
         

+ 5 - 2
src/main/java/com/persagy/apm/alarmservice/group/management/controller/GroupManagementController.java

@@ -2,6 +2,7 @@ package com.persagy.apm.alarmservice.group.management.controller;
 
 import com.persagy.apm.alarmservice.group.management.model.group.vo.GroupTreeVO;
 import com.persagy.apm.alarmservice.group.management.service.GroupManagementService;
+import com.persagy.apm.alarmservice.group.objgroup.model.dto.QueryObjGroupDTO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.utils.ResultHelper;
 import io.swagger.annotations.Api;
@@ -9,9 +10,11 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
 import java.util.List;
 
 
@@ -30,7 +33,7 @@ public class GroupManagementController {
 
     @ApiOperation(value = "获取分组树")
     @PostMapping("/eq_groups/tree")
-    public CommonResult<List<GroupTreeVO>> queryGroupTree(){
-        return ResultHelper.single(managementService.getGroupTree());
+    public CommonResult<List<GroupTreeVO>> queryGroupTree(@Valid @RequestBody QueryObjGroupDTO queryObjGroupDTO){
+        return ResultHelper.single(managementService.getGroupTree(queryObjGroupDTO));
     }
 }

+ 12 - 3
src/main/java/com/persagy/apm/alarmservice/group/management/service/GroupManagementService.java

@@ -6,11 +6,13 @@ import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipListIte
 import com.persagy.apm.alarmservice.group.management.model.group.vo.EquipGroupInfoVO;
 import com.persagy.apm.alarmservice.group.management.model.group.vo.GroupInfoVO;
 import com.persagy.apm.alarmservice.group.management.model.group.vo.GroupTreeVO;
+import com.persagy.apm.alarmservice.group.objgroup.model.dto.QueryObjGroupDTO;
 import com.persagy.apm.common.model.vo.SimpleObjVO;
 import com.persagy.apm.common.response.PageList;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author 易涛
@@ -48,7 +50,8 @@ public interface GroupManagementService {
      * @author 易涛
      * @date 2021/9/10 10:02
      */
-    List<EquipGroupInfoVO> equipGroupQuery(List<String> equipIds);
+//    List<EquipGroupInfoVO> equipGroupQuery(List<String> equipIds);
+    List<EquipGroupInfoVO> equipGroupQuery(String category,List<String> equipIds);
 
     /**
      * 根据一组设备id查询对应的分组信息
@@ -58,9 +61,15 @@ public interface GroupManagementService {
      * @author lixing
      * @version V1.0 2021/9/20 1:14 下午
      */
-    Map<String, SimpleObjVO> queryObjGroup(List<String> objIds);
+//    Map<String, SimpleObjVO> queryObjGroup(List<String> objIds);
 
-    List<GroupTreeVO> getGroupTree();
+    /**
+     * 根据报警分类和设备id查询对应的分组信息
+     * @param categoryObjIdsMap 报警分类对应设备id集合
+     */
+    Map<String, Map<String, SimpleObjVO>> queryObjGroupMap(Map<String, Set<String>> categoryObjIdsMap);
+
+    List<GroupTreeVO> getGroupTree(QueryObjGroupDTO queryObjGroupDTO);
 
     /**
      * 查询分组下的设备

+ 52 - 21
src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java

@@ -91,7 +91,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     }
 
     @Override
-    public List<EquipGroupInfoVO> equipGroupQuery(List<String> ids) {
+    public List<EquipGroupInfoVO> equipGroupQuery(String category,List<String> ids) {
         List<EquipGroupInfoVO> equipGroupInfoVOList = Lists.newArrayList();
         List<EquipItem> equipItemList = findEquipsByIds(ids);
         for (EquipItem equipItem : equipItemList) {
@@ -111,7 +111,9 @@ public class GroupManagementServiceImpl implements GroupManagementService {
                 }
             }
             //获取分组树
-            List<GroupTreeVO> groupTreeVOList = getGroupTree();
+            QueryObjGroupDTO queryObjGroupDTO = new QueryObjGroupDTO();
+            queryObjGroupDTO.setCategory(category);
+            List<GroupTreeVO> groupTreeVOList = getGroupTree(queryObjGroupDTO);
             EquipGroupInfoVO equipGroupInfoVO = new EquipGroupInfoVO();
             equipGroupInfoVO.setEquipId(equipItem.getId());
             equipGroupInfoVO.setClassCode(equipItem.getClassCode());
@@ -123,28 +125,54 @@ public class GroupManagementServiceImpl implements GroupManagementService {
         return equipGroupInfoVOList;
     }
 
+//    @Override
+//    public Map<String, SimpleObjVO> queryObjGroup(List<String> objIds) {
+//        if (CollectionUtils.isEmpty(objIds)) {
+//            return new HashMap<>();
+//        }
+//        Map<String, SimpleObjVO> resultMap = new HashMap<>(objIds.size());
+//        // 每次查询100条
+//        List<List<String>> partitions = Lists.partition(objIds, 100);
+//        for (List<String> partition : partitions) {
+//            List<EquipGroupInfoVO> groupTreeInfoList = equipGroupQuery(partition);
+//            if (CollectionUtils.isEmpty(groupTreeInfoList)) {
+//                continue;
+//            }
+//            Map<String, SimpleObjVO> partitionMap = groupTreeInfoList.stream().collect(Collectors.toMap(
+//                    EquipGroupInfoVO::getEquipId,
+//                    equipGroupInfoVO -> new SimpleObjVO(equipGroupInfoVO.getId(), equipGroupInfoVO.getName()),
+//                    (k1, k2) -> k1
+//            ));
+//            resultMap.putAll(partitionMap);
+//        }
+//        return resultMap;
+//    }
+
     @Override
-    public Map<String, SimpleObjVO> queryObjGroup(List<String> objIds) {
-        if (CollectionUtils.isEmpty(objIds)) {
+    public Map<String, Map<String, SimpleObjVO>> queryObjGroupMap(Map<String, Set<String>> categoryObjIdsMap) {
+        if (CollectionUtils.isEmpty(categoryObjIdsMap)) {
             return new HashMap<>();
         }
-        Map<String, SimpleObjVO> resultMap = new HashMap<>(objIds.size());
+        Map<String, Map<String, SimpleObjVO>> resultMap = new HashMap<>();
 
-        // 每次查询100条
-        List<List<String>> partitions = Lists.partition(objIds, 100);
-        for (List<String> partition : partitions) {
-            List<EquipGroupInfoVO> groupTreeInfoList = equipGroupQuery(partition);
-            if (CollectionUtils.isEmpty(groupTreeInfoList)) {
-                continue;
+        for (String category:categoryObjIdsMap.keySet()) {
+            Set<String> objIds = categoryObjIdsMap.get(category);
+            List<String> objIdList = org.assertj.core.util.Lists.newArrayList(objIds);
+            // 每次查询100条
+            List<List<String>> partitions = Lists.partition(objIdList, 100);
+            for (List<String> partition : partitions) {
+                List<EquipGroupInfoVO> groupTreeInfoList = equipGroupQuery(category,partition);
+                if (CollectionUtils.isEmpty(groupTreeInfoList)) {
+                    continue;
+                }
+                Map<String, SimpleObjVO> partitionMap = groupTreeInfoList.stream().collect(Collectors.toMap(
+                        EquipGroupInfoVO::getEquipId,
+                        equipGroupInfoVO -> new SimpleObjVO(equipGroupInfoVO.getId(), equipGroupInfoVO.getName()),
+                        (k1, k2) -> k1
+                ));
+                resultMap.put(category,partitionMap);
             }
-            Map<String, SimpleObjVO> partitionMap = groupTreeInfoList.stream().collect(Collectors.toMap(
-                    EquipGroupInfoVO::getEquipId,
-                    equipGroupInfoVO -> new SimpleObjVO(equipGroupInfoVO.getId(), equipGroupInfoVO.getName()),
-                    (k1, k2) -> k1
-            ));
-            resultMap.putAll(partitionMap);
         }
-
         return resultMap;
     }
 
@@ -192,9 +220,12 @@ public class GroupManagementServiceImpl implements GroupManagementService {
      * @version V1.0 2021/10/19 2:40 下午
      */
     @Override
-    public List<GroupTreeVO> getGroupTree() {
+    public List<GroupTreeVO> getGroupTree(QueryObjGroupDTO objGroupDTO) {
         // 从表中查询所有分组
         QueryObjGroupDTO queryObjGroupDTO = new QueryObjGroupDTO();
+        if (StringUtils.isNotBlank(objGroupDTO.getCategory())){
+            queryObjGroupDTO.setCategory(objGroupDTO.getCategory());
+        }
         List<ObjGroup> objGroups = objGroupService.queryObjGroupList(queryObjGroupDTO);
 
         if (CollectionUtils.isEmpty(objGroups)) {
@@ -281,7 +312,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
 
     @Override
     public GroupInfoVO getGroup(String id) {
-        return queryById(getGroupTree(), new GroupInfoVO(), id);
+        return queryById(getGroupTree(new QueryObjGroupDTO()), new GroupInfoVO(), id);
     }
 
     /**
@@ -315,7 +346,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     @Override
     public List<GroupInfoVO> queryAllLeafGroups() {
         // 遍历分组树,获取最末级节点
-        List<GroupTreeVO> groupTree = getGroupTree();
+        List<GroupTreeVO> groupTree = getGroupTree(new QueryObjGroupDTO());
 
         List<GroupInfoVO> result = new ArrayList<>();
         cascadeGetLeafGroup(groupTree, result);

+ 4 - 0
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/MonitorIndicator.java

@@ -37,8 +37,12 @@ public class MonitorIndicator extends AuditableEntity<MonitorIndicator> implemen
     @TableField(typeHandler = FastjsonTypeHandler.class)
     private EnumVO[] dic;
 
+    @ApiModelProperty("报警系统编码")
+    private String category;
+
     public static String PROP_NAME = "name";
     public static String PROP_CLASS_CODE = "class_code";
     public static String PROP_CLASS_UNIT = "unit";
+    public static String PROP_CATEGORY = "category";
 
 }

+ 3 - 0
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/dto/QueryMonitorIndicatorDTO.java

@@ -21,4 +21,7 @@ public class QueryMonitorIndicatorDTO {
     
     @ApiModelProperty(value = "设备类")
     private String classCode;
+
+    @ApiModelProperty(value = "报警分类编码")
+    private String category;
 }

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java

@@ -176,7 +176,6 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
                 queryWrapper.in(MonitorIndicator.PROP_ID, queryMonitorIndicatorDTO.getIds());
             }
 
-
             if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getName())) {
                 queryWrapper.like(MonitorIndicator.PROP_NAME, queryMonitorIndicatorDTO.getName());
             }
@@ -185,6 +184,10 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
                 queryWrapper.eq(MonitorIndicator.PROP_CLASS_CODE, queryMonitorIndicatorDTO.getClassCode());
             }
 
+            if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getCategory())) {
+                queryWrapper.eq(MonitorIndicator.PROP_CATEGORY, queryMonitorIndicatorDTO.getCategory());
+            }
+
         }
 
         return list(queryWrapper);

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/group/objgroup/model/ObjGroup.java

@@ -32,11 +32,14 @@ public class ObjGroup extends AuditableEntity<ObjGroup> implements Serializable
     
     @ApiModelProperty("父节点id")
     private String parentId;
-    
+
+    @ApiModelProperty("报警分类编码")
+    private String category;
 
     public static String PROP_NAME = "name";
     public static String PROP_CLASS_CODE = "class_code";
     public static String PROP_CONDITION = "condition";
     public static String PROP_PARENT_ID = "parent_id";
+    public static String PROP_CATEGORY = "category";
 
 }

+ 3 - 0
src/main/java/com/persagy/apm/alarmservice/group/objgroup/model/dto/QueryObjGroupDTO.java

@@ -23,5 +23,8 @@ public class QueryObjGroupDTO {
     
     @ApiModelProperty(value = "父节点id", required = true)
     private String parentid;
+
+    @ApiModelProperty(value = "报警分类编码", required = true)
+    private String category;
     
 }

+ 4 - 0
src/main/java/com/persagy/apm/alarmservice/group/objgroup/service/impl/ObjGroupServiceImpl.java

@@ -151,6 +151,10 @@ public class ObjGroupServiceImpl extends ServiceImpl<ObjGroupMapper, ObjGroup>
             if (StringUtils.isNotEmpty(queryObjGroupDTO.getParentid())) {
                 queryWrapper.eq(ObjGroup.PROP_PARENT_ID, queryObjGroupDTO.getParentid());
             }
+
+            if (StringUtils.isNotEmpty(queryObjGroupDTO.getCategory())) {
+                queryWrapper.eq(ObjGroup.PROP_CATEGORY, queryObjGroupDTO.getCategory());
+            }
                                             
         }