From c60311f48e7ec07c56a4df31536f795ba62751ce Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 09 Oct 2020 16:44:42 +0800
Subject: [PATCH] 昆山,沧州大数据预测O3

---
 src/main/resources/mapper/RealWeatherMapper.xml |  150 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 145 insertions(+), 5 deletions(-)

diff --git a/src/main/resources/mapper/RealWeatherMapper.xml b/src/main/resources/mapper/RealWeatherMapper.xml
index 70b0ce7..90e1c55 100644
--- a/src/main/resources/mapper/RealWeatherMapper.xml
+++ b/src/main/resources/mapper/RealWeatherMapper.xml
@@ -1,8 +1,8 @@
 <?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.RealWeatherMapper">
-    <resultMap id="BaseResultMap" type="com.moral.entity.RealWeather" >
-        <id column="city_code" property="cityCode" jdbcType="INTEGER" />
+    <resultMap id="BaseResultMap" type="com.moral.entity.RealWeather">
+        <id column="city_code" property="cityCode" jdbcType="INTEGER"/>
     </resultMap>
     <insert id="insertRealWeather">
         insert into
@@ -13,13 +13,153 @@
         </foreach>
     </insert>
 
-    <select id="getTemp" resultType="java.util.Map">
+    <delete id="deleteRealWeather">
+        delete from real_weather where time=#{time}
+    </delete>
+
+    <select id="getTempAndCloud" resultType="java.util.Map">
         select DATE_FORMAT(time, #{typeFormat}) time,
-        json->'$.temp' 'temp'
+        json->'$.temp' 'temp',
+        json->'$.cloud' 'cloud'
         from real_weather
         where city_code=#{cityCode}
         and time >= #{startTime}
         AND time <![CDATA[<]]> #{endTime}
-        and DATE_FORMAT(time, #{typeFormat}) like '%${time}'
+        and DATE_FORMAT(time,'%H:%i:%s')=#{time}
+        and cast(json->'$.condition' as UNSIGNED INTEGER)>=#{condition}
+    </select>
+
+    <select id="getDayData" resultType="java.util.Map">
+        select
+        round(avg(json->'$.temp')) 'tempAvg',
+        round(avg(json->'$.vis')) 'vis',
+        round(avg(json->'$.cloud')) 'cloud',
+        round(avg(json->'$.windSpeed')) 'windSpeed',
+        round(sum(json->'$.precip'),1) 'precip'
+        from real_weather
+        where city_code=#{cityCode}
+        and time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+    </select>
+
+    <select id="getTimeMaxTemp" resultType="java.util.Map">
+        select
+        DATE_FORMAT(time, #{typeFormat}) time,
+        from real_weather
+        where city_code=#{cityCode}
+        and time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        and json->'$.temp'=
+        (
+        SELECT REPLACE(max(json->'$.temp'),"\"","")
+        FROM real_weather
+        WHERE time>=#{start}
+        and time <![CDATA[<]]> #{end}
+        and city_code=130900
+        ) limit 0,1;
+    </select>
+
+    <select id="getTimeMinTemp" resultType="java.util.Map">
+        select
+        DATE_FORMAT(time, #{typeFormat}) time,
+        from real_weather
+        where city_code=#{cityCode}
+        and time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        and json->'$.temp'=
+        (
+        SELECT REPLACE(max(json->'$.temp'),"\"","")
+        FROM real_weather
+        WHERE time>=#{start}
+        and time <![CDATA[<]]> #{end}
+        and city_code=130900
+        ) limit 0,1;
+    </select>
+
+    <select id="getWeatherByHour" resultType="java.util.Map">
+        select DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') time,
+        value
+        from history_weather_${timeUnits}
+        where city_code=#{cityCode}
+        and (
+            DATE_FORMAT(time, '%Y%H')=#{yearAndHour}
+            or  DATE_FORMAT(time, '%Y%H')=#{yearAndHour1}
+        )
+    </select>
+
+    <select id="getSampleFromHistoryWeather" resultType="java.lang.String">
+        select DATE_FORMAT(time, #{typeFormat}) as time
+        from history_weather_${timeUnits}
+        <where>
+            city_code=#{cityCode}
+            <if test="condition == 0">
+                and cast(value->'$.condition' as UNSIGNED integer) > #{score}
+            </if>
+
+            <if test="condition == 1">
+                and cast(value->'$.condition' as UNSIGNED integer) <![CDATA[<=]]> #{score}
+            </if>
+
+            <if test="startTemp != null">
+                and cast(value->'$.temp' as decimal(10, 1)) >= #{startTemp}
+            </if>
+
+            <if test="endTemp != null">
+                and cast(value->'$.temp' as decimal(10, 1)) <![CDATA[<=]]> #{endTemp}
+            </if>
+
+            <if test="startPressure != null">
+                and cast(value->'$.pressure' as UNSIGNED integer) >= #{startPressure}
+            </if>
+
+            <if test="endPressure != null">
+                and cast(value->'$.pressure' as UNSIGNED integer) <![CDATA[<=]]> #{endPressure}
+            </if>
+
+            and time >= #{start}
+            and time <![CDATA[<]]> #{end}
+            and DATE_FORMAT(time, '%H') in
+            <foreach collection="hours" open="(" separator="," close=")" item="hour">
+                #{hour}
+            </foreach>
+        </where>
+    </select>
+
+    <select id="getSampleFromRealWeather" resultType="java.lang.String">
+        select DATE_FORMAT(time, #{typeFormat}) as time
+        from real_weather
+        <where>
+            city_code=#{cityCode}
+            <if test="condition == 0">
+                and cast(json->'$.condition' as UNSIGNED integer) > #{score}
+            </if>
+
+            <if test="condition == 1">
+                and cast(json->'$.condition' as UNSIGNED integer) <![CDATA[<=]]> #{score}
+            </if>
+
+            <if test="startTemp != null">
+                and cast(json->'$.temp' as decimal(10, 1)) >= #{startTemp}
+            </if>
+
+            <if test="endTemp != null">
+                and cast(json->'$.temp' as decimal(10, 1)) <![CDATA[<=]]> #{endTemp}
+            </if>
+
+            <if test="startPressure != null">
+                and cast(json->'$.pressure' as UNSIGNED integer) >= #{startPressure}
+            </if>
+
+            <if test="endPressure != null">
+                and cast(json->'$.pressure' as UNSIGNED integer) <![CDATA[<=]]> #{endPressure}
+            </if>
+
+            and time >= #{start}
+            and time <![CDATA[<]]> #{end}
+            and DATE_FORMAT(time, '%H') in
+            <foreach collection="hours" open="(" separator="," close=")" item="hour">
+                #{hour}
+            </foreach>
+        </where>
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0