| | |
| | | <?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> |
| | | <?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="getAvgByDevice" resultType="java.util.Map"> |
| | | SELECT |
| | | <foreach collection="sensorKeys" separator="," item="sensorKey"> |
| | | AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' |
| | | </foreach> |
| | | FROM |
| | | history_daily |
| | | 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="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_${timeUnits} 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> |
| | | |
| | | <select id="get5MiutesOrHalfHourByDay" resultType="java.util.LinkedHashMap"> |
| | | SELECT |
| | | <foreach collection="sensorKeys" separator="," item="sensorKey"> |
| | | AVG(h.json->'$.${sensorKey}[0]') AS '${sensorKey}' |
| | | </foreach> |
| | | FROM |
| | | history_${timeUnits} h inner join |
| | | (select mac from device where monitor_point_id in |
| | | ( |
| | | select id from monitor_point |
| | | where |
| | | <if test="areaCode != null"> |
| | | area_code = #{areaCode} |
| | | </if> |
| | | |
| | | <if test="cityCode != null"> |
| | | city_code = #{cityCode} |
| | | </if> |
| | | |
| | | <if test="provinceCode != null"> |
| | | province_code = #{provinceCode} |
| | | </if> |
| | | ) |
| | | and is_delete=0) m |
| | | on h.mac=m.mac |
| | | and h.time>=#{start} |
| | | and h.time <![CDATA[<]]> #{end} |
| | | ORDER BY |
| | | h.time |
| | | </select> |
| | | </mapper> |