xufenglei
2018-06-12 245ab3bcc323dbcc877f8d49fb725b2eec91e118
src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -7,19 +7,36 @@
   </resultMap>
   <select id="getSersionAvgByDevice" resultType="java.util.Map">
      SELECT
         ${sensorKeyColumn}
         <foreach  collection="sensorKeys" separator="," item="sensorKey">
            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
         </foreach>
      FROM
         history_minutely
      WHERE
         mac = #{mac}
         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,
         ${sensorKeyColumn}
         DATE_FORMAT(time, #{typeFormat}) time
         <foreach  collection="sensorKeys" open="," separator="," item="sensorKey">
            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
         </foreach>
      FROM
         history_minutely h
      WHERE
@@ -30,10 +47,29 @@
      </if>
      <if test="mac == null">
      AND   h.mac IN
         <foreach  collection="macs" open="(" separator="," close=")" item="listItem">
            #{listItem}
         </foreach>
         (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
@@ -41,15 +77,22 @@
      ORDER BY
         time
   </select>
   <select id="selectLineChartDateByCrieria" resultMap="PairDataResultMap">
   <select id="selectLineChartDateByCrieria" resultType="java.util.Map">
         SELECT
           <if test='"MINUTE"!=dataCondition.timeUnits.toString()'>
               AVG(json->'$.${sensorKey}[0]')
           </if>
           <if test='"MINUTE"==dataCondition.timeUnits.toString()'>
             json->'$.${sensorKey}[0]'
          </if>
            as value,
            <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_minutely` hmi
@@ -66,11 +109,14 @@
                <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.provice_code = #{dataCondition.areaRangeId}
                  and mpt.province_code = #{dataCondition.areaRangeId}
               </if>
               <if test='"CITY"==dataCondition.areaRange.toString()'>
                  and mpt.city_code = #{dataCondition.areaRangeId}
@@ -81,7 +127,7 @@
            </where>
            )
         </where>
         <if test='"MINUTE"!=dataCondition.timeUnits.toString()'>
         <if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()">
            GROUP BY format_time
         </if>
          ORDER BY format_time asc