From ed3870b7841c630f98fd35faadf72a3992585663 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Thu, 31 Dec 2020 17:19:31 +0800
Subject: [PATCH] 程序离线报警

---
 src/main/resources/mapper/WeatherMapper.xml |   83 ++++++++++++++++-------------------------
 1 files changed, 33 insertions(+), 50 deletions(-)

diff --git a/src/main/resources/mapper/WeatherMapper.xml b/src/main/resources/mapper/WeatherMapper.xml
index 06ce0a4..aec50d0 100644
--- a/src/main/resources/mapper/WeatherMapper.xml
+++ b/src/main/resources/mapper/WeatherMapper.xml
@@ -1,7 +1,6 @@
 <?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">
-    <cache/>
 
     <select id="getCityWeatherConfig" resultType="java.util.Map">
         select city_code AS cityCode,
@@ -116,33 +115,22 @@
         )
     </select>
 
-    <select id="getSampleFromHistoryWeather" resultType="java.lang.String" useCache="true">
-        select DATE_FORMAT(time, #{typeFormat}) as time
+    <select id="getSampleFromHistoryWeather" resultType="java.util.Map">
+        select DATE_FORMAT(time, #{typeFormat}) as `time`,
+        cast(value->'$.temp' as SIGNED) as 'temp',
+        cast(value->'$.pressure' as SIGNED) as 'pressure',
+        value->'$.windDir'  as 'windDir',
+        cast(value->'$.windScale' as SIGNED)  as 'windScale'
         from history_weather_${timeUnits}
         <where>
             city_code=#{cityCode}
+
             <if test="condition == 0">
-                and cast(value->'$.condition' as UNSIGNED integer) > #{score}
+                and cast(value->'$.condition' as SIGNED) > #{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}
+                and cast(value->'$.condition' as SIGNED) <![CDATA[<=]]> #{score}
             </if>
 
             <if test="start != null">
@@ -153,48 +141,39 @@
                 and time <![CDATA[<]]> #{end}
             </if>
 
+            <if test="startTemp != null">
+                and cast(value->'$.temp' as SIGNED) >= #{startTemp}
+            </if>
+
+            <if test="endTemp != null">
+                and cast(value->'$.temp' as SIGNED) <![CDATA[<=]]> #{endTemp}
+            </if>
+
             <if test="hours != null">
                 and DATE_FORMAT(time, '%H') in
                 <foreach collection="hours" open="(" separator="," close=")" item="hour">
                     #{hour}
                 </foreach>
             </if>
-
         </where>
     </select>
 
-    <select id="getSampleFromRealWeather" resultType="java.lang.String" useCache="true">
-        select DATE_FORMAT(time, #{typeFormat}) as time
+    <select id="getSampleFromRealWeather" resultType="java.util.Map">
+        select DATE_FORMAT(time, #{typeFormat}) as `time`,
+        cast(json->'$.temp' as SIGNED) as 'temp',
+        cast(json->'$.pressure' as SIGNED) as 'pressure',
+        json->'$.windDir' as 'windDir',
+        cast(json->'$.windScale' as SIGNED)  as 'windScale'
         from real_weather
         <where>
             city_code=#{cityCode}
 
-            <if test="windDir != null">
-                and json->'$.windDir' = #{windDir}
-            </if>
-
             <if test="condition == 0">
-                and cast(json->'$.condition' as UNSIGNED integer) > #{score}
+                and cast(json->'$.condition' as SIGNED) > #{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}
+                and cast(json->'$.condition' as SIGNED) <![CDATA[<=]]> #{score}
             </if>
 
             <if test="start != null">
@@ -205,15 +184,19 @@
                 and time <![CDATA[<]]> #{end}
             </if>
 
+            <if test="startTemp != null">
+                and cast(json->'$.temp' as SIGNED) >= #{startTemp}
+            </if>
+
+            <if test="endTemp != null">
+                and cast(json->'$.temp' as SIGNED) <![CDATA[<=]]> #{endTemp}
+            </if>
+
             <if test="hours != null">
                 and DATE_FORMAT(time, '%H') in
                 <foreach collection="hours" open="(" separator="," close=")" item="hour">
                     #{hour}
                 </foreach>
-            </if>
-
-            <if test="month != null">
-                and DATE_FORMAT(time, '%m')=#{month}
             </if>
         </where>
     </select>

--
Gitblit v1.8.0