From 11d10fc9ca90ec29159738c1eac5e2d9203d8bb6 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 28 Jul 2021 09:14:12 +0800
Subject: [PATCH] screen-api                 kafka消费者组id从配置文件获取 screen-manage                 除admin角色外无法查看admin角色

---
 screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java                       |    2 
 screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java                                 |    2 
 screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java                             |    9 +++
 screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java                    |   46 ++++++++++-----
 screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java                               |   45 +++++++++++++++
 screen-api/src/main/resources/application-dev.yml                                                          |    2 
 screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java |    2 
 screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java                                 |    3 
 screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java                              |   25 ++++---
 screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java                          |   16 +++++
 10 files changed, 123 insertions(+), 29 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java b/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
index a4b55c1..cc68807 100644
--- a/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
+++ b/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
@@ -29,6 +29,8 @@
     private String autoOffsetReset;
     @Value("${kafka.consumer.concurrency}")
     private int concurrency;
+    @Value("${kafka.groupId.second-data}")
+    private String secondDataGroupId;
 
     @Bean
     public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
@@ -42,8 +44,51 @@
     public ConsumerFactory<String, String> consumerFactory() {
         return new DefaultKafkaConsumerFactory<>(consumerConfigs());
     }
+    
+    @Bean("secondDataListenerFactory")
+    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> secondDataListenerFactory(){
+        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
+        factory.setConsumerFactory(secondDataConsumerFactory());//���������������������
+        factory.setConcurrency(concurrency);//���������������
+        factory.getContainerProperties().setPollTimeout(1500);//������������������������������
+        return factory;
+    }
+
+    /**
+    * @Description: ������������������
+            * @Param: []
+            * @return: org.springframework.kafka.core.ConsumerFactory<java.lang.String,java.lang.String>
+            * @Author: ���������
+            * @Date: 2021/7/19
+            */
+    public ConsumerFactory<String,String> secondDataConsumerFactory(){
+        Map<String, Object> commonConfig = consumerConfigs();
+        Map<String, Object> secondDataConfig = secondConsumerConfigs();
+        secondDataConfig.putAll(commonConfig);
+        return new DefaultKafkaConsumerFactory<>(secondDataConfig);
+    }
+
+    /**
+    * @Description: ���������������������
+            * @Param: []
+            * @return: java.util.Map<java.lang.String,java.lang.Object>
+            * @Author: ���������
+            * @Date: 2021/7/19
+            */
+    public Map<String,Object> secondConsumerConfigs(){
+        Map<String, Object> propsMap = new HashMap<>();
+        propsMap.put(ConsumerConfig.GROUP_ID_CONFIG,secondDataGroupId);
+        return propsMap;
+    }
 
 
+    /**
+    * @Description: ������������
+            * @Param: []
+            * @return: java.util.Map<java.lang.String,java.lang.Object>
+            * @Author: ���������
+            * @Date: 2021/7/19
+            */
     public Map<String, Object> consumerConfigs() {
         Map<String, Object> propsMap = new HashMap<>();
         propsMap.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
diff --git a/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java
index c11637f..3ef66f3 100644
--- a/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java
@@ -36,11 +36,11 @@
 
     @GetMapping("queryDeviceAndData")
     public ResultMessage queryDeviceAndData(QueryDeviceAndFiveMinuteDataForm form){
-        //18 110100
         //������������������������
         if (!form.valid())
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
         //������������������
         List<DeviceAndFiveMinuteDataDTO> dto = historyFiveMinutelyService.queryDeviceAndFiveMinuteData(form);
 
diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
index 9439f3a..c105c2f 100644
--- a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
@@ -6,9 +6,12 @@
 import com.moral.api.entity.UnitConversion;
 import com.moral.api.websocket.SingleDeviceServer;
 import com.moral.util.UnitConvertUtils;
+import lombok.AllArgsConstructor;
 import org.apache.kafka.clients.consumer.Consumer;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.apache.kafka.common.TopicPartition;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.kafka.listener.ConsumerSeekAware;
 import org.springframework.stereotype.Component;
@@ -29,7 +32,7 @@
 @Component
 public class SecondDataConsumer implements ConsumerSeekAware {
 
-    @KafkaListener(topics = "second_data", groupId = "SecondsDataGroup996")
+    @KafkaListener(containerFactory = "secondDataListenerFactory",topics = "second_data")
     public void listen(ConsumerRecord<String, String> record, Consumer consumer) throws Exception {
         String messageStr = record.value();
         Map<String, Object> message = (Map<String, Object>) JSON.parse(messageStr);
@@ -39,7 +42,7 @@
             //���������������������������socket
             String messageMac = (String) message.get("mac");
             String mac = socket.getMac();
-            if(!mac.equalsIgnoreCase(messageMac))
+            if (!mac.equalsIgnoreCase(messageMac))
                 continue;
             //������������������
             Map<String, Device> devicesInfo = socket.getDevicesInfo();
@@ -70,22 +73,22 @@
                     //������������
                     String resultData = UnitConvertUtils.calculate(sourceData, formula);
                     if (resultData != null) {
-                        resultData+=showUnit;
-                    }else{//���������������������������null���������������������������������������������������������������
-                        resultData = sourceData+unit;
+                        resultData += showUnit;
+                    } else {//���������������������������null���������������������������������������������������������������
+                        resultData = sourceData + unit;
                     }
                     resultMessgae.put(sensor.getCode(), resultData);
                 } else {
                     //������������
-                    sourceData += showUnit;
+                    sourceData = sourceData + " " + showUnit;
                     resultMessgae.put(sensor.getCode(), sourceData);
                 }
             }
-            resultMessgae.put("DataTime",message.get("DataTime"));
-            resultMessgae.put("time",message.get("time"));
-            resultMessgae.put("time1",message.get("time1"));
-            resultMessgae.put("serverTime",System.currentTimeMillis());
-            resultMessgae.put("serverStartTime",serverStartTime);
+            resultMessgae.put("DataTime", message.get("DataTime"));
+            resultMessgae.put("time", message.get("time"));
+            resultMessgae.put("time1", message.get("time1"));
+            resultMessgae.put("serverTime", System.currentTimeMillis());
+            resultMessgae.put("serverStartTime", serverStartTime);
             socket.sendMessage(JSON.toJSONString(resultMessgae));
         }
     }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java
