Bladeren bron

修改查询报警记录逻辑

miaolijing 3 jaren geleden
bovenliggende
commit
897ad3e4db

+ 25 - 3
dmp-alarm/src/main/java/com/persagy/dmp/alarm/service/AlarmLogService.java

@@ -16,9 +16,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.transaction.Transactional;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -76,6 +74,30 @@ public class AlarmLogService extends AlarmBaseService {
 		}
 	}
 
+    /**
+     * 根据报警记录id批量获取 日志信息集合
+     * @param recordIdList
+     * @return
+     */
+    public Map<String,List<AlarmLog>> getAlarmLogMap(List<String> recordIdList) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.add("recordId", recordIdList);
+        PagedResponse<AlarmLog> resp = criteriaUtils.query(QAlarmLog.alarmLog, this::parse, criteria);
+        List<AlarmLog> logs = resp.getData();
+        if (CollectionUtils.isEmpty(logs)) {
+            return new HashMap<>();
+        } else {
+            Map<String,List<AlarmLog>> alarmLogListMap = new HashMap<>();
+            logs.forEach(alarmLog -> {
+                if (!alarmLogListMap.containsKey(alarmLog.getRecordId())){
+                    alarmLogListMap.put(alarmLog.getRecordId(),new ArrayList<>());
+                }
+                alarmLogListMap.get(alarmLog.getRecordId()).add(alarmLog);
+            });
+           return alarmLogListMap;
+        }
+    }
+
 	/**
 	 * @description: 获取忽略报警的时间
 	 * @param: recordId

+ 28 - 2
dmp-alarm/src/main/java/com/persagy/dmp/alarm/service/AlarmRecordService.java

@@ -7,6 +7,7 @@ import com.persagy.common.date.DateUtils;
 import com.persagy.common.json.JacksonMapper;
 import com.persagy.common.web.MapResponse;
 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;
@@ -27,6 +28,7 @@ import org.springframework.util.StringUtils;
 
 import javax.transaction.Transactional;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 @Service
@@ -52,14 +54,26 @@ public class AlarmRecordService extends AlarmBaseService {
         // 如果需要查询日志相关的信息,需使用withColumns参数
         Set<String> withColumns = criteria.getWithColumns();
         if (dataList != null && dataList.size() > 0) {
+            //获取报警记录id列表
+            List<String> recordIdList = new ArrayList<>();
+            dataList.forEach(alarmRecord -> recordIdList.add(alarmRecord.getId()));
+            //批量获取报警日志集合信息
+            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())){
+                    alarmLogList = alarmLogListMap.get(model.getId());
+                }
                 if (withColumns != null && withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())) {
-                    Date ignoreAlarmTime = alarmLogService.getIgnoreAlarmTime(model.getId());
+//                  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 = alarmLogService.getTreatEndTime(model.getId());
+                    Date treatEndTime = getCreateTime(alarmLogList,EnumAlarmLogType.TREATSTATE,3);
                     model.setTreatEndTime(treatEndTime);
                 }
                 return model;
@@ -69,6 +83,18 @@ public class AlarmRecordService extends AlarmBaseService {
         return result;
     }
 
+    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){
+                    createTime = alarmLog.getCreateTime();
+                }
+            }
+        }
+        return createTime;
+    }
+
     @Transactional
     public MapResponse create(AlarmRecordModel param) {
         MapResponse response = new MapResponse();