| | |
| | | package com.moral.api.util; |
| | | |
| | | import com.moral.api.entity.Device; |
| | | 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 |
| | |
| | | |
| | | 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; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setDeviceMapper(DeviceMapper deviceMapper) { CacheUtils.deviceMapper = deviceMapper; } |
| | | 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 clearDictionariesCache(){ |
| | | redisTemplate.delete(RedisConstants.DICT_DATA_KEY); |
| | |
| | | |
| | | public static void flushDeviceAlarmUnit(){ |
| | | List<Device> devices = deviceMapper.queryDeviceUnitAlarmInfo(); |
| | | System.out.println(devices); |
| | | 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); |
| | | } |
| | | } |