ShiShiYiBan/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/IotDevicePropertyMapper.xml

77 lines
2.7 KiB
XML
Raw Normal View History

<?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.IotDevicePropertyMapper">
<select id="getProductPropertySTableFieldList" resultType="cn.iocoder.yudao.module.iot.framework.tdengine.core.TDengineTableField">
DESCRIBE product_property_${productKey}
</select>
<update id="createProductPropertySTable">
CREATE STABLE product_property_${productKey} (
ts TIMESTAMP,
report_time TIMESTAMP,
<foreach item="field" collection="fields" separator=",">
${field.field} ${field.type}
<if test="field.length != null and field.length > 0">
(${field.length})
</if>
</foreach>
)
TAGS (
device_key NCHAR(50)
)
</update>
<update id="alterProductPropertySTableAddField">
ALTER STABLE product_property_${productKey}
ADD COLUMN ${field.field} ${field.type}
<if test="field.length != null and field.length > 0">
(${field.length})
</if>
</update>
<update id="alterProductPropertySTableModifyField">
ALTER STABLE product_property_${productKey}
MODIFY COLUMN ${field.field} ${field.type}
<if test="field.length != null and field.length > 0">
(${field.length})
</if>
</update>
<update id="alterProductPropertySTableDropField">
ALTER STABLE product_property_${productKey}
DROP COLUMN ${field.field}
</update>
<insert id="insert">
INSERT INTO device_property_${device.deviceKey}
USING product_property_${device.productKey}
TAGS ('${device.deviceKey}')
(ts, report_time,
<foreach item="key" collection="properties.keys" separator=",">
${key}
2025-01-24 15:56:01 +08:00
</foreach>
)
VALUES
(NOW, #{reportTime},
<foreach item="value" collection="properties.values" separator=",">
#{value}
2025-01-24 15:56:01 +08:00
</foreach>
)
</insert>
<select id="describeSuperTable" resultType="java.util.Map">
DESCRIBE product_property_${productKey}
</select>
<!-- TODO 芋艿:缺少时间范围 AND ts BETWEEN #{reqVO.startTime} AND #{reqVO.endTime} -->
<select id="selectPageByHistory" resultType="cn.iocoder.yudao.module.iot.controller.admin.device.vo.data.IotDevicePropertyRespVO">
SELECT ${reqVO.identifier} AS `value`, report_time AS update_time
FROM device_property_${reqVO.deviceKey}
WHERE ${reqVO.identifier} IS NOT NULL
2025-01-24 15:56:01 +08:00
ORDER BY ts DESC
</select>
</mapper>