xufenglei
2018-04-27 4686914dd93138d69e9280a88f24a51a711f52be
src/main/resources/mapper/AlarmMapper.xml
@@ -6,23 +6,37 @@
         <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>
                      h.time
                  </otherwise>
               </choose>
            FROM
               alarm h,
               alarm_daily h,
               device d,
               monitor_point mp 
            WHERE d.monitor_point_id = mp.id 
@@ -41,14 +55,20 @@
               <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'">
                  mp.id,
               </if>
               DATE_FORMAT( h.time, '%Y-%m-%d' )
               h.time
         ) a
      <if test="dimension=='monitorPoint'">
         GROUP BY name