xufenglei
2018-03-23 8e33ede9353a886e46c113a7556fea63eb402672
src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -1,15 +1,13 @@
<?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">
   <select id="getDayAQIByDevice" resultType="map">
<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
         AVG(json -> '$.e1[0]') e1,
         AVG(json -> '$.e2[0]') e2,
         AVG(json -> '$.e10[0]') e10,
         AVG(json -> '$.e11[0]') e11,
         AVG(json -> '$.e15[0]') e15,
         AVG(json -> '$.e16[0]') e16
         ${sensorKeyColumn}
      FROM
         history_minutely
      WHERE
@@ -18,7 +16,7 @@
      AND time &lt; #{end}
   </select>
   
   <select id="getMonitorPointOrDeviceAvgData" resultType="map">
   <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
      SELECT
         DATE_FORMAT(time, #{typeFormat}) time,
         ${sensorKeyColumn}
@@ -43,5 +41,51 @@
      ORDER BY
         time
   </select>
   <select id="selectLineChartDateByCrieria" resultMap="PairDataResultMap">
         SELECT
            <choose>
               <when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()">
                  json->'$.${sensorKey}[0]'
               </when>
               <otherwise>
                  AVG(json->'$.${sensorKey}[0]')
               </otherwise>
            </choose>
            as value,
           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}
                </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>
</mapper>