cjl
2023-07-26 0ce061d9ed37a6c25fff70e4734fa8cc8747237c
screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -2,18 +2,58 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.HistoryHourlyMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryHourly">
        <result column="mac" property="mac"/>
        <result column="time" property="time"/>
        <result column="value" property="value"/>
        <result column="version" property="version"/>
    </resultMap>
    <update id="createTable" parameterType="String">
        CREATE TABLE IF NOT EXISTS `history_hourly_${timeUnits}` (
            `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_time` (`mac`,`time`)
            ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '小时数据表'
    </update>
    <update id="createTableComplete" parameterType="String">
        CREATE TABLE IF NOT EXISTS `history_hourly_${timeUnits}_complete` (
            `mac` VARCHAR (30) DEFAULT NULL COMMENT '设备mac',
            `time` datetime DEFAULT NULL COMMENT '数据时间',
            `value` json DEFAULT NULL COMMENT '数据',
            KEY `idx_mac_time` (`mac`,`time`)
            ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '包含最大值,最小值,平局值的小时数据表'
    </update>
    <insert id="insertHistoryHourly">
        INSERT INTO history_hourly VALUES
        INSERT INTO history_hourly_${timeUnits} VALUES
        <foreach collection="list" item="item" separator=",">
            (#{item.mac}, #{item.time}, #{item.value}, #{item.version})
        </foreach>
    </insert>
    <select id="selectCountByTime" resultType="java.lang.Integer">
        SELECT COUNT(1) FROM history_hourly_${timeUnits} WHERE `time` = #{time}
        <if test="mac != null">
            AND mac = #{mac}
        </if>
    </select>
    <select id="selectDailyData" resultType="java.util.Map">
        SELECT mac, `time`, `value`
        FROM history_hourly_${timeUnits}
        WHERE `time` <![CDATA[>=]]> #{start}
        AND `time` <![CDATA[<]]> #{end}
        <if test="list != null and list.size()!=0">
                and mac in
            <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
    </select>
    <insert id="insertHistoryHourlyComplete">
        INSERT INTO
        history_hourly_${timeUnits}_complete
        VALUES
        <foreach collection="list" item="item" separator=",">
            (#{item.mac}, #{item.time}, #{item.value})
        </foreach>
    </insert>
</mapper>