Browse Source

修复报警记录列表异常

lixing 3 years ago
parent
commit
cad9f2e6fa

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

@@ -97,7 +97,7 @@ public class AlarmRecordWrapper {
         // ns/1000=s s/60=min min/60=hour
         // 保留两位小数
         BigDecimal bd = new BigDecimal(durationNs);
-        bd = bd.divide(new BigDecimal(1000 * 60 * 60),2, RoundingMode.HALF_UP);
+        bd = bd.divide(new BigDecimal(1000 * 60 * 60), 2, RoundingMode.HALF_UP);
         return bd.toString();
     }
 
@@ -113,9 +113,9 @@ public class AlarmRecordWrapper {
         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, 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);
@@ -128,21 +128,21 @@ public class AlarmRecordWrapper {
         Map<String, SimpleObjVO> alarmItemMap = getAlarmItemMap(itemCodes);
 
         return dmpResult.getData().stream().map(alarmRecordItem ->
-                getAlarmRecordListItem(objGroupMap, objMap, alarmItemMap, alarmRecordItem)).
+                        getAlarmRecordListItem(objGroupMap, objMap, alarmItemMap, alarmRecordItem)).
                 collect(Collectors.toList());
     }
 
-    public Map<String,Set<String>> categoryObjIdsMap(DmpResult<List<AlarmRecordItem>> dmpResult){
+    public Map<String, Set<String>> categoryObjIdsMap(DmpResult<List<AlarmRecordItem>> dmpResult) {
         List<AlarmRecordItem> alarmRecordItemList = dmpResult.getData();
-        if (CollectionUtils.isEmpty(alarmRecordItemList)){
+        if (CollectionUtils.isEmpty(alarmRecordItemList)) {
             return new HashMap<>();
         }
-        Map<String,Set<String>> categoryObjIdsMap = new HashMap<>();
+        Map<String, Set<String>> categoryObjIdsMap = new HashMap<>();
         alarmRecordItemList.forEach(alarmRecordItem -> {
-            if (categoryObjIdsMap.containsKey(alarmRecordItem.getCategory())){
+            if (categoryObjIdsMap.containsKey(alarmRecordItem.getCategory())) {
                 categoryObjIdsMap.get(alarmRecordItem.getCategory()).add(alarmRecordItem.getObjId());
-            }else{
-                categoryObjIdsMap.put(alarmRecordItem.getCategory(),new HashSet<>(Lists.newArrayList(alarmRecordItem.getObjId())));
+            } else {
+                categoryObjIdsMap.put(alarmRecordItem.getCategory(), new HashSet<>(Lists.newArrayList(alarmRecordItem.getObjId())));
             }
         });
         return categoryObjIdsMap;
@@ -151,7 +151,7 @@ public class AlarmRecordWrapper {
     /**
      * 将报警数据中台返回的一条记录转换为报警服务中台报警记录列表中的一条数据
      *
-     * @param objGroupMap     报警对象id和分组的映射关系
+     * @param categoryObjGroupMap     报警对象id和分组的映射关系
      * @param objMap          报警对象id和报警对象的映射关系
      * @param alarmItemMap    报警类型编码和报警类型的映射关系
      * @param alarmRecordItem 报警数据中台返回的一条报警记录
@@ -160,14 +160,20 @@ public class AlarmRecordWrapper {
      * @version V1.0 2021/9/20 6:21 下午
      */
     private AlarmRecordListItem getAlarmRecordListItem(
-            Map<String, Map<String, SimpleObjVO>> objGroupMap,
+            Map<String, Map<String, SimpleObjVO>> categoryObjGroupMap,
             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.getCategory()).get(alarmRecordItem.getObjId()));
+        //        alarmRecordListItem.setGroup(categoryObjGroupMap.get(alarmRecordItem.getObjId()));
+        if (categoryObjGroupMap != null &&
+                alarmRecordItem.getCategory() != null) {
+            Map<String, SimpleObjVO> objIdGroupMap = categoryObjGroupMap.get(alarmRecordItem.getCategory());
+            if (objIdGroupMap != null) {
+                alarmRecordListItem.setGroup(objIdGroupMap.get(alarmRecordItem.getObjId()));
+            }
+        }
         EquipItem objInfo = objMap.get(alarmRecordItem.getObjId());
         alarmRecordListItem.setObj(new SimpleObjVO(alarmRecordItem.getObjId(),
                 objInfo == null ? null : objInfo.getLocalName()));
@@ -301,10 +307,10 @@ 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,Set<String>> categoryObjIdsMap = new HashMap<>();
-        categoryObjIdsMap.put(alarmRecordItem.getCategory(),new HashSet<>(Lists.newArrayList(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()));
         // 获取这些设备的名称
@@ -406,9 +412,9 @@ public class AlarmRecordWrapper {
     /**
      * 填充 excel文件数据行
      *
-     * @param enumDownloadAlarmListType     报警列表类型
-     * @param sheet                 文件sheet
-     * @param alarmRecordItemVOList 数据列表
+     * @param enumDownloadAlarmListType 报警列表类型
+     * @param sheet                     文件sheet
+     * @param alarmRecordItemVOList     数据列表
      */
     public void fillDataTable(EnumDownloadAlarmListType enumDownloadAlarmListType, XSSFSheet sheet, List<AlarmRecordItemVO> alarmRecordItemVOList) {
         try {
@@ -506,8 +512,8 @@ public class AlarmRecordWrapper {
      * 处理文件标题行
      *
      * @param enumDownloadAlarmListType 报警列表类型
-     * @param sheet             文件sheet
-     * @param wb                文件wb
+     * @param sheet                     文件sheet
+     * @param wb                        文件wb
      */
     public void handleExcelTitle(EnumDownloadAlarmListType enumDownloadAlarmListType, XSSFSheet sheet, XSSFWorkbook wb) {
         XSSFCellStyle cellStyle = wb.createCellStyle();