From 8dc1a393928b0195bf0b5a6d6f8daec6e4a043b1 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 18 Nov 2020 14:18:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/resources/mapper/HistoryMapper.xml |  397 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 271 insertions(+), 126 deletions(-)

diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 6c9f8c5..0fd5fcf 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -1,111 +1,111 @@
 <?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.HistoryMapper">
-	<select id="selectValueByMacAndTime" resultType="java.lang.String">
-		select `value` from history
+    <select id="selectValueByMacAndTime" resultType="java.lang.String">
+		select `value` from history_${timeUnits}
 		where  time = #{time} and mac = #{mac}
 		limit 0,1
 	</select>
 
-	<select id="getAreaAllDataByAccount" resultType="java.util.LinkedHashMap">
-		SELECT
-		<if test="macKey != null">
-			d.`name`,
-		</if>
-		<foreach collection="sensorKeys" separator="," item="sensorKey">
-			AVG(h.`value` ->'$.${sensorKey}[0]') AS '${sensorKey}'
-		</foreach>
-		FROM
-			history h,
-			device d,
-			monitor_point mp
-		WHERE
-			h.mac = d.mac
-			AND d.monitor_point_id = mp.id
-			<if test="areaCode != null">
-				AND mp.area_code = #{areaCode}
-			</if>
-			<if test="start != null">
-				AND h.time >= #{start}
-			</if>
-			<if test="end != null">
-				AND h.time &lt; #{end}
-			</if>
-			<if test="monitorPointId != null">
-				AND mp.id = #{monitorPointId}
-			</if>
-			<if test="orgIds != null and orgIds.size &gt; 0">
-				AND mp.organization_id IN
-				<foreach collection="orgIds" open="(" separator="," close=")"
-					item="listItem">
-					#{listItem}
-				</foreach>
-			</if>
-		<if test="macKey != null">
-			GROUP BY d.id
-			ORDER BY ${macKey} desc
-		</if>
-	</select>
+    <select id="getAreaAllDataByAccount" resultType="java.util.LinkedHashMap">
+        SELECT
+        <if test="macKey != null">
+            d.`name`,
+        </if>
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            AVG(h.`value` ->'$.${sensorKey}') AS '${sensorKey}'
+        </foreach>
+        FROM
+        history_${timeUnits} h,
+        device d,
+        monitor_point mp
+        WHERE
+        h.mac = d.mac
+        AND d.monitor_point_id = mp.id
+        <if test="areaCode != null">
+            AND mp.area_code = #{areaCode}
+        </if>
+        <if test="start != null">
+            AND h.time >= #{start}
+        </if>
+        <if test="end != null">
+            AND h.time &lt; #{end}
+        </if>
+        <if test="monitorPointId != null">
+            AND mp.id = #{monitorPointId}
+        </if>
+        <if test="orgIds != null and orgIds.size &gt; 0">
+            AND mp.organization_id IN
+            <foreach collection="orgIds" open="(" separator="," close=")"
+                     item="listItem">
+                #{listItem}
+            </foreach>
+        </if>
+        <if test="macKey != null">
+            GROUP BY d.id
+            ORDER BY ${macKey} desc
+        </if>
+    </select>
 