index 6ca5be0..7e562fb 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java
@@ -26,4 +26,6 @@
             return false;
         return true;
     }
+
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
index aaefcd2..0021494 100644
--- a/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
+++ b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
@@ -27,6 +27,15 @@
             */
     List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form);
 
+    /**
+    * @Description: ������������������������������������������
+            * @Param: [mac]
+            * @return: java.util.List<com.moral.api.entity.HistoryFiveMinutely>
+            * @Author: ���������
+            * @Date: 2021/7/23
+            */
+    HistoryFiveMinutely queryLastDataByMac(String mac);
+
     //������5������������������
     List<Object> getAreaWindData(Map<String,Object> params);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index 8c3dc7e..2995c31 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -40,8 +40,8 @@
     @Override
     public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
         QueryWrapper<Device> wrapper = new QueryWrapper();
+        wrapper.eq("monitor_point_id",monitorPointId);
         wrapper.eq("is_delete", Constants.NOT_DELETE);
-        wrapper.eq("monitor_point_id", monitorPointId);
         List<Device> devices = deviceMapper.selectList(wrapper);
         return devices;
     }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
index dac6205..3f0c77f 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -1,6 +1,8 @@
 package com.moral.api.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.Device;
 import com.moral.api.entity.HistoryFiveMinutely;
 import com.moral.api.entity.MonitorPoint;
@@ -14,19 +16,13 @@
 import com.moral.api.service.MonitorPointService;
 import com.moral.constant.RedisConstants;
 import com.moral.util.DateUtils;
-
 import io.lettuce.core.GeoCoordinates;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -41,12 +37,10 @@
 
     @Autowired
     MonitorPointService monitorPointService;
-
     @Autowired
     RedisTemplate redisTemplate;
-
     @Autowired
-    private HistoryFiveMinutelyMapper historyFiveMinutelyMapper;
+    HistoryFiveMinutelyMapper historyFiveMinutelyMapper;
 
     @Override
     public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
