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/config/WebSocketConfig.java | 7 +++++++ pom.xml | 6 ++++++ src/main/java/com/moral/webSocketServer/ElectronicSWebSocketServer.java | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 1 deletions(-) diff --git a/pom.xml b/pom.xml index b9a283b..d7b41de 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,12 @@ <version>2.8.5</version> </dependency> + <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl3 --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-jexl3</artifactId> + <version>3.1</version> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/moral/config/WebSocketConfig.java b/src/main/java/com/moral/config/WebSocketConfig.java index 80c4225..5ea4e3d 100644 --- a/src/main/java/com/moral/config/WebSocketConfig.java +++ b/src/main/java/com/moral/config/WebSocketConfig.java @@ -3,6 +3,7 @@ import com.moral.service.AccountService; import com.moral.service.DeviceService; import com.moral.service.SensorService; +import com.moral.service.SensorUnitService; import com.moral.webSocketServer.*; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; @@ -43,5 +44,11 @@ BSAQIWebSocketServer.sensorService=sensorService; ElectronicSWebSocketServer.sensorService=sensorService; } + @Autowired + public void setSensorUnitService( SensorUnitService sensorUnitService){ + ElectronicSWebSocketServer.sensorUnitService=sensorUnitService; + } + + } 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