From a595dfcf0251c3e229eb6df21d4b98d98b72cbcb Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 13 Oct 2023 16:48:28 +0800
Subject: [PATCH] fix:补偿提交

---
 screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java |   71 ++++++++++++++++++++++++-----------
 1 files changed, 48 insertions(+), 23 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java
index 8156f7f..7002585 100644
--- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java
@@ -1,30 +1,29 @@
 package com.moral.api.kafka.consumer;
 
+import com.alibaba.fastjson.JSON;
 import com.moral.api.service.*;
+import com.moral.constant.KafkaConstants;
+import com.moral.constant.RedisConstants;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.kafka.clients.consumer.CommitFailedException;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 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.ObjectUtils;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
 
-import com.alibaba.fastjson.JSON;
-import com.moral.constant.KafkaConstants;
-import com.moral.constant.RedisConstants;
 
-/*
- * ���������������������
- * */
 @Component
 @Slf4j
 public class DeviceConsumer {
 
+    @Value("${result.device.list}")
+    private String deviceList;
     @Autowired
     private HistoryMinutelyService historyMinutelyService;
 
@@ -38,16 +37,13 @@
     private RedisTemplate redisTemplate;
 
     @Autowired
-    private HistorySecondSpecialService historySecondSpecialService;
-
-    @Autowired
     private HistorySecondCruiserService historySecondCruiserService;
 
     @Autowired
     private HistorySecondUavService historySecondUavService;
 
     //������������
-    //@KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, containerFactory = "insertListenerContainerFactory")
+    @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, containerFactory = "insertListenerContainerFactory")
     public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
@@ -61,7 +57,7 @@
             }
 
             //������������
-            data.remove("time");
+//            data.remove("time");
             data.remove("entryTime");
             Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator();
             Map<String, Object> newMap = new HashMap<>();
@@ -86,7 +82,7 @@
     }
 
     //������������
-    //@KafkaListener(topics = KafkaConstants.TOPIC_HOUR, containerFactory = "insertListenerContainerFactory")
+    @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, containerFactory = "insertListenerContainerFactory")
     public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
@@ -100,8 +96,27 @@
             }
 
             //������������
-            data.remove("time");
+//            data.remove("time");
             data.remove("entryTime");
+            Map<String, Object> deviceByMac = deviceService.getDeviceByMac(mac.toString());
+            HashMap<String, Object> map = (HashMap<String, Object>) deviceByMac.get("organization");
+            String id = map.get("id").toString();
+            if (id.equals("71")){
+                log.warn(id, msg);
+                ack.acknowledge();
+                return;
+            }
+//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//            String format = dateFormat.format(new Date().getTime());
+//            //������������
+//            String substring = format.substring(0, 4);
+//
+//            String substring1 = time.toString().substring(0, 4);
+//
+//            String replace = time.toString().replace(substring1, substring);
+//
+//            data.put("DataTime",replace);
+
             Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator();
             Map<String, Object> newMap = new HashMap<>();
             Map.Entry<String, Object> next;
@@ -125,31 +140,42 @@
     }
 
     //������������������������������������������������������
-    //@KafkaListener(topics = KafkaConstants.TOPIC_SECOND, containerFactory = "stateListenerContainerFactory")
-    public void listenSecond(ConsumerRecord<String, String> record) {
+    @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, containerFactory = "stateListenerContainerFactory")
+    public void listenSecond(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
+
             Map<String, Object> data = JSON.parseObject(msg, Map.class);
             Object mac = data.get("mac");
             Object time = data.get("DataTime");
             if (ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                 log.warn("some properties is null, param{}", msg);
+                ack.acknowledge();
                 return;
+            }
+            List<String> listDictDevice = Arrays.asList(deviceList.split(","));
+            if(!listDictDevice.contains(mac.toString())){
+                ack.acknowledge();
             }
             //������������
             data.remove("time");
             data.remove("entryTime");
 
             //������������
-            data = deviceService.adjustDeviceData(data);
+            //data = deviceService.adjustDeviceData(data,"0");
             //������redis
             data.put("DataTime", time);
-            redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data);
+            //redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data);
             //���������������������������
             data.put("mac", mac);
+            ack.acknowledge();
             deviceService.judgeDeviceState(data);
+
+        }catch (CommitFailedException e){
+            log.error("param{}" + msg);
         } catch (Exception e) {
             log.error("param{}" + msg);
+            ack.acknowledge();
         }
     }
 
@@ -157,7 +183,6 @@
     @KafkaListener(topics = KafkaConstants.UAV_TOPIC_SECOND, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "insertListenerContainerFactory")
     public void listenSecondSpecial(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
-        System.out.println(msg);
         try {
             Map<String, Object> data = JSON.parseObject(msg, Map.class);
             Object mac = data.get("mac");
@@ -180,7 +205,7 @@
     }
 
     //������������������
-    @KafkaListener(topics = KafkaConstants.CRUISER_TOPIC_SECOND, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "insertListenerContainerFactory")
+    @KafkaListener(topics = KafkaConstants.CRUISER_TOPIC_SECOND, containerFactory = "insertListenerContainerFactory")
     public void listenSecondCruiser(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
@@ -200,7 +225,7 @@
             historySecondCruiserService.insertHistorySecond(data);
             ack.acknowledge();
         } catch (Exception e) {
-            log.error("param{}" + msg);
+            log.error("param{}" + e);
         }
     }
 }

--
Gitblit v1.8.0