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 85ee9b4..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 -30 MINUTE)
-                and hm.time <![CDATA[<=]]> now()
-            </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