From 66fd957202742202804a614c766b9b973a26d836 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 07 May 2020 17:15:04 +0800 Subject: [PATCH] update --- src/main/resources/mapper/HistoryMinutelyMapper.xml | 176 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 116 insertions(+), 60 deletions(-) diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 151cc41..c202150 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,37 @@ 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} + </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} @@ -35,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 @@ -55,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> @@ -77,62 +103,63 @@ 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 format_time FROM - `history_minutely` hmi + history_${timeUnits} 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 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> @@ -141,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> @@ -162,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> @@ -183,14 +210,45 @@ 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}' + 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 + AND h.time >= #{start} + AND h.time <![CDATA[<=]]> #{end} + AND h.mac in + <foreach collection="macs" open="(" separator="," close=")" + item="mac"> + #{mac} + </foreach> + GROUP BY + h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat}) + ORDER BY + h.mac) rs + GROUP BY rs.monitorPointName,rs.name + 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, @@ -205,8 +263,6 @@ item="mac"> #{mac} </foreach> - GROUP BY - h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat}) ORDER BY h.mac) rs GROUP BY rs.monitorPointName,rs.name -- Gitblit v1.8.0