<?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.WeatherMapper">
|
<select id="getCityWeatherConfig" resultType="java.util.Map">
|
select city_code AS cityCode,
|
city_id AS cityId
|
from city_weather_config
|
</select>
|
|
<insert id="insertForecastWeather">
|
insert into
|
forecast_weather
|
values
|
<foreach collection="list" item="item" separator=",">
|
(#{item.cityCode},#{item.time},#{item.json})
|
</foreach>
|
</insert>
|
|
<delete id="deleteByTime">
|
delete from forecast_weather
|
where
|
time >= #{start}
|
AND time <![CDATA[<]]> #{end}
|
and city_code=#{cityCode}
|
</delete>
|
|
<select id="getBeam" resultType="java.lang.String">
|
select json->'$.beam' as 'beam'
|
from forecast_weather
|
where time=#{time}
|
and city_code=#{cityCode}
|
</select>
|
|
<insert id="insertRealWeather">
|
insert into
|
real_weather
|
values
|
<foreach collection="list" item="item" separator=",">
|
(#{item.cityCode},#{item.time},#{item.json})
|
</foreach>
|
</insert>
|
|
<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->'$.cloud' 'cloud'
|
from real_weather
|
where city_code=#{cityCode}
|
and time >= #{startTime}
|
AND time <![CDATA[<]]> #{endTime}
|
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>
|