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