From fdc8e1e781851904b05f234523f372c8c1098b69 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Thu, 01 Jul 2021 11:42:45 +0800
Subject: [PATCH] 定时任务CO.O3算法
---
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java | 99 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 96 insertions(+), 3 deletions(-)
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 dab4e28..62c0b4f 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
@@ -1,11 +1,24 @@
package com.moral.api.util;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.*;
+import com.moral.api.mapper.DeviceMapper;
+import com.moral.api.mapper.SensorMapper;
+import com.moral.api.mapper.UnitConversionMapper;
+import com.moral.api.service.SensorService;
+import com.moral.api.service.SysDictDataService;
+import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.TokenUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* @ClassName CacheUtils
@@ -20,14 +33,94 @@
private static RedisTemplate redisTemplate;
+ private static DeviceMapper deviceMapper;
+
+ private static SysDictDataService sysDictDataService;
+
+ private static UnitConversionMapper unitConversionMapper;
+
+ private static SensorService sensorService;
+
+ @Autowired
+ public void setSensorService(SensorService sensorService) {
+ CacheUtils.sensorService = sensorService;
+ }
+
@Autowired
public void setRedisTemplate(RedisTemplate redisTemplate) {
CacheUtils.redisTemplate = redisTemplate;
}
- public static void clearDictionariesCache(){
- redisTemplate.delete(RedisConstants.DICT_DATA_KEY);
- redisTemplate.delete(RedisConstants.DICT_TYPE_KEY);
+ @Autowired
+ public void setDeviceMapper(DeviceMapper deviceMapper) {
+ CacheUtils.deviceMapper = deviceMapper;
}
+ @Autowired
+ public void setSysDictDataService(SysDictDataService sysDictDataService) {
+ CacheUtils.sysDictDataService = sysDictDataService;
+ }
+
+ @Autowired
+ public void setUnitConversionMapper(UnitConversionMapper unitConversionMapper) {
+ CacheUtils.unitConversionMapper = unitConversionMapper;
+ }
+
+
+ public static void refreshDeviceAlarmInfo() {
+ //������������
+ redisTemplate.delete(RedisConstants.DEVICE_INFO);
+ //������������������
+ List<Device> devices = deviceMapper.queryDeviceUnitAlarmInfo();
+ Map<String, SysDictData> unitMap = sysDictDataService.getDictDatasByType("unit");
+ //���������������������������������������������
+ Map<String,Device> result = new HashMap<>();
+ for (Device device : devices) {
+ Version version = device.getVersion();
+ List<Sensor> sensors = version.getSensors();
+ for (Sensor sensor : sensors) {
+ //������������������
+ String unitKey = sensor.getUnitKey();
+ String showUnitKey = sensor.getShowUnitKey();
+ SysDictData unitData = unitMap.get(unitKey);
+ SysDictData showUnitData = unitMap.get(showUnitKey);
+ sensor.setUnit(unitData.getDataValue());
+ sensor.setShowUnit(showUnitData.getDataValue());
+ //������������������
+ Map<String, Sensor> allSensors = sensorService.getAllSensorFromCache();
+ String sensorName = allSensors.get(sensor.getCode()).getName();
+ sensor.setName(sensorName);
+ //������������������
+ if (!unitKey.equals(showUnitKey)) {
+ QueryWrapper<UnitConversion> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_delete", Constants.NOT_DELETE);
+ queryWrapper.eq("original_unit_key", unitKey);
+ queryWrapper.eq("target_unit_key", showUnitKey);
+ List<UnitConversion> unitConversions = unitConversionMapper.selectList(queryWrapper);
+ if (unitConversions.size() == 1) {
+ UnitConversion unitConversion = unitConversions.get(0);
+ if (ObjectUtils.isEmpty(unitConversion.getSensorCode()))
+ sensor.setFormula(unitConversion.getFormula());
+
+ } else {
+ for (UnitConversion unitConversion : unitConversions) {
+ if (sensor.getCode().equals(unitConversion.getSensorCode()))
+ sensor.setFormula(unitConversion.getFormula());
+ }
+ }
+ }
+ }
+ result.put(device.getMac(),device);
+ }
+ //������redis
+ redisTemplate.opsForHash().putAll(RedisConstants.DEVICE_INFO,result);
+ }
+
+ public static void refreshSensor(){
+ sensorService.refreshCache();
+ }
+
+ public static void refreshDicTypeAndData(){
+
+ }
}
--
Gitblit v1.8.0