|
@@ -1,6 +1,8 @@
|
|
|
package com.persagy.dmp.alarm.service;
|
|
|
|
|
|
+import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.persagy.common.criteria.CriteriaUtils;
|
|
|
import com.persagy.common.criteria.JacksonCriteria;
|
|
|
import com.persagy.common.date.DateUtils;
|
|
@@ -10,9 +12,7 @@ import com.persagy.common.web.PagedResponse;
|
|
|
import com.persagy.dmp.alarm.entity.AlarmLog;
|
|
|
import com.persagy.dmp.alarm.entity.AlarmRecord;
|
|
|
import com.persagy.dmp.alarm.entity.QAlarmRecord;
|
|
|
-import com.persagy.dmp.alarm.enumeration.EnumAlarmLogType;
|
|
|
-import com.persagy.dmp.alarm.enumeration.EnumAlarmMessageType;
|
|
|
-import com.persagy.dmp.alarm.enumeration.EnumAlarmRecordWithColumns;
|
|
|
+import com.persagy.dmp.alarm.enumeration.*;
|
|
|
import com.persagy.dmp.alarm.model.AlarmLogModel;
|
|
|
import com.persagy.dmp.alarm.model.AlarmRecordModel;
|
|
|
import com.persagy.dmp.alarm.model.AlarmRecordModels;
|
|
@@ -28,7 +28,6 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -42,8 +41,48 @@ public class AlarmRecordService extends AlarmBaseService {
|
|
|
private CriteriaUtils criteriaUtils;
|
|
|
|
|
|
private List<BooleanExpression> parse(ObjectNode criteria) {
|
|
|
- // TODO
|
|
|
- return null;
|
|
|
+ List<BooleanExpression> expressions = Lists.newLinkedList();
|
|
|
+ QAlarmRecord qAlarmRecord = QAlarmRecord.alarmRecord;
|
|
|
+ // 获取报警列表的类型
|
|
|
+ JsonNode listTypeNode = criteria.get("listType");
|
|
|
+ // 如果查询条件中不包含列表类型走默认的查询方法
|
|
|
+ if (listTypeNode == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String listType = listTypeNode.textValue();
|
|
|
+ // 如果查询当前报警,查询报警状态为“未恢复”且“报警处理状态”为“未处理“或”处理中”中的报警;
|
|
|
+ if (EnumAlarmListType.CURRENT.name().equals(listType)) {
|
|
|
+ BooleanExpression currentAlarmExpression = qAlarmRecord.state.eq(
|
|
|
+ EnumAlarmState.UN_HANDLE.getType()
|
|
|
+ ).and(
|
|
|
+ qAlarmRecord.treatState.eq(
|
|
|
+ EnumAlarmTreatState.UN_HANDLE.getType()
|
|
|
+ ).or(
|
|
|
+ qAlarmRecord.treatState.eq(
|
|
|
+ EnumAlarmTreatState.HANDLING.getType()
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ expressions.add(currentAlarmExpression);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果查询历史报警,查询报警状态为“已恢复”和”已过期”的报警,或者【报警状态等于“未恢复”且报警处理状态等于“处理完成”】的报警
|
|
|
+ if (EnumAlarmListType.HISTORY.name().equals(listType)) {
|
|
|
+ BooleanExpression historyAlarmExpression = qAlarmRecord.state.eq(
|
|
|
+ EnumAlarmState.END.getType()
|
|
|
+ ).or(
|
|
|
+ qAlarmRecord.state.eq(
|
|
|
+ EnumAlarmState.END.getType()
|
|
|
+ )
|
|
|
+ ).or(
|
|
|
+ qAlarmRecord.treatState.eq(
|
|
|
+ EnumAlarmTreatState.DONE.getType()
|
|
|
+ )
|
|
|
+ );
|
|
|
+ expressions.add(historyAlarmExpression);
|
|
|
+ }
|
|
|
+
|
|
|
+ return expressions;
|
|
|
}
|
|
|
|
|
|
public PagedResponse<AlarmRecordModel> query(JacksonCriteria criteria) {
|
|
@@ -58,22 +97,22 @@ public class AlarmRecordService extends AlarmBaseService {
|
|
|
List<String> recordIdList = new ArrayList<>();
|
|
|
dataList.forEach(alarmRecord -> recordIdList.add(alarmRecord.getId()));
|
|
|
//批量获取报警日志集合信息
|
|
|
- Map<String,List<AlarmLog>> alarmLogListMap = alarmLogService.getAlarmLogMap(recordIdList);
|
|
|
+ Map<String, List<AlarmLog>> alarmLogListMap = alarmLogService.getAlarmLogMap(recordIdList);
|
|
|
|
|
|
List<AlarmRecordModel> collect = dataList.stream().map(entity -> {
|
|
|
AlarmRecordModel model = entity.toModel();
|
|
|
List<AlarmLog> alarmLogList = new ArrayList<>();
|
|
|
- if (alarmLogListMap.containsKey(model.getId())){
|
|
|
+ if (alarmLogListMap.containsKey(model.getId())) {
|
|
|
alarmLogList = alarmLogListMap.get(model.getId());
|
|
|
}
|
|
|
if (withColumns != null && withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())) {
|
|
|
-// Date ignoreAlarmTime = alarmLogService.getIgnoreAlarmTime(model.getId());
|
|
|
- Date ignoreAlarmTime = getCreateTime(alarmLogList,EnumAlarmLogType.TREATMODE,1);
|
|
|
+ // Date ignoreAlarmTime = alarmLogService.getIgnoreAlarmTime(model.getId());
|
|
|
+ Date ignoreAlarmTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATMODE, 1);
|
|
|
model.setIgnoreTime(ignoreAlarmTime);
|
|
|
}
|
|
|
if (withColumns != null && withColumns.contains(EnumAlarmRecordWithColumns.treatEndTime.name())) {
|
|
|
-// Date treatEndTime = alarmLogService.getTreatEndTime(model.getId());
|
|
|
- Date treatEndTime = getCreateTime(alarmLogList,EnumAlarmLogType.TREATSTATE,3);
|
|
|
+ // Date treatEndTime = alarmLogService.getTreatEndTime(model.getId());
|
|
|
+ Date treatEndTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATSTATE, 3);
|
|
|
model.setTreatEndTime(treatEndTime);
|
|
|
}
|
|
|
return model;
|
|
@@ -83,11 +122,11 @@ public class AlarmRecordService extends AlarmBaseService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public Date getCreateTime(List<AlarmLog> alarmLogList,EnumAlarmLogType type, int after){
|
|
|
+ public Date getCreateTime(List<AlarmLog> alarmLogList, EnumAlarmLogType type, int after) {
|
|
|
Date createTime = null;
|
|
|
- if (!CollectionUtils.isEmpty(alarmLogList)){
|
|
|
- for (AlarmLog alarmLog:alarmLogList) {
|
|
|
- if (type.equals(alarmLog.getType()) && alarmLog.getAfter() == after){
|
|
|
+ if (!CollectionUtils.isEmpty(alarmLogList)) {
|
|
|
+ for (AlarmLog alarmLog : alarmLogList) {
|
|
|
+ if (type.equals(alarmLog.getType()) && alarmLog.getAfter() == after) {
|
|
|
createTime = alarmLog.getCreateTime();
|
|
|
}
|
|
|
}
|
|
@@ -272,7 +311,7 @@ public class AlarmRecordService extends AlarmBaseService {
|
|
|
msg.setProjectId(DmpParameterStorage.getProjectId());
|
|
|
msg.setTargetId(alarmRecord.getId());
|
|
|
msg.add("obj", JacksonMapper.toSimpleJson(alarmRecord));
|
|
|
-// msg.add("obj", alarmRecord);
|
|
|
+ // msg.add("obj", alarmRecord);
|
|
|
msg.setAppId(DmpParameterStorage.getAppId());
|
|
|
msg.setSendTime(DateUtils.format(new Date()));
|
|
|
response.add(msg);
|