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; /** *

* 单位转换表 服务实现类 *

* * @author moral * @since 2021-07-12 */ @Service public class UnitConversionServiceImpl extends ServiceImpl implements UnitConversionService { @Autowired RedisTemplate redisTemplate; @Autowired UnitConversionMapper unitConversionMapper; @Override public String getFormula(Integer srcUnitId, Integer posUnitId, String sensorCode) { List unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1); if (unitConversions == null) { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("is_delete", Constants.NOT_DELETE); unitConversions = unitConversionMapper.selectList(wrapper); } List sensorConversion = new ArrayList<>(); Iterator 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; } }