From 0d667ba939460c3dc6cdb0c974841bd0be5dc432 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 16 Dec 2020 13:41:56 +0800 Subject: [PATCH] report_avg_datas接口更新 --- src/main/resources/mapper/HistoryMinutelyMapper.xml | 137 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 130 insertions(+), 7 deletions(-) diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 151cc41..252008c 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -31,6 +31,32 @@ AND time < #{end} </select> + <select id="getAvgByDevice" resultType="java.util.Map"> + SELECT + <foreach collection="sensorKeys" separator="," item="sensorKey"> + AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' + </foreach> + FROM + history_daily + 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 < #{end} + </select> + <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map"> SELECT DATE_FORMAT(time, #{typeFormat}) time @@ -77,6 +103,7 @@ ORDER BY time </select> + <select id="selectLineChartDateByCrieria" resultType="java.util.Map"> SELECT <choose> @@ -96,7 +123,7 @@ DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time FROM - `history_minutely` hmi + history_${timeUnits} hmi <where> and hmi.time >= #{timePeriod.startTime} and hmi.time <![CDATA[<=]]> #{timePeriod.endTime} @@ -149,7 +176,7 @@ history_minutely as hm <where> <if test="mac!=null"> - and hm.mac=#{mac} + and hm.mac = #{mac} </if> and hm.time >= #{startTime} and hm.time <![CDATA[<]]> #{endTime} @@ -170,7 +197,7 @@ history_minutely_${yearAndMonth} as hm <where> <if test="mac!=null"> - and hm.mac=#{mac} + and hm.mac = #{mac} </if> and hm.time >= #{startTime} and hm.time <![CDATA[<]]> #{endTime} @@ -196,13 +223,12 @@ 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"> + <foreach collection="macs" open="(" separator="," close=")" item="mac"> #{mac} </foreach> GROUP BY @@ -213,4 +239,101 @@ order by rs.monitorPointName </select> + <select id="getDevicesSensorsAvgDataToExcel" resultType="java.util.LinkedHashMap"> + select + rs.monitorPointName,rs.name, + <foreach collection="timeList" separator="," item="time"> + max(case time when #{time} then rs.json else "" end) as #{time} + </foreach> + from + (SELECT + m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time,h.json + FROM + history_${timeUnits} h, + device d, + monitor_point m + WHERE + 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> + ORDER BY + h.mac) rs + GROUP BY rs.monitorPointName,rs.name + 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