From 0a107debd7676141376a59bd3d4472912b24f7dc Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Thu, 13 Aug 2020 09:37:43 +0800
Subject: [PATCH] 风场图update

---
 src/main/resources/mapper/HistoryMinutelyMapper.xml |  480 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 259 insertions(+), 221 deletions(-)

diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 9a7d185..ac1e709 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -1,233 +1,271 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.moral.mapper.HistoryMinutelyMapper">
-  <resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData">
-    <result column="format_time" property="category" jdbcType="VARCHAR"/>
-    <result column="value" property="value" jdbcType="DOUBLE"/>
-  </resultMap>
-  <select id="getSersionAvgByDevice" resultType="java.util.Map">
-    SELECT
-    <foreach collection="sensorKeys" separator="," item="sensorKey">
-      AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
-    </foreach>
-    FROM
-    history_minutely_${yearAndMonth}
-    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 &lt; #{end}
-  </select>
-
-  <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
-    SELECT
-    DATE_FORMAT(time, #{typeFormat}) time
-    <foreach collection="sensorKeys" open="," separator="," item="sensorKey">
-      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>
-    <if test="mac == null">
-      AND h.mac IN
-      (SELECT
-      d.mac
-      FROM
-      device d,
-      monitor_point mp
-      WHERE
-      d.monitor_point_id = mp.id
-      <if test="provinceCode != null">
-        AND mp.province_code = #{provinceCode}
-      </if>
-      <if test="cityCode != null">
-        AND mp.city_code = #{cityCode}
-      </if>
-      <if test="areaCode != null">
-        AND mp.area_code = #{areaCode}
-      </if>
-      <if test="monitorPointId != null">
-        AND mp.id = #{monitorPointId}
-      </if>
-      <if test="professionId != null">
-        AND d.profession_id = #{professionId}
-      </if>
-      )
-    </if>
-
-    GROUP BY
-    DATE_FORMAT(time, #{typeFormat})
-    ORDER BY
-    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}'
+    <resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData">
+        <result column="format_time" property="category" jdbcType="VARCHAR"/>
+        <result column="value" property="value" jdbcType="DOUBLE"/>
+    </resultMap>
+    <select id="getSersionAvgByDevice" resultType="java.util.Map">
+        SELECT
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
         </foreach>
-      </when>
-      <otherwise>
-        <foreach collection="sensorKeys"
-                 item="sensorKey" separator="," close=",">
-          AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
+        FROM
+        history_minutely_${yearAndMonth}
+        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 &lt; #{end}
+    </select>
+
+    <select id="getAvgByDevice" resultType="java.util.Map">
+        SELECT
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            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
-    <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 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}
+        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='"PROFESSION"==dataCondition.deviceDimension.toString()'>
-          and dev.profession_id = #{dataCondition.dimensionValue}
+        <if test="mac != null">
+            AND d.mac = #{mac}
         </if>
-        <if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
-          and mpt.id = #{dataCondition.areaRangeId}
-        </if>
-        <if test='"PROVINCE"==dataCondition.areaRange.toString()'>
-          and mpt.province_code = #{dataCondition.areaRangeId}
-        </if>
-        <if test='"CITY"==dataCondition.areaRange.toString()'>
-          and mpt.city_code = #{dataCondition.areaRangeId}
-        </if>
-        <if test='"AREA"==dataCondition.areaRange.toString()'>
-          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>
-    ORDER BY format_time asc
-  </select>
+        )
+        AND time >= #{start}
+        AND time &lt; #{end}
+    </select>
 
-  <!-- ���������sensor������ -->
-  <select id="getSensorData" 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 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="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time, #{typeFormat}) time
+        <foreach collection="sensorKeys" open="," separator="," item="sensorKey">
+            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>
+        <if test="mac == null">
+            AND h.mac IN
+            (SELECT
+            d.mac
+            FROM
+            device d,
+            monitor_point mp
+            WHERE
+            d.monitor_point_id = mp.id
+            <if test="provinceCode != null">
+                AND mp.province_code = #{provinceCode}
+            </if>
+            <if test="cityCode != null">
+                AND mp.city_code = #{cityCode}
+            </if>
+            <if test="areaCode != null">
+                AND mp.area_code = #{areaCode}
+            </if>
+            <if test="monitorPointId != null">
+                AND mp.id = #{monitorPointId}
+            </if>
+            <if test="professionId != null">
+                AND d.profession_id = #{professionId}
+            </if>
+            )
+        </if>
 
-  <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>
+        GROUP BY
+        DATE_FORMAT(time, #{typeFormat})
+        ORDER BY
+        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="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>
+            </when>
+            <otherwise>
+                <foreach collection="sensorKeys"
+                         item="sensorKey" separator="," close=",">
+                    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_${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 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>
+                <if test='"PROFESSION"==dataCondition.deviceDimension.toString()'>
+                    and dev.profession_id = #{dataCondition.dimensionValue}
+                </if>
+                <if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
+                    and mpt.id = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"PROVINCE"==dataCondition.areaRange.toString()'>
+                    and mpt.province_code = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"CITY"==dataCondition.areaRange.toString()'>
+                    and mpt.city_code = #{dataCondition.areaRangeId}
+                </if>
+                <if test='"AREA"==dataCondition.areaRange.toString()'>
+                    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>
+        ORDER BY format_time asc
+    </select>
+
+    <!-- ���������sensor������ -->
+    <select id="getSensorData" 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 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="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>

--
Gitblit v1.8.0