<?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.HistoryMinutelyMapper">
|
<resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData" >
|
<result column="format_time" property="category" jdbcType="VARCHAR" />
|
<result column="value" property="value" jdbcType="DOUBLE" />
|
</resultMap>
|
<select id="getSersionAvgByDevice" resultType="java.util.Map">
|
SELECT
|
<foreach collection="sensorKeys" separator="," item="sensorKey">
|
AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
|
</foreach>
|
FROM
|
history_minutely
|
WHERE
|
mac = #{mac}
|
AND time >= #{start}
|
AND time < #{end}
|
</select>
|
|
<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(time, #{typeFormat}) time,
|
<foreach collection="sensorKeys" separator="," item="sensorKey">
|
AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
|
</foreach>
|
FROM
|
history_minutely h
|
WHERE
|
h.time >= #{start}
|
AND h.time <![CDATA[<]]> #{end}
|
<if test="mac != null">
|
AND h.mac = #{mac}
|
</if>
|
<if test="mac == null">
|
AND h.mac IN
|
<foreach collection="macs" open="(" separator="," close=")" item="listItem">
|
#{listItem}
|
</foreach>
|
|
</if>
|
|
GROUP BY
|
DATE_FORMAT(time, #{typeFormat})
|
ORDER BY
|
time
|
</select>
|
<select id="selectLineChartDateByCrieria" resultType="java.util.Map">
|
SELECT
|
<choose>
|
<when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()">
|
<foreach collection="sensorKeys"
|
item="sensorKey" separator="," close=",">
|
json->'$.${sensorKey}[0]' as '${sensorKey}'
|
</foreach>
|
</when>
|
<otherwise>
|
<foreach collection="sensorKeys"
|
item="sensorKey" separator="," close=",">
|
AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
|
</foreach>
|
</otherwise>
|
</choose>
|
DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time
|
FROM
|
`history_minutely` hmi
|
<where>
|
and hmi.time >= #{timePeriod.startTime}
|
and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}
|
<if test="dataCondition.actualTime != null">
|
and DATE_FORMAT(time, '${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = #{dataCondition.actualTime}
|
</if>
|
and hmi.mac in (
|
select mac from device dev
|
join monitor_point mpt on dev.monitor_point_id = mpt.id
|
<where>
|
<if test='"DEVICE"==dataCondition.areaRange.toString()'>
|
and dev.id = #{dataCondition.areaRangeId}
|
</if>
|
<if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
|
and mpt.id = #{dataCondition.areaRangeId}
|
</if>
|
<if test='"PROVINCE"==dataCondition.areaRange.toString()'>
|
and mpt.province_code = #{dataCondition.areaRangeId}
|
</if>
|
<if test='"CITY"==dataCondition.areaRange.toString()'>
|
and mpt.city_code = #{dataCondition.areaRangeId}
|
</if>
|
<if test='"AREA"==dataCondition.areaRange.toString()'>
|
and mpt.area_code = #{dataCondition.areaRangeId}
|
</if>
|
</where>
|
)
|
</where>
|
<if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()">
|
GROUP BY format_time
|
</if>
|
ORDER BY format_time asc
|
</select>
|
</mapper>
|