于紫祥_1901
2020-12-01 636af927431b46a0788b7d76233387923135ac0c
src/main/resources/mapper/AlarmMapper.xml
@@ -1,79 +1,46 @@
<?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="level != null">
               AND h.state = #{level}
               </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
      </if>
   </select>
    <select id="countByTimes" resultType="java.util.Map">
        select
        <if test="format !=null">
            DATE_FORMAT(a.time,#{format}) as time,
        </if>
        count(*) as count
        from
        (<foreach collection="list" item="item" separator="union">
        select
        * from
        alarm_${item}
    </foreach>) as a
        where
        a.time >= #{start}
        and a.time
        <![CDATA[<=]]> #{end}
        <if test="format !=null">
            GROUP BY DATE_FORMAT(a.time,#{format}) ;
        </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>