-	<select id="getRegionRankingData" resultType="java.util.Map">
-		SELECT
-			AVG( h.${column} -> '$.${sensorKey}[0]' ) avg ,
-			<if test="dimension == 'profession'">
-				p.`name`
-			</if>
-			<if test="dimension == 'monitorPoint'">
-				mp.`name`
-			</if>
-			<if test="dimension == 'region'">
-				r.${nextLevel}_name AS 'name'
-			</if>
-		FROM
-			<if test="dimension == 'profession'">
-				profession p , 
-			</if>
-			<if test="dimension == 'region'">
-				${nextLevel} r,
-			</if>
-			device d,
-			${table} h,
-			monitor_point mp
-		WHERE
-			d.mac = h.mac 
-			AND d.is_delete = '0'
-			AND mp.is_delete = '0'
-			AND d.monitor_point_id = mp.id 
-			AND h.time >= #{start}
-			AND mp.${regionType}_code = #{regionCode}
-			<if test="dimension == 'profession'">
-				AND d.profession_id = p.id 
-			</if>
-			<if test="dimension == 'region'">
-				AND r.${nextLevel}_code = mp.${nextLevel}_code
-			</if>
-			<if test="orgIds != null and orgIds.size &gt; 0">
-				AND mp.organization_id IN
-				<foreach  collection="orgIds" open="(" separator="," close=")" item="listItem">
-					#{listItem}
-				</foreach>
-			</if>
-		GROUP BY
-			<if test="dimension == 'profession'">
-				p.id
-			</if>
-			<if test="dimension == 'monitorPoint'">
-				mp.id
-			</if>
-			<if test="dimension == 'region'">
-				mp.${nextLevel}_code
-			</if>
-		ORDER BY
-			avg DESC
-		<if test="dimension == 'monitorPoint'">
-		LIMIT 0,50
-		</if>
-	</select>
-	
-	<select id="selectNextLevelRegion" resultType="string">
+    <select id="getRegionRankingData" resultType="java.util.Map">
+        SELECT
+        AVG( h.${column} -> '$.${sensorKey}[0]' ) avg ,
+        <if test="dimension == 'profession'">
+            p.`name`
+        </if>
+        <if test="dimension == 'monitorPoint'">
+            mp.`name`
+        </if>
+        <if test="dimension == 'region'">
+            r.${nextLevel}_name AS 'name'
+        </if>
+        FROM
+        <if test="dimension == 'profession'">
+            profession p ,
+        </if>
+        <if test="dimension == 'region'">
+            ${nextLevel} r,
+        </if>
+        device d,
+        ${table} h,
+        monitor_point mp
+        WHERE
+        d.mac = h.mac
+        AND d.is_delete = '0'
+        AND mp.is_delete = '0'
+        AND d.monitor_point_id = mp.id
+        AND h.time >= #{start}
+        AND mp.${regionType}_code = #{regionCode}
+        <if test="dimension == 'profession'">
+            AND d.profession_id = p.id
+        </if>
+        <if test="dimension == 'region'">
+            AND r.${nextLevel}_code = mp.${nextLevel}_code
+        </if>
+        <if test="orgIds != null and orgIds.size &gt; 0">
+            AND mp.organization_id IN
+            <foreach collection="orgIds" open="(" separator="," close=")" item="listItem">
+                #{listItem}
+            </foreach>
+        </if>
+        GROUP BY
+        <if test="dimension == 'profession'">
+            p.id
+        </if>
+        <if test="dimension == 'monitorPoint'">
+            mp.id
+        </if>
+        <if test="dimension == 'region'">
+            mp.${nextLevel}_code
+        </if>
+        ORDER BY
+        avg DESC
+        <if test="dimension == 'monitorPoint'">
+            LIMIT 0,50
+        </if>
+    </select>
+
+    <select id="selectNextLevelRegion" resultType="string">
 		SELECT
 			${nextLevel}_name AS 'name' 
 		FROM
@@ -114,7 +114,7 @@
 			${regionType}_code = #{regionCode}
 	</select>
 
-	<select id="getDischargeByRegion" resultType="java.util.Map">
+    <select id="getDischargeByRegion" resultType="java.util.Map">
 		SELECT
 			mp.`name`,
 			dis.`value` -> '$.${sensorKey}' 'value'
@@ -126,40 +126,185 @@
 			AND mp.${regionType}_code = #{regionCode}
 			AND dis.`year` = #{year}
 	</select>
-	
-	<select id="getValueByMacAndSize" resultType="java.util.Map">
+
+    <select id="getValueByMacAndSize" resultType="java.util.Map">
 		SELECT 
 			value,
 			time
 		FROM
