From 00e38ff225eb948f5234934afc01aa54c94e0de6 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Sat, 10 Oct 2020 11:29:36 +0800 Subject: [PATCH] update --- src/main/resources/mapper/HistoryMinutelyMapper.xml | 508 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 301 insertions(+), 207 deletions(-) diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 6aedbcb..07749a1 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -1,207 +1,301 @@ -<?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="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.Map"> - SELECT - 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 - WHERE - h.mac=d.mac - 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,d.name,DATE_FORMAT(time, #{typeFormat}) - ORDER BY - h.mac - </select> - -</mapper> \ No newline at end of file +<?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> -- Gitblit v1.8.0