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(); 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) {