From 6bc5d130aa5b30aa6ea32f6c53bebe6fb9dc05f7 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Wed, 16 Dec 2020 09:21:32 +0800
Subject: [PATCH] 热力图
---
src/main/resources/mapper/HistoryMinutelyMapper.xml | 227 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 139 insertions(+), 88 deletions(-)
diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 3f4c176..252008c 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -8,8 +8,8 @@
<select id="getSersionAvgByDevice" resultType="java.util.Map">
SELECT
<foreach collection="sensorKeys" separator="," item="sensorKey">
- AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
- </foreach>
+ AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+ </foreach>
FROM
history_minutely_${yearAndMonth}
WHERE
@@ -21,11 +21,11 @@
WHERE
d.is_delete = 0
<if test="monitorPointId != null">
- AND d.monitor_point_id = #{monitorPointId}
- </if>
+ AND d.monitor_point_id = #{monitorPointId}
+ </if>
<if test="mac != null">
- AND d.mac = #{mac}
- </if>
+ AND d.mac = #{mac}
+ </if>
)
AND time >= #{start}
AND time < #{end}
@@ -34,8 +34,8 @@
<select id="getAvgByDevice" resultType="java.util.Map">
SELECT
<foreach collection="sensorKeys" separator="," item="sensorKey">
- AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
- </foreach>
+ AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+ </foreach>
FROM
history_daily
WHERE
@@ -47,11 +47,11 @@
WHERE
d.is_delete = 0
<if test="monitorPointId != null">
- AND d.monitor_point_id = #{monitorPointId}
- </if>
+ AND d.monitor_point_id = #{monitorPointId}
+ </if>
<if test="mac != null">
- AND d.mac = #{mac}
- </if>
+ AND d.mac = #{mac}
+ </if>
)
AND time >= #{start}
AND time < #{end}
@@ -61,16 +61,16 @@
SELECT
DATE_FORMAT(time, #{typeFormat}) time
<foreach collection="sensorKeys" open="," separator="," item="sensorKey">
- AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
- </foreach>
+ 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>
+ AND h.mac = #{mac}
+ </if>
<if test="mac == null">
AND h.mac IN
(SELECT
@@ -81,20 +81,20 @@
WHERE
d.monitor_point_id = mp.id
<if test="provinceCode != null">
- AND mp.province_code = #{provinceCode}
- </if>
+ AND mp.province_code = #{provinceCode}
+ </if>
<if test="cityCode != null">
- AND mp.city_code = #{cityCode}
- </if>
+ AND mp.city_code = #{cityCode}
+ </if>
<if test="areaCode != null">
- AND mp.area_code = #{areaCode}
- </if>
+ AND mp.area_code = #{areaCode}
+ </if>
<if test="monitorPointId != null">
- AND mp.id = #{monitorPointId}
- </if>
+ AND mp.id = #{monitorPointId}
+ </if>
<if test="professionId != null">
- AND d.profession_id = #{professionId}
- </if>
+ AND d.profession_id = #{professionId}
+ </if>
)
</if>
@@ -104,36 +104,20 @@
time
</select>
- <select id="getAreaAvgDataByAreaCode" resultType="java.util.Map">
- SELECT
- DATE_FORMAT(time, #{typeFormat}) time,
- AVG(aqi_json->'$.${sensors1}') AS '${sensors2}'
- FROM
- hangzhou_aqi ha
- WHERE
- ha.time >= #{start}
- AND ha.time <![CDATA[<]]> #{end}
- AND ha.city_code = #{areaCode}
- 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>
+ json->'$.${sensorKey}[0]' as '${sensorKey}'
+ </foreach>
</when>
<otherwise>
<foreach collection="sensorKeys"
item="sensorKey" separator="," close=",">
- AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
- </foreach>
+ AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
+ </foreach>
</otherwise>
</choose>
DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as
@@ -144,38 +128,38 @@
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 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>
+ and dev.id = #{dataCondition.areaRangeId}
+ </if>
<if test='"PROFESSION"==dataCondition.deviceDimension.toString()'>
- and dev.profession_id = #{dataCondition.dimensionValue}
- </if>
+ and dev.profession_id = #{dataCondition.dimensionValue}
+ </if>
<if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
- and mpt.id = #{dataCondition.areaRangeId}
- </if>
+ and mpt.id = #{dataCondition.areaRangeId}
+ </if>
<if test='"PROVINCE"==dataCondition.areaRange.toString()'>
- and mpt.province_code = #{dataCondition.areaRangeId}
- </if>
+ and mpt.province_code = #{dataCondition.areaRangeId}
+ </if>
<if test='"CITY"==dataCondition.areaRange.toString()'>
- and mpt.city_code = #{dataCondition.areaRangeId}
- </if>
+ and mpt.city_code = #{dataCondition.areaRangeId}
+ </if>
<if test='"AREA"==dataCondition.areaRange.toString()'>
- and mpt.area_code = #{dataCondition.areaRangeId}
- </if>
+ 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>
+ GROUP BY format_time
+ </if>
ORDER BY format_time asc
</select>
@@ -184,16 +168,16 @@
SELECT
DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time,
<foreach collection="sensorKeys" item="sensorKey" separator=",">
- hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
- hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
- hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
- </foreach>
+ hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
+ hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
+ hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
+ </foreach>
FROM
history_minutely as hm
<where>
<if test="mac!=null">
- and hm.mac=#{mac}
- </if>
+ and hm.mac = #{mac}
+ </if>
and hm.time >= #{startTime}
and hm.time <![CDATA[<]]> #{endTime}
</where>
@@ -205,16 +189,16 @@
SELECT
DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time,
<foreach collection="sensorKeys" item="sensorKey" separator=",">
- hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
- hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
- hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
- </foreach>
+ hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
+ hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
+ hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
+ </foreach>
FROM
history_minutely_${yearAndMonth} as hm
<where>
<if test="mac!=null">
- and hm.mac=#{mac}
- </if>
+ and hm.mac = #{mac}
+ </if>
and hm.time >= #{startTime}
and hm.time <![CDATA[<]]> #{endTime}
</where>
@@ -226,28 +210,27 @@
select
rs.monitorPointName,rs.name,
<foreach collection="timeList" separator="," item="time">
- max(case time when #{time} then rs.${sensorKey} else "" end) as #{time}
- </foreach>
+ max(case time when #{time} then rs.${sensorKey} else "" end) as #{time}
+ </foreach>
from
(SELECT
m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time,
<foreach collection="sensorKeys" separator="," item="sensorKey">
- AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
- </foreach>
+ AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+ </foreach>
FROM
history_${timeUnits} h,
device d,
monitor_point m
WHERE
- h.mac=d.mac
- AND d.monitor_point_id=m.id
+ h.mac = d.mac
+ AND d.monitor_point_id = m.id
AND h.time >= #{start}
AND h.time <![CDATA[<=]]> #{end}
AND h.mac in
- <foreach collection="macs" open="(" separator="," close=")"
- item="mac">
- #{mac}
- </foreach>
+ <foreach collection="macs" open="(" separator="," close=")" item="mac">
+ #{mac}
+ </foreach>
GROUP BY
h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat})
ORDER BY
@@ -270,8 +253,8 @@
device d,
monitor_point m
WHERE
- h.mac=d.mac
- AND d.monitor_point_id=m.id
+ h.mac = d.mac
+ AND d.monitor_point_id = m.id
AND h.time >= #{start}
AND h.time <![CDATA[<=]]> #{end}
AND h.mac in
@@ -285,4 +268,72 @@
order by rs.monitorPointName
</select>
+ <select id="get5MiutesOrHalfHourByDay" resultType="java.util.LinkedHashMap">
+ SELECT
+ <foreach collection="sensorKeys" separator="," item="sensorKey">
+ AVG(h.json->'$.${sensorKey}[0]') AS '${sensorKey}'
+ </foreach>
+ FROM
+ history_${timeUnits} h inner join
+ (select mac from device where monitor_point_id in
+ (
+ select id from monitor_point
+ where
+ <if test="areaCode != null">
+ area_code = #{areaCode}
+ </if>
+
+ <if test="cityCode != null">
+ city_code = #{cityCode}
+ </if>
+
+ <if test="provinceCode != null">
+ province_code = #{provinceCode}
+ </if>
+ )
+ and is_delete=0) m
+ on h.mac=m.mac
+ and h.time>=#{start}
+ and h.time <![CDATA[<]]> #{end}
+ ORDER BY
+ h.time
+ </select>
+
+ <select id="getMultiDeviceSensorData" resultType="java.util.Map">
+ SELECT
+ DATE_FORMAT(time, #{typeFormat}) time,
+ <foreach collection="macs" separator="," item="mac" index="index">
+ AVG(json->'$.${sensorKey}[0]') AS '${index}${sensorKey}'
+ </foreach>
+ FROM
+ history_${timeUnits}
+ WHERE
+ <foreach collection="macs" separator="," item="mac" index="index">
+ mac = #{mac}
+ </foreach>
+ AND time >= #{start}
+ AND h.time <![CDATA[<]]> #{end}
+ GROUP BY
+ DATE_FORMAT(time, #{typeFormat})
+ ORDER BY
+ time
+ </select>
+
+ <select id="getMultiDeviceSensorData1" resultType="java.util.Map">
+ SELECT *
+ from
+ <foreach collection="macs" separator="," item="mac" index="index">
+ (SELECT
+ AVG(json->'$.${sensorKey}[0]') AS '${index}${sensorKey}',
+ DATE_FORMAT(time,'%Y-%m') as time
+ FROM history_${timeUnits}
+ WHERE mac=#{mac}
+ AND time >= #{start}
+ AND time <![CDATA[<]]> #{end}
+ GROUP BY DATE_FORMAT(time,#{typeFormat})
+ ORDER BY
+ time) as t${index}
+ </foreach>
+ WHERE t1.time=t2.time
+ </select>
</mapper>
--
Gitblit v1.8.0