fengxiang
2018-05-04 4a41bd4e105385b5460e5a81c8b67e5f701a262b
src/main/resources/mapper/AlarmMapper.xml
@@ -1,26 +1,40 @@
<?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 id="getAlarmData" resultType="java.util.Map">
      SELECT
         <if test="dimension=='monitorPoint'">
            `name`,
         </if>
         <foreach collection="sensorKeys" item="sensorKey" separator=",">
            SUM( ${sensorKey} ) AS '${sensorKey}'
         </foreach>
         <foreach close=" AS 'sum' " collection="sensorKeys" item="sensorKey" open="," separator="+">
            SUM( ${sensorKey} )
         </foreach>
         <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>
               <foreach collection="sensorKeys" item="sensorKey" separator=",">
                  CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
               </foreach>
               <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,
@@ -41,8 +55,14 @@
               <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="level != null">
               AND h.state = #{level}
               </if>
            GROUP BY
               <if test="dimension=='monitorPoint'">
@@ -55,5 +75,25 @@
      </if>
         
   </select>
   <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>