lizijie
2020-11-24 54a30a0171c552f9f885ed9f0a90ac53069c4e35
src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -15,9 +15,25 @@
        SELECT
        h.mac,
        <foreach collection="sensorKeys" separator="," item="sensorKey">
            AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}',
            MIN(json->'$.${sensorKey}[1]') AS 'MIN${sensorKey}',
            MAX(json->'$.${sensorKey}[2]') AS 'MAX${sensorKey}'
            <choose >
                <when test="sensorKey=='e23'">
                    ROUND((CASE    WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0
                    THEN ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI()
                    WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0
                    THEN (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+180
                    WHEN AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 AND AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0
                    THEN (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+180
                    ELSE (ATAN(AVG(json->'$.e18[0]'*SIN((json->'$.e23[0]'/180)*PI()))/AVG(json->'$.e18[0]'*COS((json->'$.e23[0]'/180)*PI())))*180/PI())+360
                    END),3) AS '${sensorKey}',
                    MIN(json->'$.${sensorKey}[1]') AS 'MIN${sensorKey}',
                    MAX(json->'$.${sensorKey}[2]') AS 'MAX${sensorKey}'
                </when>
                <otherwise>
                    AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}',
                    MIN(json->'$.${sensorKey}[1]') AS 'MIN${sensorKey}',
                    MAX(json->'$.${sensorKey}[2]') AS 'MAX${sensorKey}'
                </otherwise>
            </choose>
        </foreach>
        FROM
        history_hourly h
@@ -68,7 +84,8 @@
        DATE_FORMAT(h.time,#{typeFormat}) time,
        avg(h.json->'$.e12[0]') 'beam'
        FROM history_hourly h
        WHERE h.mac in
        WHERE h.json->'$.e12[0]' is not null
        and h.mac in
        <foreach collection="macs" open="(" separator="," close=")" item="mac">
            #{mac}
        </foreach>
@@ -76,7 +93,6 @@
        <foreach collection="times" open="(" separator="," close=")" item="time">
            #{time}
        </foreach>
        and h.json->'$.e12[0]' is not null
        group by h.time
    </select>