From 997353a844c1d10ab930cbcd95922640063535f0 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Wed, 09 Mar 2022 11:36:18 +0800 Subject: [PATCH] screen-api 根据AQI计算污染等级 --- screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java | 5 ++++- screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java | 2 +- screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java | 21 ++++++++------------- 3 files changed, 13 insertions(+), 15 deletions(-) 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 729dcbf..2544cad 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 @@ -4,6 +4,7 @@ import com.moral.api.entity.Device; import com.moral.api.entity.Sensor; import com.moral.api.entity.UnitConversion; +import com.moral.api.utils.AdjustDataUtils; import com.moral.api.utils.UnitConvertUtils; import com.moral.api.websocket.SingleDeviceServer; import lombok.extern.slf4j.Slf4j; @@ -46,6 +47,11 @@ continue; //������������������ Device device = socket.getDeviceAlarmInfo(); + Map<String, Object> adjustFormula = socket.getAdjustFormula(); + Map<String, Object> regionAqi = socket.getRegionAqi(); + //������������ + if(adjustFormula!=null&®ionAqi!=null) + message = AdjustDataUtils.adjust(message,adjustFormula,regionAqi); //������������������������ Map<String, Object> resultMessgae = new HashMap<>(); //������������ @@ -56,24 +62,13 @@ String showUnitKey = sensor.getShowUnitKey(); String unitKey = sensor.getUnitKey(); String unit = sensor.getUnit(); - //��������������������������������������������� Object value = message.get(code); - //������������������������������������������������ - /*if(value==null) ��������� + if(value==null) continue; - Double sourceDataD = Double.valueOf(String.valueOf(value));*/ - //��������������������������������������������� start - Double sourceDataD = null; - if (value != null) { - sourceDataD = Double.valueOf(String.valueOf(value)); - }else{ - sourceDataD = 5.00d; - } - //��������������������������������������������� end + Double sourceDataD = Double.valueOf(String.valueOf(value)); BigDecimal bg = new BigDecimal(sourceDataD); bg = bg.setScale(2, BigDecimal.ROUND_FLOOR); String sourceData = bg.toString(); - //������������ //������������ if (!unitKey.equals(showUnitKey)) {//������������������������������������������������������������ String formula = sensor.getFormula(); diff --git a/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java b/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java index 324795d..ea1c0ea 100644 --- a/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java +++ b/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java @@ -25,7 +25,7 @@ * @param aqiMap ���������������������������������aqi������ * @return Map<String, Object> ��������������� * */ - public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) { + public static Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) { try { Date time = DateUtils.getDate((String) deviceData.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN); long finalTime = DateUtils.dataToTimeStampTime(time, DateUtils.HH_mm_ss_EN).getTime(); diff --git a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java index fa6fd33..d8e7cc7 100644 --- a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java +++ b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java @@ -45,19 +45,22 @@ private Map<String, Object> regionAqi; + private Map<String,Object> adjustFormula; + @OnOpen public void onOpen(Session session, @PathParam("mac") String mac) throws Exception { this.session = session; this.mac = mac; this.deviceAlarmInfo = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, mac); this.unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1); + this.adjustFormula = redisTemplate.opsForHash().entries("adjust_"+mac); //���������������������������AQI������������������ Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac); Map<String, Object> monitorPointMap = (Map<String, Object>) deviceInfo.get("monitorPoint"); String areaCode = String.valueOf(monitorPointMap.get("areaCode")); String cityCode = String.valueOf(monitorPointMap.get("cityCode")); try { - this.regionAqi = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, areaCode); + this.regionAqi = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.CITY_AQI, areaCode); if (ObjectUtils.isEmpty(this.regionAqi)) this.regionAqi = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, cityCode); } catch (Exception e) { -- Gitblit v1.8.0