feat: 新功能开发,设备告警信息、设备实时数据查看等。
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package com.intc.tdengine.controller;
|
||||
|
||||
|
||||
import com.intc.common.web.core.BaseController;
|
||||
import com.intc.tdengine.domain.DeviceSensorData;
|
||||
import com.intc.tdengine.service.IDeviceSensorDataService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TDEngines设备数据信息Controller
|
||||
*
|
||||
* @author Tianyongbao
|
||||
* @date 2025-10-27
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/td/device")
|
||||
public class DeviceSensorDataController extends BaseController
|
||||
{
|
||||
@Resource
|
||||
private IDeviceSensorDataService deviceSensorDataService;
|
||||
|
||||
@GetMapping("/getHistoryData")
|
||||
public List<DeviceSensorData> getHistoryData(@RequestParam("serialNum") String serialNum, @RequestParam("deviceId") Long deviceId, @RequestParam("mobilePhone") String mobilePhone, @RequestParam("deviceType") int deviceType, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime)
|
||||
{
|
||||
return deviceSensorDataService.getHistoryDataList(serialNum,deviceId,mobilePhone,deviceType,startTime,endTime);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.intc.tdengine.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import java.time.LocalDateTime;
|
||||
@Data
|
||||
@NoArgsConstructor // 生成无参构造方法
|
||||
@AllArgsConstructor // 生成全参构造方法
|
||||
public class DeviceSensorData {
|
||||
|
||||
// 测量字段(随时间变化的数值)
|
||||
private LocalDateTime time; // 时序主键时间戳
|
||||
private LocalDateTime createTime; // 数据创建时间
|
||||
private double dissolvedOxygen; // 溶解氧
|
||||
private double temperature; // 温度
|
||||
private double saturability; // 饱和度
|
||||
private double ph; // pH值
|
||||
private double salinity; // 盐度
|
||||
private double treference; // 参考值(具体含义需结合业务)
|
||||
private double tfluorescence; // 荧光值
|
||||
private double phaseDifference; // 相位差
|
||||
private double battery; // 电池电量
|
||||
|
||||
// 标签字段(元数据,不随时间频繁变化)
|
||||
private String serialNum; // 设备序列号
|
||||
private long deviceId; // 设备ID(对应TDengine的BIGINT)
|
||||
private long userId; // 用户ID(对应TDengine的BIGINT)
|
||||
private String userName; // 用户名
|
||||
private String mobilePhone; // 手机号
|
||||
private String deviceName; // 设备名称
|
||||
private int deviceType; // 设备类型
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.intc.tdengine.mapper;
|
||||
|
||||
import com.intc.tdengine.domain.DeviceSensorData;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface DeviceSensorDataMapper {
|
||||
|
||||
/**
|
||||
* 删除数据库
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
void dropDB();
|
||||
|
||||
/**
|
||||
* 创建数据库
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
void createDB();
|
||||
|
||||
/**
|
||||
* 创建超级表
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
void createSuperTable();
|
||||
|
||||
/**
|
||||
* 创建子表
|
||||
*
|
||||
* @param deviceSensorData 数据信息
|
||||
* @return 结果
|
||||
*/
|
||||
void createTable(DeviceSensorData deviceSensorData);
|
||||
|
||||
/**
|
||||
* 批量插入数据
|
||||
*
|
||||
* @param dataList 数据列表
|
||||
* @return 影响行数
|
||||
*/
|
||||
int batchInsertDeviceSensorData(@Param("dataList") List<DeviceSensorData> dataList);
|
||||
|
||||
/**
|
||||
* 查询数据
|
||||
*
|
||||
* @return 影响行数
|
||||
*/
|
||||
List<DeviceSensorData> getHistoryDataList(@Param("serialNum") String serialNum,@Param("deviceId") Long deviceId,@Param("mobilePhone") String mobilePhone,@Param("deviceType") int deviceType,@Param("startTime") String startTime,@Param("endTime") String endTime);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.intc.tdengine.service;
|
||||
|
||||
import com.intc.tdengine.domain.DeviceSensorData;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author YaphetS
|
||||
*/
|
||||
public interface IDeviceSensorDataService {
|
||||
|
||||
|
||||
/**
|
||||
* 创建子表
|
||||
*
|
||||
* @param deviceSensorData 数据信息
|
||||
* @return 结果
|
||||
*/
|
||||
void createTable(DeviceSensorData deviceSensorData);
|
||||
|
||||
/**
|
||||
* 批量插入数据
|
||||
*
|
||||
* @param dataList 数据列表
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Async
|
||||
public void batchInsertDeviceSensorData(List<DeviceSensorData> dataList);
|
||||
|
||||
/**
|
||||
* 查询数据
|
||||
*
|
||||
* @return 影响行数
|
||||
*/
|
||||
public List<DeviceSensorData> getHistoryDataList(String serialNum, Long deviceId, String mobilePhone, int deviceType, String startTime, String endTime);
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.intc.tdengine.service.impl;
|
||||
|
||||
import com.intc.tdengine.domain.DeviceSensorData;
|
||||
import com.intc.tdengine.mapper.DeviceSensorDataMapper;
|
||||
import com.intc.tdengine.service.IDeviceSensorDataService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DeviceSensorDataService implements IDeviceSensorDataService {
|
||||
@Resource
|
||||
private DeviceSensorDataMapper deviceSensorDataMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 创建子表
|
||||
*
|
||||
* @param deviceSensorData 数据信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public void createTable(DeviceSensorData deviceSensorData) {
|
||||
deviceSensorDataMapper.createTable(deviceSensorData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入数据
|
||||
*
|
||||
* @param dataList 数据列表
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Override
|
||||
public void batchInsertDeviceSensorData(List<DeviceSensorData> dataList) {
|
||||
deviceSensorDataMapper.batchInsertDeviceSensorData(dataList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询数据
|
||||
*
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Override
|
||||
public List<DeviceSensorData> getHistoryDataList(String serialNum,Long deviceId, String mobilePhone, int deviceType,String startTime, String endTime) {
|
||||
List<DeviceSensorData> list=new ArrayList<>();
|
||||
try {
|
||||
list=deviceSensorDataMapper.getHistoryDataList(serialNum,deviceId,mobilePhone,deviceType,startTime,endTime);
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
<?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.intc.tdengine.mapper.DeviceSensorDataMapper">
|
||||
|
||||
|
||||
|
||||
<update id="dropDB">
|
||||
drop database if exists fishery
|
||||
</update>
|
||||
|
||||
<update id="createDB">
|
||||
create database if not exists fishery
|
||||
</update>
|
||||
|
||||
<update id="createSuperTable">
|
||||
create table if not exists
|
||||
fishery.device_sensor_data(time timestamp,createTime timestamp, dissolvedOxygen double, temperature double , saturability double , ph double , salinity double , treference double , tfluorescence double , phaseDifference double , battery double)
|
||||
tags(
|
||||
tenant_id nchar(50),
|
||||
serialNum nchar(100),
|
||||
deviceId BIGINT,
|
||||
userId BIGINT,
|
||||
userName nchar(100),
|
||||
mobilePhone nchar(20),
|
||||
deviceName nchar(100),
|
||||
deviceType int
|
||||
)
|
||||
</update>
|
||||
|
||||
<update id="createTable" parameterType="com.intc.tdengine.domain.DeviceSensorData">
|
||||
|
||||
create table if not exists
|
||||
|
||||
`fishery`.t_#{serialNum}
|
||||
|
||||
using fishery.device_sensor_data
|
||||
|
||||
tags(#{tenantId},#{serialNum},#{deviceId},#{userId},#{userName},#{mobilePhone},#{deviceName},#{deviceType})
|
||||
</update>
|
||||
|
||||
<insert id="batchInsertDeviceSensorData">
|
||||
insert into
|
||||
<foreach collection="dataList" item="data" open="" close="" separator=" ">
|
||||
`fishery`.t_#{serialNum}
|
||||
|
||||
using fishery.device_sensor_data
|
||||
|
||||
tags(#{data.tenantId},#{data.serialNum},#{data.deviceId},#{data.userId},#{data.userName},#{data.mobilePhone},#{data.deviceName},#{data.deviceType})
|
||||
|
||||
(time, createTime, dissolvedOxygen, temperature, saturability, ph, salinity, treference, tfluorescence, phaseDifference, battery) values (#{data.time}, ${data.createTime}, ${data.dissolvedOxygen}, ${data.temperature}, ${data.saturability}, ${data.ph}, ${data.salinity}, ${data.treference}, ${data.tfluorescence}, ${data.phaseDifference}, ${data.battery})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="getHistoryDataList" parameterType="String" resultType="com.intc.tdengine.domain.DeviceSensorData">
|
||||
select time,createTime,dissolvedOxygen,temperature,saturability,ph,salinity,treference,tfluorescence,phaseDifference,battery,serialNum,deviceId,data.mobilePhone,deviceType from fishery.t_#{serialNum}
|
||||
<where>
|
||||
time >= #{startTime} and time <= #{endTime}
|
||||
<if test="serialNum != null and serialNum != ''"> AND serialNum=#{serialNum}</if>
|
||||
<if test="deviceId != null "> AND deviceId=#{deviceId}</if>
|
||||
<if test="mobilePhone != null and mobilePhone != ''"> AND mobilePhone=#{mobilePhone}</if>
|
||||
<if test="deviceType != null"> AND deviceType=#{deviceType}</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user