From 327267727c36cef76ee554e1ad97099180cd4f13 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Tue, 13 Jul 2021 09:08:37 +0800
Subject: [PATCH] screen-manage 单位转换信息添加缓存
---
screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java | 22 ++
screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java | 17 +-
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java | 10 +
screen-api/src/main/java/com/moral/api/service/UnitConversionService.java | 16 ++
screen-manage/src/main/java/com/moral/api/controller/TestController.java | 12 +
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 2
screen-api/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 12 -
screen-api/src/main/java/com/moral/api/entity/UnitConversion.java | 74 ++++++++++
screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java | 9 +
screen-api/src/main/resources/mapper/UnitConversionMapper.xml | 17 ++
screen-api/src/main/java/com/moral/api/mapper/UnitConversionMapper.java | 16 ++
screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java | 20 ++
screen-common/src/main/java/com/moral/constant/RedisConstants.java | 6
screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java | 18 ++
screen-api/src/main/resources/application-local.yml | 119 +++++++++++++++++
15 files changed, 344 insertions(+), 26 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java b/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java
new file mode 100644
index 0000000..962842d
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java
@@ -0,0 +1,74 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class UnitConversion extends Model<UnitConversion> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * ���������������
+ */
+ private String originalUnitKey;
+
+ /**
+ * ���������������
+ */
+ private Integer targetUnitKey;
+
+ /**
+ * ������������
+ */
+ private String formula;
+
+ /**
+ * ������null������������������������������������������code���������������������������������������
+ */
+ private String sensorCode;
+
+ /**
+ * ������������
+ */
+ private Date createTime;
+
+ /**
+ * ������������
+ */
+ private Date updateTime;
+
+ /**
+ * ������������
+ */
+ private String isDelete;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
index af6c8cc..fc0e81c 100644
--- a/screen-api/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -1,13 +1,7 @@
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.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
import org.springframework.stereotype.Component;
-
-import java.util.Random;
@Component
@Slf4j
@@ -27,11 +21,5 @@
log.info(String.format("kafka ������������������---------------- listen1 topic = %s, offset = %d, value = %s ", record.topic(), record.offset(), record.value()));
ack.acknowledge();
}
-
}*/
-
-
-
-
-
}
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 63edfa1..49ac907 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
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.moral.api.entity.Device;
import com.moral.api.entity.Sensor;
+import com.moral.api.entity.UnitConversion;
import com.moral.api.websocket.SingleDeviceServer;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
@@ -10,6 +11,7 @@
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.listener.ConsumerSeekAware;
import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.List;
@@ -30,7 +32,6 @@
public void listen(ConsumerRecord<String, String> record , Consumer consumer) throws Exception {
String messageStr = record.value();
Map<String,String> message = (Map<String,String>)JSON.parse(messageStr);
- //System.out.println(message);
CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets;
for (SingleDeviceServer socket : sockets) {
//���������������������������socket
@@ -44,9 +45,21 @@
List<Sensor> sensors = device.getVersion().getSensors();//������������������������������
for (Sensor sensor : sensors) {
String code = sensor.getCode();
- String showUnit = sensor.getShowUnit();
+ String showUnitKey = sensor.getShowUnitKey();
+ String unitKey = sensor.getUnitKey();
+ //������������
//������������
+ if(!unitKey.equals(showUnitKey)){
+ String formula = sensor.getFormula();
+ if(ObjectUtils.isEmpty(formula)){
+ List<UnitConversion> unitConversions = socket.getUnitConversions();
+ System.out.println(unitConversions);
+ }else{
+
+ }
+ }
//������������
+ String showUnit = sensor.getShowUnit();
String value = message.get(code);
value+=showUnit;
resultMessgae.put(sensor.getCode(),value);
@@ -72,3 +85,4 @@
}
}
+
diff --git a/screen-api/src/main/java/com/moral/api/mapper/UnitConversionMapper.java b/screen-api/src/main/java/com/moral/api/mapper/UnitConversionMapper.java
new file mode 100644
index 0000000..b990f04
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/UnitConversionMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.UnitConversion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-12
+ */
+public interface UnitConversionMapper extends BaseMapper<UnitConversion> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java b/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java
new file mode 100644
index 0000000..58a7af6
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java
@@ -0,0 +1,16 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.UnitConversion;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-12
+ */
+public interface UnitConversionService extends IService<UnitConversion> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
new file mode 100644
index 0000000..cfe384d
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.UnitConversion;
+import com.moral.api.mapper.UnitConversionMapper;
+import com.moral.api.service.UnitConversionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ��������������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-12
+ */
+@Service
+public class UnitConversionServiceImpl extends ServiceImpl<UnitConversionMapper, UnitConversion> implements UnitConversionService {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
index 7419fbf..748efc3 100644
--- a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
+++ b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
@@ -2,6 +2,7 @@
import com.moral.api.entity.Device;
import com.moral.api.entity.Sensor;
+import com.moral.api.entity.UnitConversion;
import com.moral.constant.RedisConstants;
import lombok.Data;
import org.springframework.data.redis.core.RedisTemplate;
@@ -30,22 +31,25 @@
//���������������������������������server������
public static CopyOnWriteArraySet<SingleDeviceServer> sockets = new CopyOnWriteArraySet<>();
+ public static RedisTemplate redisTemplate;
+
private Session session;
private String mac;
- public static RedisTemplate redisTemplate;
+ private Map<String, Device> devicesInfo;
- private Map<String,Device> devicesInfo;
+ private List<UnitConversion> unitConversions;
@OnOpen
public void onOpen(Session session, @PathParam("mac") String mac) throws Exception {
this.session = session;
this.mac = mac;
this.devicesInfo = redisTemplate.opsForHash().entries(RedisConstants.DEVICE_INFO);
+ this.unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1);
sockets.add(this);
System.out.println(mac);
- }
+}
@OnClose
public void onClose() {
@@ -63,11 +67,10 @@
public void sendMessage(String message) throws Exception {
if (this.session.isOpen()) {
- synchronized (session) {
- this.session.getBasicRemote().sendText(message);
- }
+ // synchronized (session) {
+ this.session.getBasicRemote().sendText(message);
+ // }
}
}
-
}
diff --git a/screen-api/src/main/resources/application-local.yml b/screen-api/src/main/resources/application-local.yml
new file mode 100644
index 0000000..23c69e1
--- /dev/null
+++ b/screen-api/src/main/resources/application-local.yml
@@ -0,0 +1,119 @@
+server:
+ port: 8081
+ tomcat:
+ uri-encoding: UTF-8
+ #���������������
+ min-spare-threads: 500
+ #���������������
+ max-threads: 2500
+ #���������������
+ max-connections: 6500
+ #������������������������
+ accept-count: 1000
+spring:
+ profiles:
+ active: dev
+ application:
+ name: screen-manage
+ redis:
+ host: r-bp1xdlb9wfc6zt0msppd.redis.rds.aliyuncs.com
+ port: 6379
+ password: moral_123456
+ timeout: 30000
+ jedis:
+ pool:
+ max-active: 256
+ max-wait: 30000
+ max-idle: 64
+ min-idle: 32
+ lettuce:
+ pool:
+ max-active: 256
+ max-idle: 64
+ max-wait: 30000
+ min-idle: 32
+ tokenRedis:
+ host: r-bp1xdlb9wfc6zt0msppd.redis.rds.aliyuncs.com
+ port: 6379
+ password: moral_123456
+ timeout: 30000
+ database: 15
+ pool:
+ max-active: 256
+ max-wait: 30000
+ max-idle: 64
+ min-idle: 32
+
+ datasource:
+ minIdle: 1
+ time-between-eviction-runs-millis: 60000
+ max-active: 20
+ test-while-idle: true
+ validation-query: select 'x'
+ filters: stat
+ type: com.alibaba.druid.pool.DruidDataSource
+ max-wait: 60000
+ url: jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: root
+ password: moral_123456
+ test-on-borrow: false
+ sql-script-encoding: utf-8
+ pool-prepared-statements: true
+ min-evictable-idle-time-millis: 300000
+ initial-size: 1
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ max-conn-lifetime-millis: 20
+ test-on-return: false
+
+mybatis-plus:
+ mapper-locations: classpath:mapper/*.xml
+ global-config:
+ db-config:
+ id-type: auto
+ field-strategy: NOT_EMPTY
+ db-type: MYSQL
+ configuration:
+ map-underscore-to-camel-case: true
+ call-setters-on-nulls: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+kafka:
+ listener:
+ ack-mode: manual_immediate
+ consumer:
+ auto:
+ offset:
+ reset: latest
+ concurrency: 3
+ enable:
+ auto:
+ commit: false
+ servers: 47.99.145.48:9092,47.111.116.38:9092,47.111.124.159:9092
+ session:
+ timeout: 6000
+ zookeeper:
+ connect: 47.99.145.48:2181,47.111.116.38:2181,47.111.124.159:2181
+ producer:
+ batch:
+ size: 4096
+ buffer:
+ memory: 40960
+ linger: 1
+ retries: 0
+ servers: 47.99.145.48:9092,47.111.116.38:9092,47.111.124.159:9092
+mvc:
+ interceptor:
+ exclude:
+ - /login
+ - /swagger-ui.html
+ - /swagger-resources/**
+ - /swagger-ui.html/**
+ - /webjars/**
+ - /verificationCode/**
+
+AES:
+ KEY:
+ AD42F7787B035B7580000EF93BE20BAD
+TOKEN:
+ KEY:
+ foh3wi2ooghiCh5
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/UnitConversionMapper.xml b/screen-api/src/main/resources/mapper/UnitConversionMapper.xml
new file mode 100644
index 0000000..d1c7248
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/UnitConversionMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.UnitConversionMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.UnitConversion">
+ <id column="id" property="id" />
+ <result column="original_unit_key" property="originalUnitKey" />
+ <result column="target_unit_key" property="targetUnitKey" />
+ <result column="formula" property="formula" />
+ <result column="sensor_code" property="sensorCode" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-common/src/main/java/com/moral/constant/RedisConstants.java b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
index 4066f8f..40ad154 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -58,5 +58,11 @@
* */
public static final String AQI_DATA = "aqi_data";
+ /*
+ * ������������������
+ * ������������List<UnitConversion>
+ * */
+ public static final String UNIT_CONVERSION = "unit_conversion";
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/TestController.java b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
index 8178082..43b908a 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -4,12 +4,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.Test;
+import com.moral.api.entity.UnitConversion;
import com.moral.api.service.SensorService;
import com.moral.api.service.TestService;
import com.moral.api.service.impl.SensorServiceImpl;
import com.moral.api.util.CacheUtils;
import com.moral.constant.Constants;
import com.moral.constant.KafkaConstants;
+import com.moral.constant.RedisConstants;
import com.moral.constant.ResultMessage;
import com.moral.redis.RedisUtil;
import com.moral.util.PageResult;
@@ -22,6 +24,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.*;
@@ -42,6 +45,9 @@
@Resource
private TestService testService;
+
+ @Autowired
+ RedisTemplate redisTemplate;
/**
* name ������
@@ -206,4 +212,10 @@
}
}
+ @GetMapping("test")
+ public void test(){
+ List<UnitConversion> range = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1);
+ System.out.println(range);
+ }
+
}
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 4d1f804..c257205 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
@@ -20,7 +20,7 @@
import com.moral.constant.KafkaConstants;
import com.moral.constant.RedisConstants;
-@Component
+//@Component
@Slf4j
public class KafkaConsumer {
diff --git a/screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java b/screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java
index 4da67ea..51b2d38 100644
--- a/screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java
@@ -55,4 +55,13 @@
*/
UnitConversionDTO deleteUnitConversion(UnitConversionDeleteForm form);
+ /**
+ * @Description: ������������������
+ * @Param: []
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/7/12
+ */
+ void refreshCache();
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
index 75593af..408c168 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
@@ -18,9 +18,11 @@
import com.moral.api.service.UnitConversionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.ConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@@ -44,6 +46,8 @@
UnitConversionMapper unitConversionMapper;
@Autowired
SysDictDataService sysDictDataService;
+ @Autowired
+ RedisTemplate redisTemplate;
@Override
@Transactional
@@ -76,6 +80,8 @@
}
//������������
unitConversionMapper.insert(unitConversion);
+ //������������
+ refreshCache();
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -153,6 +159,8 @@
oldUnitConversion = unitConversionMapper.selectOne(oldWrapper);
//������
unitConversionMapper.updateById(unitConversion);
+ //������������
+ refreshCache();
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -177,15 +185,21 @@
deleteWrapper.set("is_delete", Constants.DELETE);
deleteWrapper.eq("id", id);
unitConversionMapper.update(null, deleteWrapper);
+ //������������
+ refreshCache();
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
return dto;
}
- public static void main(String[] args) {
- int[] array = new int[]{1,2,3,4,5,};
- String s = JSON.toJSONString(array);
- System.out.println(s);
+ /*������������*/
+ @Override
+ public void refreshCache(){
+ redisTemplate.delete((RedisConstants.UNIT_CONVERSION));
+ QueryWrapper<UnitConversion> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_delete",Constants.NOT_DELETE);
+ List<UnitConversion> unitConversions = unitConversionMapper.selectList(queryWrapper);
+ redisTemplate.opsForList().leftPushAll(RedisConstants.UNIT_CONVERSION,unitConversions);
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java b/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
index 62c0b4f..f8e27ee 100644
--- a/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
@@ -7,6 +7,7 @@
import com.moral.api.mapper.UnitConversionMapper;
import com.moral.api.service.SensorService;
import com.moral.api.service.SysDictDataService;
+import com.moral.api.service.UnitConversionService;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.TokenUtils;
@@ -40,6 +41,11 @@
private static UnitConversionMapper unitConversionMapper;
private static SensorService sensorService;
+
+ private static UnitConversionService unitConversionService;
+
+ @Autowired
+ public void setUnitConversionService(UnitConversionService unitConversionService){CacheUtils.unitConversionService = unitConversionService;}
@Autowired
public void setSensorService(SensorService sensorService) {
@@ -123,4 +129,8 @@
public static void refreshDicTypeAndData(){
}
+
+ public static void refreshUnitConversion(){
+ unitConversionService.refreshCache();
+ }
}
--
Gitblit v1.8.0