| | |
| | | |
| | | <update id="createTable" parameterType="String"> |
| | | CREATE TABLE IF NOT EXISTS `history_minutely_${timeUnits}` ( |
| | | `mac` VARCHAR (20) DEFAULT NULL COMMENT '设备mac', |
| | | `mac` VARCHAR (30) DEFAULT NULL COMMENT '设备mac', |
| | | `time` datetime DEFAULT NULL COMMENT '数据时间', |
| | | `value` json DEFAULT NULL COMMENT '数据', |
| | | `version` INT (11) DEFAULT NULL COMMENT '型号', |
| | | KEY `idx_mac` (`mac`), |
| | | KEY `idx_time` (`time`), |
| | | KEY `idx_mac_time` (`mac`,`time`) |
| | | ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '分钟数据表' |
| | | </update> |
| | | |
| | | <select id="getHistoryFiveMinutelyData" resultType="java.util.LinkedHashMap"> |
| | | <select id="getHistoryMinutelyData" resultType="java.util.LinkedHashMap"> |
| | | SELECT |
| | | mac |
| | | <foreach collection="sensorKeys" open="," separator="," item="sensorKey"> |
| | | <choose> |
| | | <when test="sensorKey=='e23[0]'"> |
| | | ROUND((CASE WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 AND |
| | | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 |
| | | THEN |
| | | ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI() |
| | | WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))>0 AND |
| | | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 |
| | | THEN |
| | | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180 |
| | | WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 AND |
| | | AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 |
| | | THEN |
| | | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180 |
| | | ELSE |
| | | (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+360 |
| | | END),3) AS '${sensorKey}' |
| | | </when> |
| | | <otherwise> |
| | | ROUND(AVG(value->'$.${sensorKey}[0]'),3) AS '${sensorKey}' |
| | | </otherwise> |
| | | </choose> |
| | | </foreach> |
| | | mac, `value`, version |
| | | FROM |
| | | history_minutely_${timeUnits} |
| | | WHERE time <![CDATA[>=]]> #{start} AND time <![CDATA[<]]> #{end} |
| | | GROUP BY mac |
| | | WHERE `time` <![CDATA[>=]]> #{start} |
| | | AND `time` <![CDATA[<]]> #{end} |
| | | <if test="macs != null"> |
| | | AND mac IN |
| | | <foreach collection="macs" item="mac" open="(" close=")" separator=","> |
| | | #{mac} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="getHourlyData" resultType="java.util.Map"> |
| | | SELECT mac, `time`, `value` |
| | | FROM history_minutely_${timeUnits} |
| | | WHERE `time` <![CDATA[>=]]> #{start} |
| | | AND `time` <![CDATA[<]]> #{end} |
| | | </select> |
| | | |
| | | </mapper> |