| <?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.AlarmDailyMapper">  | 
|     <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>  | 
|                              h.time  | 
|                         </otherwise>  | 
|                     </choose>  | 
|                 FROM  | 
|                     alarm_daily 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="level != null">  | 
|                     AND h.state = #{level}  | 
|                     </if>  | 
|                     <if test="professionId != null">  | 
|                     AND d.profession_id = #{professionId}  | 
|                     </if>  | 
|                 GROUP BY  | 
|                     <if test="dimension=='monitorPoint'">  | 
|                         mp.id,  | 
|                     </if>  | 
|                     h.time  | 
|             ) a  | 
|         <if test="dimension=='monitorPoint'">  | 
|             GROUP BY name  | 
|         </if>  | 
|               | 
|     </select>  | 
|   | 
|     <select id="getAlarmDataByYear" resultType="java.util.Map">  | 
|         SELECT  | 
|             DATE_FORMAT(h.time, '%Y-%m') AS 'time'  | 
|             <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">  | 
|                 COUNT(json -> '$.${sensorKey}')   | 
|             </foreach>  | 
|         FROM  | 
|             alarm_daily h  | 
|         WHERE  | 
|             h.time >= #{start}  | 
|             AND h.time <![CDATA[<]]> #{end}  | 
|             <if test="state != null">  | 
|             AND h.state = #{state}  | 
|             </if>  | 
|         GROUP BY  | 
|             DATE_FORMAT(h.time, '%Y-%m')              | 
|     </select>  | 
|   | 
|     <select id="getAlarmDataByMonth" resultType="java.util.Map">  | 
|         SELECT  | 
|             <foreach collection="sensors" separator="," item="sensor">  | 
|                 COUNT(json -> '$.${sensor.sensorKey}') AS '${sensor.sensorKey}'  | 
|             </foreach>  | 
|         FROM  | 
|             alarm_daily h  | 
|         WHERE  | 
|             h.time >= #{start}  | 
|             AND h.time <![CDATA[<]]> #{end}  | 
|             <if test="state != null">  | 
|             AND h.state = #{state}  | 
|             </if>  | 
|     </select>  | 
|       | 
| </mapper> |