From 9dcca27f3e28febdf4d79c2b6017d15bb104cff2 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Thu, 10 Mar 2022 13:32:52 +0800 Subject: [PATCH] screen-api 增加五分钟弹窗数据接口 --- screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java | 19 +++ screen-api/src/main/java/com/moral/api/service/UnitConversionService.java | 2 screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 57 +++++++++++ screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java | 11 ++ screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 108 ++++++++++++++++++--- screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java | 2 screen-api/src/main/java/com/moral/api/entity/UnitConversion.java | 2 screen-api/src/main/java/com/moral/api/service/DeviceService.java | 9 + screen-api/src/main/java/com/moral/api/service/SensorService.java | 2 screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java | 27 +++++ screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java | 43 ++++++++ screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java | 9 - 12 files changed, 260 insertions(+), 31 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java b/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java index 0271ad4..648f7a0 100644 --- a/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java +++ b/screen-api/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java @@ -46,7 +46,7 @@ public ConsumerFactory<String, String> consumerFactory() { return new DefaultKafkaConsumerFactory<>(consumerConfigs()); } - + @Bean("secondDataListenerFactory") public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> secondDataListenerFactory(){ ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); diff --git a/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java index 3ef66f3..169fcca 100644 --- a/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java +++ b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java @@ -34,6 +34,13 @@ @Autowired HistoryFiveMinutelyService historyFiveMinutelyService; + /** + * @Description: ��������������������������������������������������������������������� + * @Param: [form] + * @return: com.moral.constant.ResultMessage + * @Author: ��������� + * @Date: 2022/3/10 + */ @GetMapping("queryDeviceAndData") public ResultMessage queryDeviceAndData(QueryDeviceAndFiveMinuteDataForm form){ //������������������������ @@ -49,6 +56,18 @@ return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); } + + /** + * @Description: ��������������������������������� + * @Param: [mac] + * @return: com.moral.constant.ResultMessage + * @Author: ��������� + * @Date: 2022/3/10 + */ + @GetMapping("queryPopDataByMac") + public ResultMessage queryPopDataByMac(String mac){ + return ResultMessage.ok(historyFiveMinutelyService.getPopDataByMac(mac)); + } } diff --git a/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java b/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java index 0186724..801013c 100644 --- a/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java +++ b/screen-api/src/main/java/com/moral/api/entity/UnitConversion.java @@ -33,7 +33,7 @@ /** * ��������������� */ - private String originalUnitKey; + private Integer originalUnitKey; /** * ��������������� diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java index 2544cad..0ae5b3f 100644 --- a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java +++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java @@ -37,7 +37,6 @@ public void listen(ConsumerRecord<String, String> record, Consumer consumer) throws Exception { String messageStr = record.value(); Map<String, Object> message = (Map<String, Object>) JSON.parse(messageStr); - //long serverStartTime = System.currentTimeMillis(); CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets; for (SingleDeviceServer socket : sockets) { //���������������������������socket @@ -50,7 +49,7 @@ Map<String, Object> adjustFormula = socket.getAdjustFormula(); Map<String, Object> regionAqi = socket.getRegionAqi(); //������������ - if(adjustFormula!=null&®ionAqi!=null) + if(adjustFormula!=null) message = AdjustDataUtils.adjust(message,adjustFormula,regionAqi); //������������������������ Map<String, Object> resultMessgae = new HashMap<>(); @@ -95,12 +94,6 @@ resultMessgae.put(sensor.getCode(), sourceData); } } - //��������������������������������� - //resultMessgae.put("DataTime", message.get("DataTime")); - //resultMessgae.put("time", message.get("time")); - //resultMessgae.put("time1", message.get("time1")); - //resultMessgae.put("serverTime", System.currentTimeMillis()); - //resultMessgae.put("serverStartTime", serverStartTime); socket.sendMessage(JSON.toJSONString(resultMessgae)); } } diff --git a/screen-api/src/main/java/com/moral/api/service/DeviceService.java b/screen-api/src/main/java/com/moral/api/service/DeviceService.java index 76de203..1bb65f1 100644 --- a/screen-api/src/main/java/com/moral/api/service/DeviceService.java +++ b/screen-api/src/main/java/com/moral/api/service/DeviceService.java @@ -37,4 +37,13 @@ //������������������,���������������������������mac������ List getMacsByOrgIdAndRegionCode(Integer organizationId,Integer regionCode); + /** + * @Description: ������mac��������������������������������� + * @Param: [mac] + * @return: com.moral.api.entity.Device + * @Author: ��������� + * @Date: 2022/3/10 + */ + Device getDeviceUnitAlramInforByMac(String mac); + } diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java index b6b0846..2572c8d 100644 --- a/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java +++ b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java @@ -35,9 +35,18 @@ * @Author: ��������� * @Date: 2021/7/23 */ - HistoryFiveMinutely queryLastDataByMac(String mac); + Map<String, Object> queryLastDataByMac(String mac); //������5������������������ List<Object> getAreaWindData(Map<String,Object> params); + /** + * @Description: ������������������������������������+������+tvoc + * @Param: [mac] + * @return: java.util.Map<java.lang.String,java.lang.Object> + * @Author: ��������� + * @Date: 2022/3/10 + */ + Map<String,Object> getPopDataByMac(String mac); + } diff --git a/screen-api/src/main/java/com/moral/api/service/SensorService.java b/screen-api/src/main/java/com/moral/api/service/SensorService.java index 704fcb4..4d8953f 100644 --- a/screen-api/src/main/java/com/moral/api/service/SensorService.java +++ b/screen-api/src/main/java/com/moral/api/service/SensorService.java @@ -12,5 +12,5 @@ * @since 2021-06-28 */ public interface SensorService extends IService<Sensor> { - + Sensor getSensorByCode(String code); } diff --git a/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java b/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java index 58a7af6..9566bee 100644 --- a/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java +++ b/screen-api/src/main/java/com/moral/api/service/UnitConversionService.java @@ -12,5 +12,5 @@ * @since 2021-07-12 */ public interface UnitConversionService extends IService<UnitConversion> { - + String getFormula(Integer srcUnitId,Integer posUnitId,String sensorCode); } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java index 3a68890..f5994b4 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java @@ -3,14 +3,21 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.Device; +import com.moral.api.entity.OrganizationUnitAlarm; import com.moral.api.entity.Sensor; +import com.moral.api.entity.Version; import com.moral.api.mapper.DeviceMapper; +import com.moral.api.mapper.OrganizationUnitAlarmMapper; +import com.moral.api.mapper.UnitConversionMapper; import com.moral.api.service.DeviceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.api.service.SensorService; +import com.moral.api.service.UnitConversionService; import com.moral.constant.Constants; import com.moral.constant.RedisConstants; import com.moral.util.DateUtils; +import org.apache.kafka.streams.state.internals.metrics.Sensors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -41,6 +48,15 @@ @Autowired private RedisTemplate redisTemplate; + + @Autowired + OrganizationUnitAlarmMapper organizationUnitAlarmMapper; + + @Autowired + SensorService sensorService; + + @Autowired + UnitConversionService unitConversionService; @Override public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) { @@ -218,6 +234,46 @@ return deviceMapper.selectObjs(queryWrapper); } + @Override + public Device getDeviceUnitAlramInforByMac(String mac) { + Device device = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO,mac); + if(device==null) + return getDeviceUnitAlramInforByMacFromDb(mac); + return device; + } + + private Device getDeviceUnitAlramInforByMacFromDb(String mac){ + QueryWrapper<Device> wrapper = new QueryWrapper<>(); + wrapper.eq("mac",mac); + wrapper.eq("is_delete",Constants.NOT_DELETE); + Device device = deviceMapper.selectOne(wrapper); + if(device==null) + return null; + QueryWrapper<OrganizationUnitAlarm> unitAlarmQueryWrapper = new QueryWrapper<>(); + unitAlarmQueryWrapper.eq("organization_id",device.getOrganizationId()); + unitAlarmQueryWrapper.eq("version_id",device.getDeviceVersionId()); + unitAlarmQueryWrapper.eq("is_delete",Constants.NOT_DELETE); + List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(unitAlarmQueryWrapper); + Version version = new Version(); + version.setId(device.getDeviceVersionId()); + List<Sensor> sensors = new ArrayList<>(); + for (OrganizationUnitAlarm organizationUnitAlarm : organizationUnitAlarms) { + Sensor sensor = sensorService.getSensorByCode(organizationUnitAlarm.getSensorCode()); + sensor.setUnit(organizationUnitAlarm.getUnitKey()); + sensor.setShowUnit(organizationUnitAlarm.getShowUnitKey()); + sensor.setShowUnitKey(organizationUnitAlarm.getShowUnitKey()); + sensor.setUnitKey(organizationUnitAlarm.getUnitKey()); + sensor.setAlarmLevel(organizationUnitAlarm.getAlarmLevel()); + String formula = unitConversionService.getFormula(Integer.valueOf(organizationUnitAlarm.getUnitKey()), Integer.valueOf(organizationUnitAlarm.getShowUnitKey()),sensor.getCode()); + sensor.setFormula(formula); + sensors.add(sensor); + } + version.setSensors(sensors); + device.setVersion(version); + redisTemplate.opsForHash().put(RedisConstants.DEVICE_INFO,mac,device); + return device; + } + private Device getDeviceByMacFromDB(String mac) { QueryWrapper<Device> wrapper = new QueryWrapper<>(); wrapper.eq("mac", mac); @@ -226,4 +282,5 @@ } + } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java index da4cbef..4ddfbcb 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java @@ -7,18 +7,18 @@ import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList; import com.moral.api.config.mybatis.MybatisPlusConfig; -import com.moral.api.entity.Device; -import com.moral.api.entity.HistoryFiveMinutely; -import com.moral.api.entity.HistoryHourly; -import com.moral.api.entity.MonitorPoint; +import com.moral.api.entity.*; import com.moral.api.mapper.HistoryFiveMinutelyMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.pojo.dto.Wind.WindData; import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO; import com.moral.api.pojo.form.device.MonitorPointQueryForm; import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm; +import com.moral.api.service.DeviceService; import com.moral.api.service.HistoryFiveMinutelyService; import com.moral.api.service.MonitorPointService; +import com.moral.api.utils.UnitConvertUtils; +import com.moral.constant.Constants; import com.moral.constant.RedisConstants; import com.moral.constant.SeparateTableType; import com.moral.util.DateUtils; @@ -48,6 +48,8 @@ RedisTemplate redisTemplate; @Autowired HistoryFiveMinutelyMapper historyFiveMinutelyMapper; + @Autowired + DeviceService deviceService; @Override public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) { @@ -60,24 +62,21 @@ List<Device> devices = new ArrayList<>(); for (MonitorPoint monitorPoint : monitorPoints) { List<Device> monitorPointDevices = monitorPoint.getDevices(); - if (!ObjectUtils.isEmpty(monitorPointDevices)) - devices.addAll(monitorPointDevices); + if (!ObjectUtils.isEmpty(monitorPointDevices)) { + //������������������ + for (Device device : monitorPointDevices) { + if (!device.getState().equals(Constants.DEVICE_STATE_OFFLINE)) + devices.add(device); + } + } + } //��������������������������������� List<DeviceAndFiveMinuteDataDTO> dtos = new ArrayList<>(); for (Device device : devices) { DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO(); String mac = device.getMac(); - //������������������ - Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac); - //������������������������������������ - if (ObjectUtils.isEmpty(sensorValues)) { - HistoryFiveMinutely dbHistoryFiveMinutely = queryLastDataByMac(mac); - if (ObjectUtils.isEmpty(dbHistoryFiveMinutely)) - continue; - else - sensorValues = JSON.parseObject(dbHistoryFiveMinutely.getValue(),Map.class); - } + Map<String, Object> sensorValues = queryLastDataByMac(mac); String dbDataStr = JSON.toJSONString(sensorValues); sensorValues = JSON.parseObject(dbDataStr, HashMap.class); Map<String, Object> sensorValue = new HashMap<>(); @@ -93,7 +92,12 @@ } @Override - public HistoryFiveMinutely queryLastDataByMac(String mac) { + public Map<String, Object> queryLastDataByMac(String mac) { + //������������������ + Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac); + //������������������������������������ + if (sensorValues != null) + return sensorValues; QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("mac", mac); queryWrapper.orderByDesc("time"); @@ -104,7 +108,10 @@ List<HistoryFiveMinutely> datas = multiTableQuery(queryWrapper, tableNames); if (ObjectUtils.isEmpty(datas)) return null; - return datas.get(0); + HistoryFiveMinutely historyFiveMinutely = datas.get(0); + sensorValues = JSON.parseObject(historyFiveMinutely.getValue(), Map.class); + sensorValues.put("dataTime", DateUtils.dateToDateString(historyFiveMinutely.getTime(), "yyyy-MM-dd HH:mm:ss")); + return sensorValues; } @@ -117,6 +124,71 @@ return getWindData(windData); } + //��������������������������� + @Override + public Map<String, Object> getPopDataByMac(String mac) { + Map<String, Object> datas = queryLastDataByMac(mac); + //������������������ + Map<String, Object> result = new HashMap<>(); + //������������������code������ + List<String> sensorCodes = Arrays.asList("a34004", "a34002", "a21005", "a21004", "a21026", "a05024", "a99054"); + //������������������ + Device device = deviceService.getDeviceUnitAlramInforByMac(mac); + //��������������������������� + for (Sensor sensor : device.getVersion().getSensors()) { + if (!sensorCodes.contains(sensor.getCode())) + continue; + Object dataO = datas.get(sensor.getCode()); + if (dataO != null) { + String data = String.valueOf(dataO); + //������������ + if (!sensor.getShowUnitKey().equals(sensor.getUnitKey()) ) + data = UnitConvertUtils.calculate(data, sensor.getFormula()); + //������������ + data = data +" "+ sensor.getShowUnit(); + result.put(sensor.getCode(), data); + }else{ + result.put(sensor.getCode(),"-"); + } + } + //������������������ + result.put("name",device.getName()); + //������������ + result.put("dataTime",datas.get("dataTime")); + //������ + return orderSixParam(result); + } + + //��������������������������������� + private Map<String,Object> orderSixParam(Map<String,Object> data){ + LinkedHashMap result = new LinkedHashMap(); + Object PM2_5 = data.get("a34004"); + Object PM10 = data.get("a34002"); + Object SO2 = data.get("a21026"); + Object NO2 = data.get("a21004"); + Object CO = data.get("a21005"); + Object O3 = data.get("a05024"); + Object name = data.get("name"); + Object time = data.get("dataTime"); + if(name!=null) + result.put("������",name); + if(PM2_5!=null) + result.put("PM2.5",PM2_5); + if(PM10!=null) + result.put("PM10",PM10); + if(SO2!=null) + result.put("���������������SO������",SO2); + if(NO2!=null) + result.put("���������������NO������",NO2); + if(CO!=null) + result.put("���������������CO���",CO); + if(O3!=null) + result.put("���������O������",O3); + if(time!=null) + result.put("������",time); + return result; + } + /** * ������������������������������������������ diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java index 6ecb7ea..9296113 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java @@ -1,9 +1,14 @@ package com.moral.api.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.Sensor; import com.moral.api.mapper.SensorMapper; import com.moral.api.service.SensorService; 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; /** @@ -17,4 +22,26 @@ @Service public class SensorServiceImpl extends ServiceImpl<SensorMapper, Sensor> implements SensorService { + @Autowired + SensorMapper sensorMapper; + @Autowired + RedisTemplate redisTemplate; + + @Override + public Sensor getSensorByCode(String code) { + Sensor sensor = (Sensor) redisTemplate.opsForHash().get(RedisConstants.SENSOR_KEY, code); + if(sensor==null) + sensor = getSensorByCodeFromDb(code); + return sensor; + } + + + private Sensor getSensorByCodeFromDb(String code) { + QueryWrapper<Sensor> wrapper = new QueryWrapper<>(); + wrapper.eq("code",code); + wrapper.eq("is_delete", Constants.NOT_DELETE); + Sensor sensor = sensorMapper.selectOne(wrapper); + redisTemplate.opsForHash().put(RedisConstants.SENSOR_KEY, code,sensor); + return sensor; + } } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java index cfe384d..c00e72b 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java @@ -1,10 +1,19 @@ 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> @@ -17,4 +26,38 @@ @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; + } } -- Gitblit v1.8.0