提交 9906c063 编写于 作者: 麦壳饼's avatar 麦壳饼

修正 遥测数据 的时间格式。

上级 a470c2fd
......@@ -173,12 +173,33 @@ namespace IoTSharp.Data
/// 不使用
/// </summary>
None,
/// <summary>
/// 平均数
/// </summary>
Mean,
/// <summary>
/// 中值
/// </summary>
Median,
/// <summary>
/// 最后一个值
/// </summary>
Last,
/// <summary>
/// 第一个值
/// </summary>
First,
/// <summary>
/// 最大
/// </summary>
Max,
/// <summary>
/// 最小
/// </summary>
Min,
/// <summary>
/// 合计
/// </summary>
Sum
}
......
......@@ -527,8 +527,15 @@ namespace IoTSharp.Controllers
/// <summary>
/// 返回指定设备的的遥测数据, 按照keyname 和指定时间范围获取,如果keyname 为 all , 则返回全部key 的数据
/// </summary>
/// <param name="deviceId">Which device do you read?</param>
/// <param name="queryDto">查询条件</param>
/// <param name="deviceId">指定设备ID</param>
/// <param name="queryDto">查询条件例子:
///{
/// "keys": "",
/// "begin": "2022-03-23T11:44:56.488Z",
/// "every": "1.03:14:56:166",
/// "aggregate": "Mean"
/// }
/// </param>
/// <returns></returns>
[Authorize(Roles = nameof(UserRole.NormalUser))]
[HttpPost("{deviceId}/TelemetryData")]
......
......@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
namespace IoTSharp.Dtos
......@@ -16,6 +17,39 @@ namespace IoTSharp.Dtos
public object Value { get; set; }
}
public class TimespanConverterNewtonsoft : Newtonsoft.Json.JsonConverter<TimeSpan>
{
/// <summary>
/// Format: Days.Hours:Minutes:Seconds:Milliseconds
/// </summary>
public const string TimeSpanFormatString = @"d\.hh\:mm\:ss\:FFF";
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, TimeSpan value, Newtonsoft.Json.JsonSerializer serializer)
{
var timespanFormatted = $"{value.ToString(TimeSpanFormatString)}";
writer.WriteValue(timespanFormatted);
}
public override TimeSpan ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, TimeSpan existingValue, bool hasExistingValue, Newtonsoft.Json.JsonSerializer serializer)
{
TimeSpan parsedTimeSpan;
TimeSpan.TryParseExact((string)reader.Value, TimeSpanFormatString, null, out parsedTimeSpan);
return parsedTimeSpan;
}
}
public class TimeSpanConverter : System.Text.Json.Serialization.JsonConverter<TimeSpan>
{
public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return TimeSpan.Parse(reader.GetString());
}
public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString());
}
}
/// <summary>
/// 查询历史遥测数据请求结构体
/// </summary>
......@@ -24,7 +58,7 @@ namespace IoTSharp.Dtos
/// <summary>
/// 要获取的键值, 如果为空, 则为全部
/// </summary>
public string keys { get; set; }=String.Empty;
public string keys { get; set; }= string.Empty;
/// <summary>
/// 开始时间
/// </summary>
......@@ -36,6 +70,11 @@ namespace IoTSharp.Dtos
/// <summary>
/// 数据截面聚合间隔
/// </summary>
/// <example>1.03:14:56:166</example>
/// <remarks>d.hh:mm:ss:FFF</remarks>
[Newtonsoft.Json. JsonConverter(typeof(TimespanConverterNewtonsoft))]
[Newtonsoft.Json.JsonProperty(TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)]
[System.Text.Json.Serialization.JsonConverter(typeof(TimeSpanConverter))]
public TimeSpan every { get; set; }= TimeSpan.Zero;
/// <summary>
/// 数据截面计算方式,
......
......@@ -701,6 +701,11 @@
是否被安装
</summary>
</member>
<member name="F:IoTSharp.Dtos.TimespanConverterNewtonsoft.TimeSpanFormatString">
<summary>
Format: Days.Hours:Minutes:Seconds:Milliseconds
</summary>
</member>
<member name="T:IoTSharp.Dtos.TelemetryDataQueryDto">
<summary>
查询历史遥测数据请求结构体
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册