|
@@ -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,23 +151,29 @@ public class AlarmRecordWrapper {
|
|
|
/**
|
|
|
* 将报警数据中台返回的一条记录转换为报警服务中台报警记录列表中的一条数据
|
|
|
*
|
|
|
- * @param objGroupMap 报警对象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 下午
|
|
|
*/
|
|
|
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()));
|
|
|
// 获取这些设备的名称
|
|
@@ -397,18 +403,62 @@ 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 报警列表类型
|
|
|
- * @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 +556,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();
|