From a66d53c3cbfb0024804045f4d795be06089d4f9d Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Thu, 03 Dec 2020 17:54:15 +0800
Subject: [PATCH] 五分钟表相关代码,平均风向、平局风速工具类
---
src/main/resources/mapper/HistoryFiveMinutelyMapper.xml | 12 ++++++
src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java | 6 +++
src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java | 1
src/main/java/com/moral/util/WindUtils.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/moral/service/HistoryFiveMinutelyService.java | 2 +
5 files changed, 109 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
index 438fb96..0aadbdd 100644
--- a/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
@@ -9,4 +9,5 @@
Map<String,Object> getFiveMinutesDataByMac(Map<String,Object> parameters);
+ List<Map<String,Object>> getFiveMinutesSersorDataByMacsAndTime(Map<String,Object> parameters);
}
diff --git a/src/main/java/com/moral/service/HistoryFiveMinutelyService.java b/src/main/java/com/moral/service/HistoryFiveMinutelyService.java
index 0d3f3eb..21972b8 100644
--- a/src/main/java/com/moral/service/HistoryFiveMinutelyService.java
+++ b/src/main/java/com/moral/service/HistoryFiveMinutelyService.java
@@ -7,4 +7,6 @@
List<Map<String, Object>> getFiveMinutesDataByMacsAndTime(Map<String, Object> parameters);
Map<String,Object> getFiveMinutesDataByMac(Map<String, Object> parameters);
+
+ List<Map<String, Object>> getFiveMinutesSersorDataByMacsAndTime(Map<String,Object> parameters);
}
diff --git a/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java
index 1a2e322..b2dc382 100644
--- a/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -26,5 +26,11 @@
return historyFiveMinutelyMapper.getFiveMinutesDataByMac(parameters);
}
+ @Override
+ public List<Map<String, Object>> getFiveMinutesSersorDataByMacsAndTime(Map<String, Object> parameters) {
+ ValidateUtil.notNull(parameters,"���������������������������������");
+ return historyFiveMinutelyMapper.getFiveMinutesSersorDataByMacsAndTime(parameters);
+ }
+
}
diff --git a/src/main/java/com/moral/util/WindUtils.java b/src/main/java/com/moral/util/WindUtils.java
new file mode 100644
index 0000000..01d7073
--- /dev/null
+++ b/src/main/java/com/moral/util/WindUtils.java
@@ -0,0 +1,88 @@
+package com.moral.util;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WindUtils {
+
+ /**
+ *@Description: ������������������������������UV������
+ * @return: < com.moral.entity.Device>>
+ * @Author: lizijie
+ * @Date: 2020/12/03
+ *
+ * */
+ public static Map<String, Double> getWind_direction_speed(List<Map<String, Object>> list){
+ //������u������������������v���������������
+ double u = 0;
+ double v = 0;
+ for (Map map:list) {
+ double u1 = 0;
+ double v1 = 0;
+ double wind_speed = Double.parseDouble(map.get("wind_speed").toString());
+ double wind_direction = Double.parseDouble(map.get("wind_direction").toString());
+ if (wind_speed == 0){
+ continue;//���������������0������������������������������������������
+ }
+ if (wind_direction==0){
+ u1 = 0;
+ v1 = wind_speed*1;
+ }else if (0<wind_direction&&wind_direction<90){
+ u1 = wind_speed*Math.sin(wind_direction);
+ v1 = wind_speed*Math.cos(wind_direction);
+ }else if (wind_direction == 90){
+ u1 = wind_speed*1;
+ v1 = 0;
+ }else if (90<wind_direction&&wind_direction<180){
+ u1 = wind_speed*Math.sin(180-wind_direction);
+ v1 = -1*wind_speed*Math.cos(180-wind_direction);
+ }else if (wind_direction == 180){
+ u1 = 0;
+ v1 = wind_speed*-1;
+ }else if (180<wind_direction&&wind_direction<270){
+ u1 = -1*wind_speed*Math.sin(wind_direction-180);
+ v1 = -1*wind_speed*Math.cos(wind_direction-180);
+ }else if (wind_direction == 270){
+ u1 = wind_speed*-1;
+ v1 = 0;
+ }else if (270<wind_direction&&wind_direction<360){
+ u1 = wind_speed*Math.sin(360-wind_direction);
+ v1 = -1*wind_speed*Math.cos(360-wind_direction);
+ }
+ u = u+u1;
+ v = v+v1;
+ }
+ Map<String,Double> windDirectionSpeedMap = new HashMap<>();
+ if (u==0&&v==0){
+ windDirectionSpeedMap.put("wind_direction",0.0);
+ windDirectionSpeedMap.put("wind_speed",0.0);
+ }else if (u==0&&v>0){
+ windDirectionSpeedMap.put("wind_direction",0.0);
+ windDirectionSpeedMap.put("wind_speed",v);
+ }else if (u>0&&v>0){
+ windDirectionSpeedMap.put("wind_direction",Math.atan2(u,v));
+ windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+ }else if (u>0&&v==0){
+ windDirectionSpeedMap.put("wind_direction",90.0);
+ windDirectionSpeedMap.put("wind_speed",u);
+ }else if (u>0&&v<0){
+ windDirectionSpeedMap.put("wind_direction",Math.atan2(-v,u)+90);
+ windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+ }else if (u==0&&v<0){
+ windDirectionSpeedMap.put("wind_direction",180.0);
+ windDirectionSpeedMap.put("wind_speed",-v);
+ }else if (u<0&&v<0){
+ windDirectionSpeedMap.put("wind_direction",Math.atan2(-u,-v)+180);
+ windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+ }else if (u<0&&v==0){
+ windDirectionSpeedMap.put("wind_direction",270.0);
+ windDirectionSpeedMap.put("wind_speed",-u);
+ }else if (u<0&&v>0){
+ windDirectionSpeedMap.put("wind_direction",Math.atan2(v,-u)+270);
+ windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+ }
+ return windDirectionSpeedMap;
+ }
+
+}
diff --git a/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml b/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
index 3c8e2b7..642d314 100644
--- a/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
@@ -20,4 +20,16 @@
where h.time = #{time}
and h.mac = #{mac}
</select>
+
+ <select id="getFiveMinutesSersorDataByMacsAndTime" resultType="map">
+ SELECT h.mac,h.time,
+ <foreach collection="sensorKeys" separator="," item="sensorKey">
+ json->'$.${sensorKey}' AS '${sensorKey}'
+ </foreach>
+ from history_five_minutely_${yearAndMonth} h
+ where time = #{time} and mac IN
+ <foreach collection="macs" separator="," open="(" close=")" item="mac">
+ #{mac}
+ </foreach>
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0