From 94d4a4e7600665f6b40b6d791b798b498196191b Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Wed, 23 Dec 2020 13:54:23 +0800 Subject: [PATCH] 公式更改 --- src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java b/src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java index 75e24cb..31949a5 100644 --- a/src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java +++ b/src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java @@ -4,12 +4,17 @@ import com.moral.entity.Account; import com.moral.entity.Device; import com.moral.entity.Sensor; +import com.moral.entity.SensorUnit; import com.moral.service.AccountService; import com.moral.service.DeviceService; import com.moral.service.SensorService; +import com.moral.service.SensorUnitService; import com.moral.util.RabbitMQUtils; import com.rabbitmq.client.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.jexl3.JexlBuilder; +import org.apache.commons.jexl3.JexlEngine; +import org.apache.commons.jexl3.JexlExpression; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.CrossOrigin; @@ -20,6 +25,7 @@ import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.io.IOException; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -33,6 +39,8 @@ public static AccountService accountService; public static SensorService sensorService; + + public static SensorUnitService sensorUnitService; /** * concurrent������������������Set���������������������������������������WebSocket��������� @@ -112,7 +120,30 @@ String value = resultMap.get(Arrays.asList(resultMap.keySet().toArray(new String[resultMap.keySet().size()])).get(i)).toString(); /* String e = Arrays.asList(resultMap.keySet().toArray(new String[resultMap.keySet().size()])).get(i); resultMap.remove(e);*/ - reMap.put(sensor.getName(), value+sensor.getUnit()); + if (sensor.getUnit().equals("ppm")){ + List<SensorUnit> sensorUnits = sensorUnitService.queryListBySensorId(sensor.getId()); + if (sensorUnits.size()>1){ + String s = sensorUnits.get(1).getRules(); + s = s.replace("{0}",value); + JexlEngine jexlEngine = new JexlBuilder().create(); + JexlExpression jexlExpression = jexlEngine.createExpression(s); + Object evaluate = jexlExpression.evaluate(null); + BigDecimal bg = new BigDecimal(evaluate.toString()); + value = bg.setScale(3, BigDecimal.ROUND_HALF_UP).toString(); + reMap.put(sensor.getName(), value+sensorUnits.get(0).getName()); + }else { + String s = sensorUnits.get(0).getRules(); + s = s.replace("{0}",value); + JexlEngine jexlEngine = new JexlBuilder().create(); + JexlExpression jexlExpression = jexlEngine.createExpression(s); + Object evaluate = jexlExpression.evaluate(null); + BigDecimal bg = new BigDecimal(evaluate.toString()); + value = bg.setScale(3, BigDecimal.ROUND_HALF_UP).toString(); + reMap.put(sensor.getName(), value+sensorUnits.get(0).getName()); + } + }else { + reMap.put(sensor.getName(), value+sensor.getUnit()); + } break; }else { continue; -- Gitblit v1.8.0