|  |  | 
 |  |  | package com.moral.api.service.impl; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | 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 com.moral.constant.Constants; | 
 |  |  | import com.moral.constant.RedisConstants; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Iterator; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * <p> | 
 |  |  | 
 |  |  | @Service | 
 |  |  | public class UnitConversionServiceImpl extends ServiceImpl<UnitConversionMapper, UnitConversion> implements UnitConversionService { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     RedisTemplate redisTemplate; | 
 |  |  |     @Autowired | 
 |  |  |     UnitConversionMapper unitConversionMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getFormula(Integer srcUnitId, Integer posUnitId, String sensorCode) { | 
 |  |  |         List<UnitConversion> unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1); | 
 |  |  |         if (unitConversions == null) { | 
 |  |  |             QueryWrapper<UnitConversion> wrapper = new QueryWrapper(); | 
 |  |  |             wrapper.eq("is_delete", Constants.NOT_DELETE); | 
 |  |  |             unitConversions = unitConversionMapper.selectList(wrapper); | 
 |  |  |         } | 
 |  |  |         List<UnitConversion> sensorConversion = new ArrayList<>(); | 
 |  |  |         Iterator<UnitConversion> iterator = unitConversions.iterator(); | 
 |  |  |         while (iterator.hasNext()) { | 
 |  |  |             UnitConversion unitConversion = iterator.next(); | 
 |  |  |             if (unitConversion.getSensorCode() != null) { | 
 |  |  |                 sensorConversion.add(unitConversion); | 
 |  |  |                 iterator.remove(); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         for (UnitConversion unitConversion : sensorConversion) { | 
 |  |  |             if (unitConversion.getOriginalUnitKey().equals(srcUnitId) && unitConversion.getTargetUnitKey().equals(posUnitId) && unitConversion.getSensorCode().equals(sensorCode)) | 
 |  |  |                 return unitConversion.getFormula(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         for (UnitConversion unitConversion : unitConversions) { | 
 |  |  |             if (unitConversion.getOriginalUnitKey().equals(srcUnitId) && unitConversion.getTargetUnitKey().equals(posUnitId)) | 
 |  |  |                 return unitConversion.getFormula(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  | } |