-			history 
+			history_${timeUnits}
 		WHERE
 			mac = #{mac} 
 		ORDER BY
 			time DESC 
 		LIMIT #{size}
 	</select>
-	
-	<select id="getActualDataByRegion" resultType="java.util.Map">
-		SELECT
-		<foreach collection="sensorKeys" separator="," item="sensorKey">
-			MAX( `value` ->> '$.${sensorKey}' ) AS '${sensorKey}' 
-		</foreach>
-		FROM
-			history h ,
-			device d,
-			monitor_point mp
-		<where>
-			h.mac = d.mac 
-			AND d.monitor_point_id = mp.id 
-		<if test="orgIds != null and orgIds.size &gt; 0">
-			AND mp.organization_id IN
-			<foreach  collection="orgIds" open="(" separator="," close=")" item="listItem">
-				#{listItem}
-			</foreach>
-		</if>
-			AND h.time >= #{start}			
-			AND h.time &lt; #{end}	
-		</where>
+
+    <select id="getActualDataByRegion" resultType="java.util.Map">
+        SELECT
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            MAX( `value` -> '$.${sensorKey}' ) * 1 AS '${sensorKey}'
+        </foreach>
+        FROM
+        history_${timeUnits} h ,
+        device d,
+        monitor_point mp
+        <where>
+            h.mac = d.mac
+            AND d.monitor_point_id = mp.id
+            <if test="orgIds != null and orgIds.size &gt; 0">
+                AND mp.organization_id IN
+                <foreach collection="orgIds" open="(" separator="," close=")" item="listItem">
+                    #{listItem}
+                </foreach>
+            </if>
+            AND h.time >= #{start}
+            AND h.time &lt; #{end}
+        </where>
+    </select>
+
+    <select id="getAVGValueByMacAndTimeslot" resultType="java.util.Map">
+		SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15
+		FROM history_${timeUnits}
+		WHERE mac = #{mac}
+		AND time >= #{starttime}
+		AND time <![CDATA[<]]> #{endtime}
 	</select>
