From 26f163a9782ea92a814d05555a2ad145079a3cc5 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 14 May 2021 09:08:41 +0800
Subject: [PATCH] screen-manage                   因子数据添加缓存

---
 screen-common/src/main/java/com/moral/constant/Constants.java                 |    1 +
 screen-common/src/main/java/com/moral/constant/RedisConstants.java            |    6 ++++++
 screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index 1703fcc..07e4cb1 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -95,4 +95,5 @@
     public static final String SYSTEM_DICT_TYPE_UNIT = "unit";
 
 
+
 }
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 cb18099..2578c67 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -22,4 +22,10 @@
     * ������List<sysDictType>������
     * */
     public static final String DICT_TYPE_KEY = "dict_type";
+
+    /*
+    * ������ redis������key
+    * ������Map<Integer,Sensor>������
+    * */
+    public static final String SENSOR_KEY = "sensor";
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
index fae31a5..14da511 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
@@ -10,8 +10,10 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.util.LogUtils;
 import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
 import com.moral.constant.ResponseCodeEnum;
 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;
@@ -42,6 +44,9 @@
 
     @Autowired
     LogUtils logUtils;
+
+    @Autowired
+    RedisTemplate redisTemplate;
 
     @Override
     @Transactional
@@ -75,6 +80,8 @@
         logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE);
         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
+        //������������
+        refreshCache();
         return resultMap;
     }
 
@@ -129,6 +136,8 @@
         logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
+        //������������
+        refreshCache();
         return resultMap;
     }
 
@@ -193,6 +202,8 @@
         logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE);
         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
+        //������������
+        refreshCache();
         return resultMap;
     }
 
@@ -235,4 +246,36 @@
         resultMap.put("totalPageNumber",totalPageNumber);
         return resultMap;
     }
+
+    public Map<String,Sensor> getAllSensorFromCache(){
+        Map<String,Sensor> sensors = redisTemplate.opsForHash().entries(RedisConstants.SENSOR_KEY);
+        if(ObjectUtils.isEmpty(sensors))
+            return getAllSensorFromDB();
+        return sensors;
+    }
+
+    private Map<String,Sensor> getAllSensorFromDB(){
+        QueryWrapper<Sensor> wrapper = new QueryWrapper<>();
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        List<Sensor> sensors = sensorMapper.selectList(wrapper);
+        Map<String,Sensor> result = new HashMap<>();
+        for (Sensor sensor : sensors) {
+            result.put(sensor.getCode(),sensor);
+        }
+        //������������
+        refreshCache(result);
+        return result;
+    }
+
+    private void refreshCache(){
+        Map<String, Sensor> sensors = getAllSensorFromDB();
+        refreshCache(sensors);
+    }
+
+    private void refreshCache(Map<String,Sensor> sensors){
+        //������������
+        redisTemplate.delete(RedisConstants.SENSOR_KEY);
+        //������������
+        redisTemplate.opsForHash().putAll(RedisConstants.SENSOR_KEY,sensors);
+    }
 }

--
Gitblit v1.8.0