From 9a8498f1dbe3b7362a1a90682edfe062517e42c2 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Thu, 25 Jul 2019 14:29:27 +0800
Subject: [PATCH] 新增无人机在时间段查询sensor值的sql语句

---
 src/main/resources/mapper/HistoryMinutelyMapper.xml |  299 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 168 insertions(+), 131 deletions(-)

diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 3a2d3c1..85ee9b4 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -1,135 +1,172 @@
 <?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.HistoryMinutelyMapper">
-	<resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData" >
-		<result column="format_time" property="category" jdbcType="VARCHAR" />
-		<result column="value" property="value" jdbcType="DOUBLE" />
-	</resultMap>
-	<select id="getSersionAvgByDevice" resultType="java.util.Map">
-		SELECT
-			<foreach  collection="sensorKeys" separator="," item="sensorKey">
-				AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
-			</foreach>
-		FROM
-			history_minutely
-		WHERE
-			mac IN
-				(SELECT
-					d.mac 
-				FROM
-					device d
-				WHERE
-					d.is_delete = 0 
-					<if test="monitorPointId != null">
-					AND d.monitor_point_id = #{monitorPointId}
-					</if>
-					<if test="mac != null">
-					AND d.mac = #{mac}
-					</if>
-				)	
-		AND time >= #{start}
-		AND time &lt; #{end}
-	</select>
-	
-	<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
-		SELECT
-			DATE_FORMAT(time, #{typeFormat}) time
-			<foreach  collection="sensorKeys" open="," separator="," item="sensorKey">
-				AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
-			</foreach>
-		FROM
-			history_${timeUnits} h
-		WHERE
-			h.time >= #{start}
-		AND h.time <![CDATA[<]]> #{end}
-		<if test="mac != null">
-		AND	h.mac = #{mac}
-		</if>
-		<if test="mac == null">
-		AND	h.mac IN
-			(SELECT
-				d.mac 
-			FROM
-				device d,
-				monitor_point mp 
-			WHERE
-				d.monitor_point_id = mp.id 
-				<if test="provinceCode != null">
-				AND mp.province_code = #{provinceCode}
-				</if>
-				<if test="cityCode != null">
-				AND mp.city_code = #{cityCode}
-				</if>
-				<if test="areaCode != null">
-				AND mp.area_code = #{areaCode}
-				</if>
-				<if test="monitorPointId != null">
-				AND mp.id =	#{monitorPointId}
-				</if>
-				<if test="professionId != null">
-				AND d.profession_id = #{professionId}
-				</if>
-			)	
-		</if>
-		
-		GROUP BY
-			DATE_FORMAT(time, #{typeFormat})
-		ORDER BY
-			time
-	</select>
-	<select id="selectLineChartDateByCrieria" resultType="java.util.Map">
-			SELECT
-				<choose>
-					<when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()">
-						<foreach collection="sensorKeys"
-								 item="sensorKey" separator="," close=",">
-							     json->'$.${sensorKey}[0]' as '${sensorKey}'
-						</foreach>
-					</when>
-					<otherwise>
-						<foreach collection="sensorKeys"
-								 item="sensorKey" separator="," close=",">
-							AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
-						</foreach>
-					</otherwise>
-				</choose>
-		     DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time
-		     FROM
-			`history_minutely` hmi
-			<where>
-				and hmi.time >= #{timePeriod.startTime}
-				and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}
-				<if test="dataCondition.actualTime != null">
-					and DATE_FORMAT(time,	'${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = #{dataCondition.actualTime}
-				</if>
-				and hmi.mac in (
-				select mac from device dev
-				join monitor_point mpt  on dev.monitor_point_id = mpt.id
-				<where>
-					 <if test='"DEVICE"==dataCondition.areaRange.toString()'>
-						and dev.id = #{dataCondition.areaRangeId}
-					 </if>
-					<if test='"PROFESSION"==dataCondition.deviceDimension.toString()'>
-						and dev.profession_id = #{dataCondition.dimensionValue}
-					</if>
-					<if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
-						and mpt.id = #{dataCondition.areaRangeId}
-					</if>
-					<if test='"PROVINCE"==dataCondition.areaRange.toString()'>
-						and mpt.province_code = #{dataCondition.areaRangeId}
-					</if>
-					<if test='"CITY"==dataCondition.areaRange.toString()'>
-						and mpt.city_code = #{dataCondition.areaRangeId}
-					</if>
-					<if test='"AREA"==dataCondition.areaRange.toString()'>
-						and mpt.area_code = #{dataCondition.areaRangeId}
-					</if>
-				</where>
-				)
-			</where>
-			<if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()">
-				GROUP BY format_time
-			</if>
-		    ORDER BY format_time asc
-	</select>
+    <resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData">
+        <result column="format_time" property="category" jdbcType="VARCHAR"/>
+        <result column="value" property="value" jdbcType="DOUBLE"/>
+    </resultMap>
+    <select id="getSersionAvgByDevice" resultType="java.util.Map">
+        SELECT
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+        </foreach>
+        FROM
+        history_minutely
+        WHERE
+        mac IN
+        (SELECT
+        d.mac
+        FROM
+        device d
+        WHERE
+        d.is_delete = 0
+        <if test="monitorPointId != null">
+            AND d.monitor_point_id = #{monitorPointId}
+        </if>
+        <if test="mac != null">
+            AND d.mac = #{mac}
+        </if>
+        )
+        AND time >= #{start}
+        AND time &lt; #{end}
+    </select>
+
+    <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time, #{typeFormat}) time
+        <foreach collection="sensorKeys" open="," separator="," item="sensorKey">
+            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+        </foreach>
+        FROM
+        history_${timeUnits} h
+        WHERE
+        h.time >= #{start}
+        AND h.time <![CDATA[<]]> #{end}
+        <if test="mac != null">
+            AND h.mac = #{mac}
+        </if>
+        <if test="mac == null">
+            AND h.mac IN
+            (SELECT
+            d.mac
+            FROM
+            device d,
+            monitor_point mp
+            WHERE
+            d.monitor_point_id = mp.id
+            <if test="provinceCode != null">
+                AND mp.province_code = #{provinceCode}
+            </if>
+            <if test="cityCode != null">
+                AND mp.city_code = #{cityCode}
+            </if>
+            <if test="areaCode != null">
+                AND mp.area_code = #{areaCode}
+            </if>
+            <if test="monitorPointId != null">
+                AND mp.id = #{monitorPointId}
+            </if>
+            <if test="professionId != null">
+                AND d.profession_id = #{professionId}
+            </if>
+            )
+        </if>
+
+        GROUP BY
+        DATE_FORMAT(time, #{typeFormat})
+        ORDER BY
+        time
+    </select>
+    <select id="selectLineChartDateByCrieria" resultType="java.util.Map">
+        SELECT
+        <choose>
+            <when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()">
+                <foreach collection="sensorKeys"
+                         item="sensorKey" separator="," close=",">
+                    json->'$.${sensorKey}[0]' as '${sensorKey}'
+                </foreach>
+            </when>
+            <otherwise>
+                <foreach collection="sensorKeys"
+                         item="sensorKey" separator="," close=",">
+                    AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
+                </foreach>
+            </otherwise>
+        </choose>
+        DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as
+        format_time
+        FROM
+        `history_minutely` hmi
+        <where>
+            and hmi.time >= #{timePeriod.startTime}
+            and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}
+            <if test="dataCondition.actualTime != null">
+                and DATE_FORMAT(time,
+                '${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') =
+                #{dataCondition.actualTime}
+            </if>
+            and hmi.mac in (
+            select mac from device dev
+            join monitor_point mpt on dev.monitor_point_id = mpt.id
+            <where>
+                <if test='"DEVICE"==dataCondition.areaRange.toString()'>
+                    and dev.id = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"PROFESSION"==dataCondition.deviceDimension.toString()'>
+                    and dev.profession_id = #{dataCondition.dimensionValue}
+                </if>
+                <if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
+                    and mpt.id = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"PROVINCE"==dataCondition.areaRange.toString()'>
+                    and mpt.province_code = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"CITY"==dataCondition.areaRange.toString()'>
+                    and mpt.city_code = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"AREA"==dataCondition.areaRange.toString()'>
+                    and mpt.area_code = #{dataCondition.areaRangeId}
+                </if>
+            </where>
+            )
+        </where>
+        <if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()">
+            GROUP BY format_time
+        </if>
+        ORDER BY format_time asc
+    </select>
+
+    <!-- ���������sensor������ -->
+    <select id="getSensorData" resultType="java.util.LinkedHashMap">
+        SELECT
+        <foreach collection="sensorKeys"
+                 item="sensorKey" separator="," close=",">
+            hm.json->'$.${sensorKey}[0]' as '${sensorKey}'
+        </foreach>
+        DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') as uavDate
+        FROM
+        history_minutely as hm
+        <where>
+            <if test="mac!=null and mac!=''">
+                and hm.mac=#{mac}
+            </if>
+        </where>
+        <choose>
+            <when test="startTime !=null and startTime != '' and endTime!=null and endTime !='' ">
+                and hm.time >= #{startTime}
+                and hm.time <![CDATA[<=]]> #{endTime}
+            </when>
+            <when test="startTime !=null and startTime != '' ">
+                and hm.time >= #{startTime}
+            </when>
+            <when test="endTime !=null and endTime != '' ">
+                and hm.time <![CDATA[<=]]> #{endTime}
+            </when>
+            <otherwise>
+                and hm.time >= DATE_ADD(NOW(), INTERVAL -30 MINUTE)
+                and hm.time <![CDATA[<=]]> now()
+            </otherwise>
+        </choose>
+        ORDER BY hm.time
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0