From d3c5982218db1413c8f609f1f51b49c49a2db496 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 21 Oct 2020 17:19:58 +0800
Subject: [PATCH] 大屏多设备数据报表接口

---
 src/main/resources/mapper/HangzhouAqiMapper.xml |  160 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 132 insertions(+), 28 deletions(-)

diff --git a/src/main/resources/mapper/HangzhouAqiMapper.xml b/src/main/resources/mapper/HangzhouAqiMapper.xml
index 81fe13b..b2299e7 100644
--- a/src/main/resources/mapper/HangzhouAqiMapper.xml
+++ b/src/main/resources/mapper/HangzhouAqiMapper.xml
@@ -1,21 +1,21 @@
 <?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.HangzhouAqiMapper">
-  <resultMap id="BaseResultMap" type="com.moral.entity.HangzhouAqi">
-    <id column="time" property="time" jdbcType="TIMESTAMP"/>
-    <result column="aqi_json" property="aqiJson" jdbcType="OTHER"/>
-    <result column="city_code" property="cityCode" jdbcType="VARCHAR"/>
-  </resultMap>
-  <sql id="Base_Column_List">
+    <resultMap id="BaseResultMap" type="com.moral.entity.HangzhouAqi">
+        <id column="time" property="time" jdbcType="TIMESTAMP"/>
+        <result column="aqi_json" property="aqiJson" jdbcType="OTHER"/>
+        <result column="city_code" property="cityCode" jdbcType="VARCHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
     time, aqi_json, city_code
   </sql>
-  <!--<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.util.Date" >-->
-  <!--select-->
-  <!--<include refid="Base_Column_List" />-->
-  <!--from hangzhou_aqi-->
-  <!--where time = #{time,jdbcType=TIMESTAMP}-->
-  <!--</select>-->
-  <select id="selectAqisByCodeAndTimePeriod" resultType="map" parameterType="java.util.Date">
+    <!--<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.util.Date" >-->
+    <!--select-->
+    <!--<include refid="Base_Column_List" />-->
+    <!--from hangzhou_aqi-->
+    <!--where time = #{time,jdbcType=TIMESTAMP}-->
+    <!--</select>-->
+    <select id="selectAqisByCodeAndTimePeriod" resultType="map" parameterType="java.util.Date">
       select
         aqi_json->'$.AQI' as aqi,DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as 'time'
       from hangzhou_aqi
@@ -33,22 +33,126 @@
           order by time asc
     </select>
 
-  <select id="getAqisByOrganizationId" resultType="map">
-    SELECT
-    h.aqi_json ->> '$.AQI' * 1 aqi,
-    DATE_FORMAT( h.time, '%H' ) * 1 time
-    FROM
-    hangzhou_aqi h
-    <where>
-      h.city_code = #{cityCode}
-      AND h.time <![CDATA[<]]> #{end}
-    </where>
-    ORDER BY
-    h.time DESC
-    LIMIT 24
+    <select id="getAqisByOrganizationId" resultType="map">
+        SELECT
+        h.aqi_json ->> '$.AQI' * 1 aqi,
+        DATE_FORMAT( h.time, '%H' ) * 1 time
+        FROM
+        hangzhou_aqi h
+        <where>
+            h.city_code = #{cityCode}
+            AND h.time <![CDATA[<]]> #{end}
+        </where>
+        ORDER BY
+        h.time DESC
+        LIMIT 24
+    </select>
+
+    <select id="queryCityCode" resultType="integer">
+      select city_code from area where area_code = #{areaCode}
+    </select>
+
+    <select id="getAreaAvgDataByAreaCode" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time, #{typeFormat}) time,
+        round(AVG(case when aqi_json->'$.${sensors}' is null then aqi_json->'$.${sensors1}' else aqi_json->'$.${sensors}' end),4)  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="getAqiDataByAreaCode" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time, #{typeFormat}) time,
+        ifnull(aqi_json->'$.O3C',aqi_json->'$.O3') as 'O3'
+        FROM
+        hangzhou_aqi
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
+        ORDER BY
+        time
   </select>
 
-  <select id="queryCityCode" resultType="integer">
-      select city_code from area where area_code = #{areaCode}
+    <select id="getHistoryO3" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time, #{typeFormat}) time,
+        value->'$.O3' as 'O3'
+        FROM
+        history_aqi_${timeUnits}
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
+        ORDER BY
+        time
+  </select>
+
+    <select id="getAqi" resultType="java.util.Map">
+        select
+        DATE_FORMAT(time, #{typeFormat}) time,
+        aqi_json json
+        FROM
+        hangzhou_aqi
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
+        ORDER BY
+        time
+    </select>
+
+    <select id="getHistoryAqi" resultType="java.util.Map">
+        select
+        DATE_FORMAT(time, #{typeFormat}) time,
+        value json
+        FROM
+        history_aqi_${timeUnits}
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
+        ORDER BY
+        time
+    </select>
+
+    <select id="getAvgO3EightHours" resultType="java.util.Map">
+        select
+        cast(AVG(case when aqi_json->'$.O3C' is null then aqi_json->'$.O3' else aqi_json->'$.O3C' end) as UNSIGNED  integer) 'O3_8H'
+        FROM
+        hangzhou_aqi
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
+    </select>
+
+    <select id="getHistoryO3EightHours" resultType="java.util.Map">
+        select
+        value->'$.O3_8h' 'O3_8H'
+        FROM
+        history_aqi_${timeUnits}
+        WHERE
+        time = #{time}
+        and city_code=#{cityCode}
+    </select>
+
+    <select id="getSumO3" resultType="java.util.Map">
+        select
+        SUM(case when aqi_json->'$.O3C' is null then aqi_json->'$.O3' else aqi_json->'$.O3C' end) 'O3Sum'
+        FROM
+        hangzhou_aqi
+        WHERE
+        time >= #{start}
+        AND time <![CDATA[<]]> #{end}
+        AND city_code = #{cityCode}
     </select>
 </mapper>

--
Gitblit v1.8.0