<?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>
|