Browse Source

批量下载报警记录,文件中报警记录按页面上报警记录的顺序排序

lixing 3 years ago
parent
commit
75ef134e9b

+ 50 - 6
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/service/AlarmRecordWrapper.java

@@ -151,10 +151,10 @@ public class AlarmRecordWrapper {
     /**
      * 将报警数据中台返回的一条记录转换为报警服务中台报警记录列表中的一条数据
      *
-     * @param categoryObjGroupMap     报警对象id和分组的映射关系
-     * @param objMap          报警对象id和报警对象的映射关系
-     * @param alarmItemMap    报警类型编码和报警类型的映射关系
-     * @param alarmRecordItem 报警数据中台返回的一条报警记录
+     * @param categoryObjGroupMap 报警对象id和分组的映射关系
+     * @param objMap              报警对象id和报警对象的映射关系
+     * @param alarmItemMap        报警类型编码和报警类型的映射关系
+     * @param alarmRecordItem     报警数据中台返回的一条报警记录
      * @return 报警服务中台报警记录列表中的一条数据
      * @author lixing
      * @version V1.0 2021/9/20 6:21 下午
@@ -403,13 +403,57 @@ public class AlarmRecordWrapper {
         QueryAlarmRecordDTO queryAlarmRecordDTO = new QueryAlarmRecordDTO();
         queryAlarmRecordDTO.setId(recordIdList);
         DmpResult<List<AlarmRecordItem>> result = alarmRecordService.query(queryAlarmRecordDTO);
-        if (result == null) {
+        List<AlarmRecordItem> data = result.getData();
+        if (result == null || data == null) {
             return null;
         }
-        return result.getData();
+        // recordList按recordIdList排序
+        setListOrder(recordIdList, data);
+        return data;
     }
 
     /**
+     * recordList按recordIdList排序
+     *
+     * @param recordIdList 报警记录id列表
+     * @param recordList 报警记录列表
+     * @author lixing
+     * @version V1.0 2022/1/12 2:56 下午
+     */
+    private void setListOrder(List<String> recordIdList, List<AlarmRecordItem> recordList) {
+        if (CollectionUtils.isEmpty(recordIdList) || CollectionUtils.isEmpty(recordList)) {
+            return;
+        }
+
+        recordList.sort((o1, o2) -> {
+            int io1 = recordIdList.indexOf(o1.getId());
+            int io2 = recordIdList.indexOf(o2.getId());
+
+            if (io1 != -1) {
+                io1 = recordList.size() - io1;
+            }
+            if (io2 != -1) {
+                io2 = recordList.size() - io2;
+            }
+
+            return io2 - io1;
+        });
+    }
+
+//    public static void main(String[] args) {
+//        List<String> idList = Lists.newArrayList("3", "1", "2");
+//        AlarmRecordItem record1 = new AlarmRecordItem();
+//        record1.setId("1");
+//        AlarmRecordItem record2 = new AlarmRecordItem();
+//        record2.setId("2");
+//        AlarmRecordItem record3 = new AlarmRecordItem();
+//        record3.setId("3");
+//        List<AlarmRecordItem> recordList = Lists.newArrayList(record1, record2, record3);
+//        setListOrder(idList, recordList);
+//        System.out.println(recordList);
+//    }
+
+    /**
      * 填充 excel文件数据行
      *
      * @param enumDownloadAlarmListType 报警列表类型