Browse Source

Merge remote-tracking branch 'origin/v2.0.0' into v2.0.0

lijie 3 years ago
parent
commit
858c7a5201

+ 14 - 0
dmp-alarm/src/main/java/com/persagy/dmp/alarm/config/WebConfig.java

@@ -2,6 +2,10 @@ package com.persagy.dmp.alarm.config;
 
 import com.persagy.common.json.JacksonMapper;
 import com.persagy.dmp.config.DmpParameterStorage;
+import org.springframework.amqp.core.AcknowledgeMode;
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
 import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
 import org.springframework.amqp.support.converter.MessageConverter;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
@@ -43,4 +47,14 @@ public class WebConfig implements WebMvcConfigurer {
 		return new Jackson2JsonMessageConverter();
 	}
 
+	@Bean
+	public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
+		SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
+		factory.setConnectionFactory(connectionFactory);
+		factory.setMessageConverter(new Jackson2JsonMessageConverter());
+		factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
+		return factory;
+	}
+
+
 }

+ 1 - 1
dmp-alarm/src/main/java/com/persagy/dmp/alarm/jms/RabbitmqConfig.java

@@ -35,7 +35,7 @@ public class RabbitmqConfig {
     /**
      * 报警对象队列
      */
-    private final String alarmConfigQueue = "alarm-config-queue";
+    private final String alarmConfigQueue = "alarm-config-queue1";
 
     @Bean
     public TopicExchange exchange() {

+ 10 - 3
dmp-alarm/src/main/java/com/persagy/dmp/alarm/service/AlarmConfigService.java

@@ -23,6 +23,7 @@ import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.rwd.model.DmpMessage;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -301,7 +302,7 @@ public class AlarmConfigService extends AlarmBaseService {
      */
     private DmpMessage deleteAll(List<AlarmConfig> deletedAlarmConfigs) {
         if (!CollectionUtils.isEmpty(deletedAlarmConfigs)) {
-            DmpMessage message = generateMessage(deletedAlarmConfigs, null);
+            DmpMessage message = generateMessage(null, deletedAlarmConfigs);
             alarmConfigRepository.deleteAll(deletedAlarmConfigs);
             return message;
         }
@@ -738,11 +739,17 @@ public class AlarmConfigService extends AlarmBaseService {
             }
             configs.add(entity);
         }
-        configs = alarmConfigRepository.saveAll(configs);
+        try {
+            configs = alarmConfigRepository.saveAll(configs);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Date date1 = new Date();
+        System.out.println("报警定义存储完成,耗时:"+(date1.getTime() - date.getTime()));
         DmpMessage msg = generateMessage(configs, null);
         messageProcesser.convertAndSend(msg);
         List<String> ids = configs.stream().map(AlarmConfig::getId).collect(Collectors.toList());
-        Date date1 = new Date();
+        date1 = new Date();
         System.out.println("执行时间:" + (date1.getTime() - date.getTime()));
         response.add("ids", ids);
         return response;

+ 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();

+ 0 - 1
dmp-alarm/src/main/resources/bootstrap.yml

@@ -13,7 +13,6 @@ spring:
         jdbc:
           batch_size: 20
         order_inserts: true
-        generate_statistics: true
 persagy:
   log:
     path: ../logs/dmp-alarm/