reactor:【IoT 物联网】重新梳理下行消息的逻辑(未测试,用于相互 review 作用)
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
<?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="cn.iocoder.yudao.module.iot.dal.tdengine.IotDeviceMessageMapper">
|
||||
|
||||
<update id="createSTable">
|
||||
CREATE STABLE IF NOT EXISTS device_message (
|
||||
ts TIMESTAMP,
|
||||
id NCHAR(50),
|
||||
report_time TIMESTAMP,
|
||||
device_id BIGINT,
|
||||
tenant_id BIGINT,
|
||||
server_id NCHAR(50),
|
||||
upstream BOOL,
|
||||
request_id NCHAR(50),
|
||||
method NCHAR(100),
|
||||
params NCHAR(2048),
|
||||
data NCHAR(2048),
|
||||
code INT
|
||||
) TAGS (
|
||||
device_id BIGINT
|
||||
)
|
||||
</update>
|
||||
|
||||
<select id="showSTable" resultType="String">
|
||||
SHOW STABLES LIKE 'device_message'
|
||||
</select>
|
||||
|
||||
<insert id="insert">
|
||||
INSERT INTO device_message_${deviceId} (
|
||||
ts, id, report_time, device_id, tenant_id,
|
||||
server_id, upstream, request_id, method, params,
|
||||
data, code
|
||||
)
|
||||
USING device_message
|
||||
TAGS (#{deviceId})
|
||||
VALUES (
|
||||
#{ts}, #{id}, #{reportTime}, #{deviceId}, #{tenantId},
|
||||
#{serverId}, #{upstream}, #{requestId}, #{method}, #{params},
|
||||
#{data}, #{code}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<select id="selectPage" resultType="cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceMessageDO">
|
||||
SELECT ts, id, report_time, device_id, tenant_id, server_id, upstream,
|
||||
request_id, method, params, data, code
|
||||
FROM device_message_${reqVO.deviceId}
|
||||
<where>
|
||||
<if test="reqVO.method != null and reqVO.method != ''">
|
||||
AND method = #{reqVO.method}
|
||||
</if>
|
||||
<if test="reqVO.upstream != null">
|
||||
AND upstream = #{reqVO.upstream}
|
||||
</if>
|
||||
<if test="reqVO.startTime != null">
|
||||
AND ts >= #{reqVO.startTime}
|
||||
</if>
|
||||
<if test="reqVO.endTime != null">
|
||||
AND ts <= #{reqVO.endTime}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY ts DESC
|
||||
</select>
|
||||
|
||||
<select id="selectCountByCreateTime" resultType="Long">
|
||||
SELECT COUNT(*)
|
||||
FROM device_message
|
||||
<where>
|
||||
<if test="createTime != null">
|
||||
AND ts >= #{createTime}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectDeviceLogUpCountByHour" resultType="java.util.Map">
|
||||
SELECT
|
||||
TIMETRUNCATE(ts, 1h) as time,
|
||||
COUNT(*) as data
|
||||
FROM
|
||||
<choose>
|
||||
<when test="deviceId != null">
|
||||
device_message_${deviceId}
|
||||
</when>
|
||||
<otherwise>
|
||||
device_message
|
||||
</otherwise>
|
||||
</choose>
|
||||
<where>
|
||||
<if test="startTime != null">
|
||||
AND ts >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND ts <= #{endTime}
|
||||
</if>
|
||||
AND upstream = true
|
||||
</where>
|
||||
GROUP BY TIMETRUNCATE(ts, 1h)
|
||||
ORDER BY time ASC
|
||||
</select>
|
||||
|
||||
<select id="selectDeviceLogDownCountByHour" resultType="java.util.Map">
|
||||
SELECT
|
||||
TIMETRUNCATE(ts, 1h) as time,
|
||||
COUNT(*) as data
|
||||
FROM
|
||||
<choose>
|
||||
<when test="deviceId != null">
|
||||
device_message_${deviceId}
|
||||
</when>
|
||||
<otherwise>
|
||||
device_message
|
||||
</otherwise>
|
||||
</choose>
|
||||
<where>
|
||||
<if test="startTime != null">
|
||||
AND ts >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND ts <= #{endTime}
|
||||
</if>
|
||||
AND upstream = false
|
||||
</where>
|
||||
GROUP BY TIMETRUNCATE(ts, 1h)
|
||||
ORDER BY time ASC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user