From 69d00365e9f099b26c4fc7a298cabeb131956d8a Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 23 Jun 2021 14:35:05 +0800
Subject: [PATCH] 定时任务,kafka

---
 screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java |  127 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 109 insertions(+), 18 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
index af6c8cc..cc98e98 100644
--- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -1,37 +1,128 @@
 package com.moral.api.kafka.consumer;
 
-import com.moral.api.constant.TopicConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.kafka.support.Acknowledgment;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
-import java.util.Random;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
 
-@Component
+import com.alibaba.fastjson.JSON;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistoryHourlyService;
+import com.moral.api.service.HistoryMinutelyService;
+import com.moral.api.util.AdjustDataUtils;
+import com.moral.constant.KafkaConstants;
+import com.moral.constant.RedisConstants;
+
+//@Component
 @Slf4j
 public class KafkaConsumer {
 
-/*    *//**
-     * ���������������������������������
-     * @param record
-     * @param ack
-     * @throws Exception
-     *//*
-    @KafkaListener(topics = TopicConstants.TEST_TOPIC_MESSAGE,groupId = "test")
-    public void listenTest(ConsumerRecord<String, String> record , Acknowledgment ack) throws Exception {
+    @Autowired
+    private HistoryMinutelyService historyMinutelyService;
+
+    @Autowired
+    private HistoryHourlyService historyHourlyService;
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private AdjustDataUtils adjustDataUtils;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    //������������
+    @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_ID_INSERT, containerFactory = "kafkaListenerContainerFactory")
+    public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
-        System.out.println(msg);
-        if (new Random().nextInt(100)<50){
-            log.info(String.format("kafka ������������������---------------- listen1 topic = %s, offset = %d, value = %s ", record.topic(), record.offset(), record.value()));
+        try {
+            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Object mac = data.get("mac");
+            Object time = data.get("DataTime");
+            Object ver = data.get("ver");
+            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+                log.warn("some properties is null, param{}", msg);
+                ack.acknowledge();
+                return;
+            }
+
+            //������������
+            data = data.entrySet().stream()
+                    .filter(map -> {
+                        String key = map.getKey();
+                        return !(key.contains("Min") || key.contains("Max") || key.contains("Cou"));
+                    }).collect(Collectors.toMap(m -> m.getKey().replaceAll("-Avg", ""), Map.Entry::getValue));
+            data.remove("time");
+            //���������������
+            historyMinutelyService.insertHistoryMinutely(data);
             ack.acknowledge();
+        } catch (Exception e) {
+            //log.error("param{}" + msg);
         }
+    }
 
-    }*/
+    //������������
+    @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_ID_INSERT, containerFactory = "kafkaListenerContainerFactory")
+    public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) {
+        String msg = record.value();
+        try {
+            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Object mac = data.get("mac");
+            Object time = data.get("DataTime");
+            Object ver = data.get("ver");
+            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+                log.warn("some properties is null, param{}", msg);
+                ack.acknowledge();
+                return;
+            }
 
+            //������������
+            data = data.entrySet().stream()
+                    .filter(map -> {
+                        String key = map.getKey();
+                        return !(key.contains("Min") || key.contains("Max") || key.contains("Cou"));
+                    }).collect(Collectors.toMap(m -> m.getKey().replaceAll("-Avg", ""), Map.Entry::getValue));
+            data.remove("time");
+            //���������������
+            historyHourlyService.insertHistoryHourly(data);
+            ack.acknowledge();
+        } catch (Exception e) {
+            //log.error("param{}" + msg);
+        }
+    }
 
-
-
-
+    //������������������������������������������������������
+    @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_ID_STATE, containerFactory = "kafkaListenerContainerFactory")
+    public void listenSecond(ConsumerRecord<String, String> record, Acknowledgment ack) {
+        String msg = record.value();
+        try {
+            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Object mac = data.get("mac");
+            Object time = data.get("DataTime");
+            Object ver = data.get("ver");
+            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+                log.warn("some properties is null, param{}", msg);
+                ack.acknowledge();
+                return;
+            }
+            //������������
+            data = adjustDataUtils.adjust(data);
+            //������redis
+            redisTemplate.opsForValue().set(RedisConstants.DEVICE_DATA + "_" + mac, data);
+            //���������������������������
+            deviceService.judgeDeviceState(data);
+            ack.acknowledge();
+        } catch (Exception e) {
+            //log.error("param{}" + msg);
+        }
+    }
 }

--
Gitblit v1.8.0