提交 56dcc586 编写于 作者: xiaonannet's avatar xiaonannet

tdengine消费产品超级表创建

上级 b5be6748
......@@ -12,6 +12,7 @@
<module>thinglinks-api-system</module>
<module>thinglinks-api-link</module>
<module>thinglinks-api-monitor</module>
<module>thinglinks-api-tdengine</module>
</modules>
<artifactId>thinglinks-api</artifactId>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>thinglinks-api</artifactId>
<groupId>com.mqttsnet</groupId>
<version>1.0.0-RELEASE</version>
<version>${thinglinks.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>thinglinks-api</artifactId>
<groupId>com.mqttsnet</groupId>
<version>${thinglinks.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>thinglinks-api-tdengine</artifactId>
<dependencies>
<!-- thinglinks Common Core-->
<dependency>
<groupId>com.mqttsnet</groupId>
<artifactId>thinglinks-common-core</artifactId>
<version>${thinglinks.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.mqttsnet.thinglinks.tdengine.api.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Optional;
/**
* @Description: 产品超级表模型
* @Author: ShiHuan SUN
* @E-mail: 13733918655@163.com
* @Website: http://thinglinks.mqttsnet.com
* @CreateDate: 2022/1/1$ 19:37$
* @UpdateUser: ShiHuan SUN
* @UpdateDate: 2022/1/1$ 19:37$
* @UpdateRemark: 修改内容
* @Version: V1.0
*/
@Data
public class ProductSuperTableModel {
private static final long serialVersionUID = 1L;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
private Timestamp ts;
private String superTableName;
/**
* columnsName,columnsProperty
*/
private HashMap<Optional,Optional> columns;
/**
* tagsName,tagsProperty
*/
private HashMap<Optional,Optional> tags;
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
......@@ -97,6 +97,13 @@
<version>${thinglinks.version}</version>
</dependency>
<!-- thinglinks Api Tdengine -->
<dependency>
<groupId>com.mqttsnet</groupId>
<artifactId>thinglinks-api-tdengine</artifactId>
<version>${thinglinks.version}</version>
</dependency>
</dependencies>
<!--<build>
......
package com.mqttsnet.thinglinks.tdengine.common.rockermq.consumer;
package com.mqttsnet.thinglinks.tdengine.consumer;
import com.alibaba.fastjson.JSONObject;
import com.mqttsnet.thinglinks.tdengine.service.SuperTableCreateOrUpdateService;
import com.mqttsnet.thinglinks.tdengine.service.ProductSuperTableCreateOrUpdateService;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
......@@ -21,21 +21,25 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RocketMQMessageListener(consumerGroup = "thinglinks-tdengine", topic = "superTable-createOrUpdate")
public class CreateSuperTableMessageConsumer implements RocketMQListener {
@RocketMQMessageListener(consumerGroup = "thinglinks-tdengine", topic = "productSuperTable-createOrUpdate")
public class ProductCreateSuperTableMessageConsumer implements RocketMQListener {
@Autowired
private SuperTableCreateOrUpdateService superTableCreateOrUpdateService;
private ProductSuperTableCreateOrUpdateService productSuperTableCreateOrUpdateService;
/**
* 超级表创建及修改处理
* @param message
*/
@Override
public void onMessage(Object message) {
assert message!=null;
JSONObject stableMessage = JSONObject.parseObject(String.valueOf(message));
log.info("TDengine消费{}超级表消息:{}"+stableMessage.get("type")+stableMessage.get("msg"));
if("create".equals(stableMessage.get("type"))){
superTableCreateOrUpdateService.create(String.valueOf(stableMessage.get("msg")));
productSuperTableCreateOrUpdateService.createProductSuperTable(String.valueOf(stableMessage.get("msg")));
}else if("update".equals(stableMessage.get("type"))){
superTableCreateOrUpdateService.update(String.valueOf(stableMessage.get("msg")));
productSuperTableCreateOrUpdateService.updateProductSuperTable(String.valueOf(stableMessage.get("msg")));
}
}
......
package com.mqttsnet.thinglinks.tdengine.controller;
import com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather;
import com.mqttsnet.thinglinks.tdengine.service.WeatherService;
import com.mqttsnet.thinglinks.tdengine.domain.Weather;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......
......@@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
* @Version: 1.0
*/
@Mapper
public interface SuperTableCreateOrUpdateMapper {
public interface ProductSuperTableCreateOrUpdateMapper {
void dropDB();
......
<?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.mqttsnet.thinglinks.tdengine.mapper.SuperTableCreateOrUpdateMapper">
<mapper namespace="com.mqttsnet.thinglinks.tdengine.mapper.ProductSuperTableCreateOrUpdateMapper">
<update id="dropDB">
drop
......@@ -13,17 +13,17 @@
database if not exists thinglinks
</update>
<update id="createSuperTable" parameterType="HashMap">
create table if not exists thinglinks.${SuperTableName}(
<update id="createSuperTable" parameterType="com.mqttsnet.thinglinks.tdengine.api.domain.model.ProductSuperTableModel">
create table if not exists thinglinks.${superTableName}(
<foreach collection="columns" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARBINARY}
<foreach collection="columns" item="value" index="key" separator=",">
#{key} #{value}
</foreach>
)
tags(
<foreach collection="tags" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARBINARY}
<foreach collection="tags" item="value" index="key" separator=",">
#{key} #{value}
</foreach>
)
</update>
......
package com.mqttsnet.thinglinks.tdengine.mapper;
import com.mqttsnet.thinglinks.tdengine.domain.Weather;
import com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......
......@@ -3,7 +3,7 @@
<mapper namespace="com.mqttsnet.thinglinks.tdengine.mapper.WeatherMapper">
<resultMap id="BaseResultMap" type="com.mqttsnet.thinglinks.tdengine.domain.Weather">
<resultMap id="BaseResultMap" type="com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather">
<id column="ts" jdbcType="TIMESTAMP" property="ts"/>
<result column="temperature" jdbcType="FLOAT" property="temperature"/>
<result column="humidity" jdbcType="FLOAT" property="humidity"/>
......@@ -45,7 +45,7 @@
), groupId int)
</update>
<update id="createTable" parameterType="com.mqttsnet.thinglinks.tdengine.domain.Weather">
<update id="createTable" parameterType="com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather">
create table if not exists thinglinks.t#{groupId} using thinglinks.weather tags
(
#{location},
......@@ -63,7 +63,7 @@
</if>
</select>
<insert id="insert" parameterType="com.mqttsnet.thinglinks.tdengine.domain.Weather">
<insert id="insert" parameterType="com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather">
insert into thinglinks.t#{groupId} (ts, temperature, humidity, note)
values (#{ts}, ${temperature}, ${humidity}, #{note})
</insert>
......@@ -78,7 +78,7 @@
from thinglinks.weather
</select>
<resultMap id="avgResultSet" type="com.mqttsnet.thinglinks.tdengine.domain.Weather">
<resultMap id="avgResultSet" type="com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather">
<id column="ts" jdbcType="TIMESTAMP" property="ts"/>
<result column="avg(temperature)" jdbcType="FLOAT" property="temperature"/>
<result column="avg(humidity)" jdbcType="FLOAT" property="humidity"/>
......
......@@ -11,7 +11,7 @@ package com.mqttsnet.thinglinks.tdengine.service;
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public interface SuperTableCreateOrUpdateService {
public interface ProductSuperTableCreateOrUpdateService {
/**
* @Author: ShiHuan Sun
......@@ -24,7 +24,7 @@ public interface SuperTableCreateOrUpdateService {
* @return
*/
void create(String msg);
void createProductSuperTable(String msg);
/**
* @Author: ShiHuan Sun
......@@ -36,5 +36,5 @@ public interface SuperTableCreateOrUpdateService {
* msg 产品模型信息
* @return
*/
void update(String msg);
void updateProductSuperTable(String msg);
}
package com.mqttsnet.thinglinks.tdengine.service;
import com.mqttsnet.thinglinks.tdengine.domain.Weather;
import com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather;
import java.util.List;
......
package com.mqttsnet.thinglinks.tdengine.service.impl;
import com.mqttsnet.thinglinks.tdengine.mapper.SuperTableCreateOrUpdateMapper;
import com.mqttsnet.thinglinks.tdengine.service.SuperTableCreateOrUpdateService;
import com.mqttsnet.thinglinks.tdengine.api.domain.model.ProductSuperTableModel;
import com.mqttsnet.thinglinks.tdengine.mapper.ProductSuperTableCreateOrUpdateMapper;
import com.mqttsnet.thinglinks.tdengine.service.ProductSuperTableCreateOrUpdateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
/**
* @Description: java类作用描述
* @Author: ShiHuan Sun
......@@ -19,22 +22,28 @@ import org.springframework.stereotype.Service;
*/
@Service
@Slf4j
public class SuperTableCreateOrUpdateServiceImpl implements SuperTableCreateOrUpdateService {
public class ProductSuperTableCreateOrUpdateServiceImpl implements ProductSuperTableCreateOrUpdateService {
@Autowired
private SuperTableCreateOrUpdateMapper superTableCreateOrUpdateMapper;
private ProductSuperTableCreateOrUpdateMapper productSuperTableCreateOrUpdateMapper;
@Override
public void create(String msg) {
public void createProductSuperTable(String msg) {
//TODO 创建超级表逻辑处理
superTableCreateOrUpdateMapper.createDB();
superTableCreateOrUpdateMapper.createSuperTable();
productSuperTableCreateOrUpdateMapper.createDB();
productSuperTableCreateOrUpdateMapper.createSuperTable();
ProductSuperTableModel productSuperTableModel = new ProductSuperTableModel();
//ts时间处理
long ts = System.currentTimeMillis();
long thirtySec = 1000 * 30;
productSuperTableModel.setTs(new Timestamp(ts + (thirtySec)));
}
@Override
public void update(String msg) {
public void updateProductSuperTable(String msg) {
}
}
package com.mqttsnet.thinglinks.tdengine.service.impl;
import com.mqttsnet.thinglinks.tdengine.api.domain.model.Weather;
import com.mqttsnet.thinglinks.tdengine.mapper.WeatherMapper;
import com.mqttsnet.thinglinks.tdengine.domain.Weather;
import com.mqttsnet.thinglinks.tdengine.service.WeatherService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册