@@ -67,18 +61,36 @@
         for (Device device : devices) {
             DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO();
             String mac = device.getMac();
+            //������������������
             Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac);
-            Map<String, Object> value = new HashMap<>();
-            if (sensorValues != null && sensorValues.get(sensorCode) != null)
-                value.put(sensorCode, sensorValues.get(sensorCode));
+            //������������������������������������
+            HistoryFiveMinutely dbHistoryFiveMinutely = queryLastDataByMac(mac);
+            String dbDataStr = dbHistoryFiveMinutely.getValue();
+            sensorValues = JSON.parseObject(dbDataStr, HashMap.class);
+            Map<String,Object> sensorValue = new HashMap<>();
+            if (sensorValues!=null&&sensorValues.get(sensorCode) != null)
+                sensorValue.put(sensorCode,sensorValues.get(sensorCode));
             else
-                value.put(sensorCode, null);
+                sensorValue.put(sensorCode,null);
             dto.setDevice(device);
-            dto.setSensorValue(value);
+            dto.setSensorValue(sensorValue);
             dtos.add(dto);
         }
         return dtos;
     }
+
+    @Override
+    public HistoryFiveMinutely queryLastDataByMac(String mac) {
+        QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("mac",mac);
+        queryWrapper.orderByDesc("time");
+        queryWrapper.last("limit 0,1");
+        List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyMapper.selectList(queryWrapper);
+        if(ObjectUtils.isEmpty(historyFiveMinutelies))
+            return null;
+        return historyFiveMinutelies.get(0);
+    }
+
 
     @Override
     public List<Object> getAreaWindData(Map<String, Object> params) {
@@ -272,4 +284,8 @@
         list.add(laLaMap);
         return list;
     }
+
+
+
+
 }
diff --git a/screen-api/src/main/resources/application-dev.yml b/screen-api/src/main/resources/application-dev.yml
index e8c8b6b..730e702 100644
--- a/screen-api/src/main/resources/application-dev.yml
+++ b/screen-api/src/main/resources/application-dev.yml
@@ -105,6 +105,8 @@
     linger: 1
     retries: 0
     servers: 172.16.44.65:9092,172.16.44.67:9092,172.16.44.66:9092
+  groupId:
+    second-data: SecondsDataGroup
 mvc:
   interceptor:
     exclude:
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index eae61a6..704348c 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -40,6 +40,7 @@
     public void judgeOffLineDevice() {
         QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
         queryWrapper.ne("state", Constants.DEVICE_STATE_OFFLINE);
+        queryWrapper.eq("is_delete",Constants.NOT_DELETE);
         //������������������������
         List<Device> devices = deviceMapper.selectList(queryWrapper);
         for (Device device : devices) {
@@ -64,4 +65,4 @@
         updateWrapper.eq("id", device.getId()).set("state", device.getState());
         deviceMapper.update(null, updateWrapper);
     }
-}
+}
\ No newline at end of file
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
index 4877afb..5655859 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
@@ -4,11 +4,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.*;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import com.moral.api.service.ManageRoleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.util.LogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
+import com.moral.util.TokenUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,6 +23,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Predicate;
 
 /**
  * <p>
@@ -79,6 +82,19 @@
             manageRoleMap.put("key",manageRole.getId());
             manageRolesList.add(manageRoleMap);
         }
+        //���admin���������  admin���������������
+        AccountInfoDTO accountInfo = (AccountInfoDTO) TokenUtils.getUserInfo();
+        List<ManageRole> roles = accountInfo.getRoles();
+        if(!roles.get(0).getName().equals("admin")){
+            manageRolesList.removeIf(new Predicate<Map<String, Object>>() {
+                @Override
+                public boolean test(Map<String, Object> map) {
+                    if(map.get("name").equals("admin"))
+                        return true;
+                    return false;
+                }
+            });
+        }
         resultMap.put("manageRoles",manageRolesList);
         int totalNumber = manageRoleMapper.selectCount(wrapper);
         resultMap.put("totalNumber",totalNumber);

--
Gitblit v1.8.0