+
+    <!-- ���������sensor������������ -->
+    <select id="getSensorDataToday" resultType="java.util.LinkedHashMap">
+        SELECT
+        DATE_FORMAT(time,'%Y-%m-%d %H:%i') time,
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            AVG(h.value ->'$.${sensorKey}') AS '${sensorKey}',
+            MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,5))) AS 'min${sensorKey}',
+            MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,5))) AS 'max${sensorKey}'
+        </foreach>
+        FROM
+        history h
+        <where>
+            <if test="mac!=null">
+                and h.mac = #{mac}
+            </if>
+            and h.time >= #{startTime}
+            and h.time <![CDATA[<=]]> #{endTime}
+        </where>
+        GROUP BY
+        DATE_FORMAT(time,'%Y-%m-%d %H:%i')
+        ORDER BY
+        time
+    </select>
+
+    <select id="getAVGSensorRankByMonitorPointIdList" resultType="java.util.Map">
+        SELECT mp.name, AVG(JSON_EXTRACT(h.value,'$.${sensor}[0]')) sensor
+        FROM device d, history_${timeUnits} h, monitor_point mp
+        WHERE d.mac=h.mac
+        And mp.id=d.monitor_point_id
+        AND d.monitor_point_id IN
+        <foreach collection="monitorPointIdList" index="index" item="monitorPointId" open="(" separator="," close=")">
+            #{monitorPointId}
+        </foreach>
+        AND h.time BETWEEN #{before5Time} AND #{endTime}
+        GROUP BY d.monitor_point_id
+        ORDER BY AVG(JSON_EXTRACT(h.value,'$.${sensor}[0]')) DESC
+    </select>
+
+    <select id="getMonitorPointAVGValueByMonitorPointIdAndTimeslot" resultType="java.util.Map">
+    	SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15
+		FROM device d,history_${timeUnits} h
+		WHERE d.monitor_point_id = #{monitor_point_id}
+		AND d.mac = h.mac
+		AND h.time >= #{starttime}
+		AND h.time <![CDATA[<]]> #{endtime}
+    </select>
+
+    <!-- ���������sensor������ -->
+    <select id="getCarSensorData" resultType="java.util.LinkedHashMap">
+        SELECT
+        DATE_FORMAT(h.time,'%Y-%m-%d %H:%i:%s') time,
+        <foreach collection="sensorKeys" item="sensorKey" separator=",">
+            h.value->'$.${sensorKey}' as '${sensorKey}'
+        </foreach>
+        FROM
+        history_special as h
+        <where>
+            <if test="mac!=null">
+                and h.mac = #{mac}
+            </if>
+            and h.time >= #{startTime}
+            and h.time <![CDATA[<]]> #{endTime}
+        </where>
+        ORDER BY
+        h.time
+    </select>
+
+    <!-- ��������������� -->
+    <select id="getUavSensorData" resultType="java.util.LinkedHashMap">
+        SELECT
+        DATE_FORMAT(h.time,'%Y-%m-%d %H:%i:%s') time,
+        <foreach collection="sensorKeys" item="sensorKey" separator=",">
+            h.value->'$.${sensorKey}' as '${sensorKey}'
+        </foreach>
+        FROM
+        history_special as h
+        <where>
+            <if test="mac!=null">
+                and h.mac = #{mac}
+            </if>
+            and h.time >= #{startTime}
+            and h.time <![CDATA[<]]> #{endTime}
+        </where>
+        ORDER BY
+        h.time
+    </select>
+
+    <select id="listGetSensorData" resultType="java.util.LinkedHashMap">
+        SELECT
+        DATE_FORMAT(h.time,'%Y-%m-%d %H:%i:%s') time,
+        <foreach collection="sensorKeys" item="sensorKey" separator=",">
+            h.value->'$.${sensorKey}' as '${sensorKey}'
+        </foreach>
+        FROM
+        history as h
+        <where>
+            <if test="mac!=null">
+                and h.mac = #{mac}
+            </if>
+            and h.time >= #{startTime}
+            and h.time <![CDATA[<]]> #{endTime}
+        </where>
+        ORDER BY
+        h.time
+    </select>
+
+    <select id="getNum" resultType="java.lang.Integer">
+        select count(*) from history_hourly where time <![CDATA[>=]]> #{timef} and time <![CDATA[<=]]> #{timea}
+    </select>
+
+    <select id="getO3AVG" resultType="java.util.LinkedHashMap">
+         select DATE_FORMAT(time,'%Y-%m-%d %H:%i:%s') time,json->'$.e15[0]' as e15
+         FROM history_hourly
+         where time <![CDATA[>=]]>#{date}
+         and time <![CDATA[<]]>#{nextDate}
+         and mac=#{mac}
+         ORDER BY `time`
+    </select>
+
+    <select id="getJsonData" resultType="java.lang.String">
+        select `json` from ${table}
+		where  time = #{time} and mac = #{mac}
+    </select>
+
+    <select id="getValueByMacAndTime" resultType="java.lang.String">
+        select `value` from history_${timeUnits}
+		where  mac = #{mac} and time &gt;= #{time1} and time &lt;=#{time}
+        limit 0,1
+    </select>
+    <select id="getDailyAvgData" resultType="java.util.Map">
+        SELECT  AVG(hd.json->"$.e1[0]") as `PM2_5`,AVG(hd.json->"$.e2[0]") as 'PM10',AVG(hd.json->"$.e10[0]") as 'CO',
+            AVG(hd.json->"$.e11[0]") as 'SO2',AVG(hd.json->"$.e16[0]") as 'NO2',AVG(hd.json->"$.e15[0]") as 'O3_day'
+FROM `history_daily` hd,monitor_point mt,device d where mt.id=d.monitor_point_id
+and d.mac=hd.mac and mt.id=#{mId} and time=#{time}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0