fengxiang
2018-06-25 071adf2ca6063884b095544eff17f976a258cb4d
src/main/resources/mapper/AlarmMapper.xml
@@ -1,79 +1,25 @@
<?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.AlarmMapper">
   <select id="getAlarmData" resultType="java.util.LinkedHashMap">
      SELECT
         <if test="dimension=='monitorPoint'">
            `name`,
         </if>
         <choose>
            <when test="sensorKeys.size > 0">
               <foreach collection="sensorKeys" separator="," item="sensorKey">
                  SUM( ${sensorKey} ) AS '${sensorKey}'
               </foreach>
               <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
                  SUM( ${sensorKey} )
               </foreach>
            </when>
            <otherwise>
               time
            </otherwise>
         </choose>
      FROM
         (
            SELECT
               <if test="dimension=='monitorPoint'">
                  mp.`name`,
               </if>
               <choose>
                  <when test="sensorKeys.size > 0">
                     <foreach collection="sensorKeys" separator="," item="sensorKey">
                        CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
                     </foreach>
                  </when>
                  <otherwise>
                     DATE_FORMAT( h.time, '%Y-%m-%d' ) AS 'time'
                  </otherwise>
               </choose>
            FROM
               alarm h,
               device d,
               monitor_point mp
            WHERE d.monitor_point_id = mp.id
               AND h.mac = d.mac
               AND h.time >= #{start}
               AND h.time <![CDATA[<]]> #{end}
               <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="organizationId != null">
               AND mp.organization_id = #{organizationId}
               </if>
               <if test="mac != null">
               AND d.mac =   #{mac}
               </if>
               <if test="state != null">
               AND h.state = #{state}
               </if>
            GROUP BY
               <if test="dimension=='monitorPoint'">
                  mp.id,
               </if>
               DATE_FORMAT( h.time, '%Y-%m-%d' )
         ) a
      <if test="dimension=='monitorPoint'">
         GROUP BY name
   <select id="countByTimes"   resultType="java.util.Map">
      select
      <if test="format !=null">
         DATE_FORMAT(time,#{format}) as time,
      </if>
      COUNT(*) as count from alarm
      <where>
         <if test="start != null">
            time >= #{start}
         </if>
         <if test="end != null">
            and time
            <![CDATA[
            <=
            ]]> #{end}
         </if>
      </where>
      <if test="format !=null">
         GROUP BY DATE_FORMAT(time,#{format}) ;
      </if>
   </select>
</mapper>