From faf8649ff22b8af12c758355725389204838e02a Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Thu, 05 Aug 2021 13:23:54 +0800
Subject: [PATCH] 小时缺失数据补充定时任务
---
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 141 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 124 insertions(+), 17 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..55f3f67 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,144 @@
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.Iterator;
+import java.util.Map;
+
+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.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 RedisTemplate redisTemplate;
+
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_MINUTE, 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.remove("time");
+ data.remove("entryTime");
+ Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator();
+ Map<String, Object> newMap = new HashMap<>();
+ Map.Entry<String, Object> next;
+ while (iterator.hasNext()) {
+ next = iterator.next();
+ String key = next.getKey();
+ Object value = next.getValue();
+ if (key.contains("-Avg")) {
+ newMap.put(key.replaceAll("-Avg", ""), Double.parseDouble(value.toString()));
+ } else {
+ newMap.put(key, value);
+ }
+ iterator.remove();
+ }
+ //���������������
+ historyMinutelyService.insertHistoryMinutely(newMap);
ack.acknowledge();
+ } catch (Exception e) {
+ log.error("param{}" + msg);
}
+ }
- }*/
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_HOUR, 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.remove("time");
+ data.remove("entryTime");
+ Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator();
+ Map<String, Object> newMap = new HashMap<>();
+ Map.Entry<String, Object> next;
+ while (iterator.hasNext()) {
+ next = iterator.next();
+ String key = next.getKey();
+ Object value = next.getValue();
+ if (key.contains("-Avg")) {
+ newMap.put(key.replaceAll("-Avg", ""), Double.parseDouble(value.toString()));
+ } else {
+ newMap.put(key, value);
+ }
+ iterator.remove();
+ }
+ //���������������
+ historyHourlyService.insertHistoryHourly(newMap);
+ ack.acknowledge();
+ } catch (Exception e) {
+ log.error("param{}" + msg);
+ }
+ }
-
-
-
+ //������������������������������������������������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_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 = deviceService.adjustDeviceData(data);
+ //������redis
+ redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data);
+ //���������������������������
+ deviceService.judgeDeviceState(data);
+ ack.acknowledge();
+ } catch (Exception e) {
+ log.error("param{}" + msg);
+ }
+ }
}
--
Gitblit v1.8.0