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