<?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.api.mapper.HistoryMinutelyMapper">
|
|
<update id="createTable" parameterType="String">
|
CREATE TABLE IF NOT EXISTS `history_minutely_${timeUnits}` (
|
`mac` VARCHAR (20) 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
|
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>
|
FROM
|
history_minutely_${timeUnits}
|
WHERE time <![CDATA[>=]]> #{start} AND time <![CDATA[<]]> #{end}
|
GROUP BY mac
|
</select>
|
|
</mapper>
|