Browse Source

增加根据列表类型查询报警列表的处理

lixing 3 years ago
parent
commit
b5ef9f6287

+ 12 - 0
dmp-alarm/src/main/java/com/persagy/dmp/alarm/enumeration/EnumAlarmListType.java

@@ -0,0 +1,12 @@
+package com.persagy.dmp.alarm.enumeration;
+
+/**
+ * 报警记录列表类型
+ *
+ * @author lixing
+ * @version V1.0 2021/11/17 9:08 下午
+ */
+public enum EnumAlarmListType {
+    CURRENT,
+    HISTORY;
+}

+ 26 - 0
dmp-alarm/src/main/java/com/persagy/dmp/alarm/enumeration/EnumAlarmState.java

@@ -0,0 +1,26 @@
+package com.persagy.dmp.alarm.enumeration;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 报警状态
+ *
+ * @author lixing
+ * @version V1.0 2021/11/17 9:08 下午
+ */
+@AllArgsConstructor
+public enum EnumAlarmState {
+    UN_HANDLE(1, "未恢复"),
+    END(2, "已恢复"),
+    EXPIRE(3, "已过期");
+
+    @Setter
+    @Getter
+    private Integer type;
+
+    @Setter
+    @Getter
+    private String desc;
+}

+ 28 - 0
dmp-alarm/src/main/java/com/persagy/dmp/alarm/enumeration/EnumAlarmTreatState.java

@@ -0,0 +1,28 @@
+package com.persagy.dmp.alarm.enumeration;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 报警处理状态
+ *
+ * @author lixing
+ * @version V1.0 2021/11/17 9:08 下午
+ */
+@AllArgsConstructor
+public enum EnumAlarmTreatState {
+    UN_HANDLE(1, "未处理"),
+    HANDLING(2, "处理中"),
+    DONE(3, "处理完成"),
+    // 用于兼容子系统业务,后期会移除该状态
+    IGNORE(4, "已忽略");
+
+    @Setter
+    @Getter
+    private Integer type;
+
+    @Setter
+    @Getter
+    private String desc;
+}

+ 56 - 17
dmp-alarm/src/main/java/com/persagy/dmp/alarm/service/AlarmRecordService.java

@@ -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);