From dba54bf8c8f9299d61c05bf3a941708ea399c998 Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Sun, 26 Apr 2020 15:20:22 +0800 Subject: [PATCH] update excel多个工作表导出 --- src/main/resources/mapper/HistoryMinutelyMapper.xml | 119 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 96 insertions(+), 23 deletions(-) diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 45e4746..933a5e7 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -11,7 +11,7 @@ AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' </foreach> FROM - history_minutely + history_minutely_${yearAndMonth} WHERE mac IN (SELECT @@ -139,34 +139,107 @@ <!-- ���������sensor������ --> <select id="getSensorData" resultType="java.util.LinkedHashMap"> SELECT - <foreach collection="sensorKeys" - item="sensorKey" separator="," close=","> - hm.json->'$.${sensorKey}[0]' as '${sensorKey}' + 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> - DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') as uavDate FROM history_minutely as hm <where> - <if test="mac!=null and mac!=''"> + <if test="mac!=null"> and hm.mac=#{mac} </if> + and hm.time >= #{startTime} + and hm.time <![CDATA[<]]> #{endTime} </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 '-1 01:00:00' day_second) - and hm.time <![CDATA[<=]]> date_sub(now(),interval 1 day) - </otherwise> - </choose> - ORDER BY hm.time + ORDER BY + hm.time </select> + + <select id="getSensorData2020" resultType="java.util.LinkedHashMap"> + 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> + FROM + history_minutely_${yearAndMonth} as hm + <where> + <if test="mac!=null"> + and hm.mac=#{mac} + </if> + and hm.time >= #{startTime} + and hm.time <![CDATA[<]]> #{endTime} + </where> + ORDER BY + hm.time + </select> + + <select id="getDevicesAvgDataToExcel" resultType="java.util.LinkedHashMap"> + select + rs.monitorPointName,rs.name, + <foreach collection="timeList" separator="," item="time"> + 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> + 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, + 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> + </mapper> \ No newline at end of file -- Gitblit v1.8.0