fix: 绑定功能优化完善,新增清零功能接口。
This commit is contained in:
@@ -87,4 +87,13 @@ public interface DeviceSensorDataMapper {
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
DeviceSensorData getLatestReportTime(@Param("serialNum") String serialNum);
|
||||
|
||||
/**
|
||||
* 删除设备子表(清除该设备的所有时序数据)
|
||||
*
|
||||
* @param serialNum 设备序列号
|
||||
*/
|
||||
@DS("taos")
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
void dropSubTable(@Param("serialNum") String serialNum);
|
||||
|
||||
}
|
||||
|
||||
@@ -46,4 +46,11 @@ public interface IDeviceSensorDataService {
|
||||
* @return 最新上数时间字符串,格式 yyyy-MM-dd HH:mm:ss;无数据时返回 null
|
||||
*/
|
||||
String getLatestReportTime(String serialNum);
|
||||
|
||||
/**
|
||||
* 删除设备子表(清除该设备的所有时序数据)
|
||||
*
|
||||
* @param serialNum 设备序列号
|
||||
*/
|
||||
void dropSubTable(String serialNum);
|
||||
}
|
||||
|
||||
@@ -296,4 +296,27 @@ public class DeviceSensorDataService implements IDeviceSensorDataService {
|
||||
default: return "未知";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除设备子表(清除该设备的所有时序数据)
|
||||
*/
|
||||
@Override
|
||||
public void dropSubTable(String serialNum) {
|
||||
if (serialNum == null || serialNum.isBlank()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
deviceSensorDataMapper.dropSubTable(serialNum);
|
||||
// 清除建表缓存,下次插入数据时会重新建表
|
||||
CREATED_TABLES.remove(serialNum);
|
||||
log.info("已删除设备TDengine子表: serialNum={}", serialNum);
|
||||
} catch (Exception e) {
|
||||
String errorMsg = e.getMessage();
|
||||
if (errorMsg != null && errorMsg.toLowerCase().contains("not exist")) {
|
||||
log.debug("设备TDengine子表不存在,无需删除: serialNum={}", serialNum);
|
||||
} else {
|
||||
log.warn("删除设备TDengine子表失败: serialNum={}, error={}", serialNum, errorMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,4 +120,8 @@
|
||||
ORDER BY `time` DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<update id="dropSubTable">
|
||||
DROP TABLE IF EXISTS `fishery`.`t_${serialNum}`
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user