<?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_${yearAndMonth}
|
WHERE
|
mac IN
|
(SELECT
|
d.mac
|
FROM
|
device d
|
WHERE
|
d.is_delete = 0
|
<if test="monitorPointId != null">
|
AND d.monitor_point_id = #{monitorPointId}
|
</if>
|
<if test="mac != null">
|
AND d.mac = #{mac}
|
</if>
|
)
|
AND time >= #{start}
|
AND time < #{end}
|
</select>
|
|
<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(time, #{typeFormat}) time
|
<foreach collection="sensorKeys" open="," separator="," item="sensorKey">
|
AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
|
</foreach>
|
FROM
|
history_${timeUnits} 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
|
(SELECT
|
d.mac
|
FROM
|
device d,
|
monitor_point mp
|
WHERE
|
d.monitor_point_id = mp.id
|
<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="professionId != null">
|
AND d.profession_id = #{professionId}
|
</if>
|
)
|
</if>
|
|
GROUP BY
|
DATE_FORMAT(time, #{typeFormat})
|
ORDER BY
|
time
|
</select>
|
|
<select id="getAreaAvgDataByAreaCode" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(time, #{typeFormat}) time,
|
AVG(aqi_json->'$.${sensors1}') AS '${sensors2}'
|
FROM
|
hangzhou_aqi ha
|
WHERE
|
ha.time >= #{start}
|
AND ha.time <![CDATA[<]]> #{end}
|
AND ha.city_code = #{areaCode}
|
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='"PROFESSION"==dataCondition.deviceDimension.toString()'>
|
and dev.profession_id = #{dataCondition.dimensionValue}
|
</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>
|
|
<!-- 无人机sensor查询 -->
|
<select id="getSensorData" resultType="java.util.LinkedHashMap">
|
SELECT
|
DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time,
|
<foreach collection="sensorKeys" item="sensorKey" separator=",">
|
hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
|
hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
|
hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
|
</foreach>
|
FROM
|
history_minutely as hm
|
<where>
|
<if test="mac!=null">
|
and hm.mac=#{mac}
|
</if>
|
and hm.time >= #{startTime}
|
and hm.time <![CDATA[<]]> #{endTime}
|
</where>
|
ORDER BY
|
hm.time
|
</select>
|
|
<select id="getSensorData2020" resultType="java.util.LinkedHashMap">
|
SELECT
|
DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time,
|
<foreach collection="sensorKeys" item="sensorKey" separator=",">
|
hm.json->'$.${sensorKey}[0]' as '${sensorKey}',
|
hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}',
|
hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}'
|
</foreach>
|
FROM
|
history_minutely_${yearAndMonth} as hm
|
<where>
|
<if test="mac!=null">
|
and hm.mac=#{mac}
|
</if>
|
and hm.time >= #{startTime}
|
and hm.time <![CDATA[<]]> #{endTime}
|
</where>
|
ORDER BY
|
hm.time
|
</select>
|
|
<select id="getDevicesAvgDataToExcel" resultType="java.util.LinkedHashMap">
|
select
|
rs.monitorPointName,rs.name,
|
<foreach collection="timeList" separator="," item="time">
|
max(case time when #{time} then rs.${sensorKey} else "" end) as #{time}
|
</foreach>
|
from
|
(SELECT
|
m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time,
|
<foreach collection="sensorKeys" separator="," item="sensorKey">
|
AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
|
</foreach>
|
FROM
|
history_${timeUnits} h,
|
device d,
|
monitor_point m
|
WHERE
|
h.mac=d.mac
|
AND d.monitor_point_id=m.id
|
AND h.time >= #{start}
|
AND h.time <![CDATA[<=]]> #{end}
|
AND h.mac in
|
<foreach collection="macs" open="(" separator="," close=")"
|
item="mac">
|
#{mac}
|
</foreach>
|
GROUP BY
|
h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat})
|
ORDER BY
|
h.mac) rs
|
GROUP BY rs.monitorPointName,rs.name
|
order by rs.monitorPointName
|
</select>
|
|
<select id="getDevicesSensorsAvgDataToExcel" resultType="java.util.LinkedHashMap">
|
select
|
rs.monitorPointName,rs.name,
|
<foreach collection="timeList" separator="," item="time">
|
max(case time when #{time} then rs.json else "" end) as #{time}
|
</foreach>
|
from
|
(SELECT
|
m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time,h.json
|
FROM
|
history_${timeUnits} h,
|
device d,
|
monitor_point m
|
WHERE
|
h.mac=d.mac
|
AND d.monitor_point_id=m.id
|
AND h.time >= #{start}
|
AND h.time <![CDATA[<=]]> #{end}
|
AND h.mac in
|
<foreach collection="macs" open="(" separator="," close=")"
|
item="mac">
|
#{mac}
|
</foreach>
|
ORDER BY
|
h.mac) rs
|
GROUP BY rs.monitorPointName,rs.name
|
order by rs.monitorPointName
|
</select>
|
|
</mapper>
|