From cf42a18aba4da77141dd0ea65918444636f899e1 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Mon, 07 Dec 2020 10:50:12 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/resources/mapper/HistoryFiveMinutelyMapper.xml | 12 +++ src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java | 6 + src/main/java/com/moral/service/impl/PollutioSourcePointServiceImpl.java | 21 +++++ src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java | 1 src/main/resources/mapper/PollutionSourcePointMapper.xml | 16 ++++ src/main/java/com/moral/util/WindUtils.java | 88 ++++++++++++++++++++++ src/main/java/com/moral/entity/PollutionSourcePoint.java | 17 ++++ src/main/java/com/moral/service/HistoryFiveMinutelyService.java | 2 src/main/java/com/moral/util/EmissionDataUtil.java | 27 ++++++ src/main/java/com/moral/controller/ScreenController.java | 4 src/main/java/com/moral/service/PollutioSourcePointService.java | 7 + src/main/java/com/moral/mapper/PollutionSourcPointMapper.java | 13 +++ 12 files changed, 213 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 4e37c00..65924e7 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -727,6 +727,7 @@ */ /*������������start-------------------------------------------------------------------------*/ list.remove(0); + //if (list.size() == 23) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); //���������������������yyyy-MM-dd HH:mm:ss @@ -744,9 +745,10 @@ datas.put("time",time1); list.add(datas); } - + //} /*������������end-------------------------------------------------------------------------*/ + for (Map<String, Object> map : list) { String time = map.get("time").toString(); time = time.substring(time.length() - 2); diff --git a/src/main/java/com/moral/entity/PollutionSourcePoint.java b/src/main/java/com/moral/entity/PollutionSourcePoint.java new file mode 100644 index 0000000..8a47d73 --- /dev/null +++ b/src/main/java/com/moral/entity/PollutionSourcePoint.java @@ -0,0 +1,17 @@ +package com.moral.entity; + +import lombok.Data; + +import javax.persistence.Id; + +@Data +public class PollutionSourcePoint { + @Id + Integer id; + + Integer monitorPointId; + + Double longitude; + + Double latitude; +} 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/mapper/PollutionSourcPointMapper.java b/src/main/java/com/moral/mapper/PollutionSourcPointMapper.java new file mode 100644 index 0000000..ba0851b --- /dev/null +++ b/src/main/java/com/moral/mapper/PollutionSourcPointMapper.java @@ -0,0 +1,13 @@ +package com.moral.mapper; + + +import com.moral.entity.DeviceAdjustValueTiming; +import com.moral.entity.PollutionSourcePoint; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface PollutionSourcPointMapper { + PollutionSourcePoint selectByMonitorPointId(@Param("monitorPointId") Integer monitorPointId); +} \ No newline at end of file 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/PollutioSourcePointService.java b/src/main/java/com/moral/service/PollutioSourcePointService.java new file mode 100644 index 0000000..5ee0ab1 --- /dev/null +++ b/src/main/java/com/moral/service/PollutioSourcePointService.java @@ -0,0 +1,7 @@ +package com.moral.service; + +import com.moral.entity.PollutionSourcePoint; + +public interface PollutioSourcePointService { + PollutionSourcePoint selectByMonitorPointId(Integer monitorPointId); +} 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/service/impl/PollutioSourcePointServiceImpl.java b/src/main/java/com/moral/service/impl/PollutioSourcePointServiceImpl.java new file mode 100644 index 0000000..80121f2 --- /dev/null +++ b/src/main/java/com/moral/service/impl/PollutioSourcePointServiceImpl.java @@ -0,0 +1,21 @@ +package com.moral.service.impl; + +import com.moral.entity.PollutionSourcePoint; +import com.moral.mapper.PollutionSourcPointMapper; +import com.moral.service.PollutioSourcePointService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class PollutioSourcePointServiceImpl implements PollutioSourcePointService { + + @Resource + private PollutionSourcPointMapper pollutionSourcPointMapper; + + @Override + public PollutionSourcePoint selectByMonitorPointId(Integer monitorPointId) { + PollutionSourcePoint result = pollutionSourcPointMapper.selectByMonitorPointId(monitorPointId); + return result; + } +} diff --git a/src/main/java/com/moral/util/EmissionDataUtil.java b/src/main/java/com/moral/util/EmissionDataUtil.java new file mode 100644 index 0000000..5bec662 --- /dev/null +++ b/src/main/java/com/moral/util/EmissionDataUtil.java @@ -0,0 +1,27 @@ +package com.moral.util; + +public class EmissionDataUtil { + + //���������������������������������c������������������������������x������������������������������������������������������������y���������������������������������������������������������������u������������ + public static Double getPollutionSourceIntensity(Double c, Double x, Double y, Double u){ + double e = 2.718281828; + double r1 = 0.281846; + double r2 = 0.127190; + double x1 = 0.914370; + double x2 = 0.964435; + double �� = Math.PI; + double diffusionCoefficient_y = r1*Math.pow(x,x1);//������������y + double diffusionCoefficient_z = r2*Math.pow(x,x2);//������������z + double molecule = c*2*��*u*diffusionCoefficient_y*diffusionCoefficient_z; + double power = -1/2*(Math.pow(y,2)/Math.pow(diffusionCoefficient_y,2)); + double denominator = Math.pow(e,power); + double pollutionSourceIntensity = molecule/denominator; + return pollutionSourceIntensity; + } + + public static void main(String[] args) { + double result = EmissionDataUtil.getPollutionSourceIntensity(100.0,10.0,5.0,3.0); + System.out.println(result); + } + +} 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 diff --git a/src/main/resources/mapper/PollutionSourcePointMapper.xml b/src/main/resources/mapper/PollutionSourcePointMapper.xml new file mode 100644 index 0000000..66a8bd7 --- /dev/null +++ b/src/main/resources/mapper/PollutionSourcePointMapper.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.moral.mapper.PollutionSourcPointMapper"> + <resultMap id="BaseResultMap" type="com.moral.entity.PollutionSourcePoint" > + <id column="id" property="id" jdbcType="INTEGER" /> + <result column="monitor_point_id" property="monitorPointId" jdbcType="INTEGER" /> + <result column="longitude" property="longitude" jdbcType="NUMERIC" /> + <result column="latitude" property="latitude" jdbcType="NUMERIC" /> + </resultMap> + + <select id="selectByMonitorPointId" resultType="com.moral.entity.PollutionSourcePoint" resultMap="BaseResultMap"> + select * from pollution_source_point + where monitor_point_id = #{monitorPointId} + </select> + +</mapper> \ No newline at end of file -- Gitblit v1.8.0