forked from ddrilling/AsbCloudServer
TelemetryDataCache.GetOrDefault(..) Fix Timezone issue
This commit is contained in:
parent
5e0ab46e57
commit
c0db1a02d3
@ -22,6 +22,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
{
|
{
|
||||||
public TDto? FirstByDate { get; init; }
|
public TDto? FirstByDate { get; init; }
|
||||||
public CyclycArray<TDto> LastData { get; init; } = null!;
|
public CyclycArray<TDto> LastData { get; init; } = null!;
|
||||||
|
public double TimezoneHours { get; init; } = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IServiceProvider provider = null!;
|
private IServiceProvider provider = null!;
|
||||||
@ -226,6 +227,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
{
|
{
|
||||||
FirstByDate = first,
|
FirstByDate = first,
|
||||||
LastData = cacheItem,
|
LastData = cacheItem,
|
||||||
|
TimezoneHours = hoursOffset,
|
||||||
};
|
};
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@ -234,7 +236,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
{
|
{
|
||||||
if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem))
|
if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
IEnumerable<TDto> data = cacheItem.LastData;
|
IEnumerable<TDto> data = cacheItem.LastData;
|
||||||
|
|
||||||
if (!data.Any())
|
if (!data.Any())
|
||||||
@ -242,19 +244,23 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
|
|
||||||
if (request.GeDate.HasValue)
|
if (request.GeDate.HasValue)
|
||||||
{
|
{
|
||||||
if (data.First().DateTime > request.GeDate.Value)
|
var geDate = request.GeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours);
|
||||||
|
if (data.First().DateTime > geDate)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
data = data.Where(d => d.DateTime >= request.GeDate);
|
data = data.Where(d => d.DateTime >= geDate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (request.Order == 0)
|
if (request.Order == 0)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.LeDate.HasValue)
|
if (request.LeDate.HasValue)
|
||||||
|
{
|
||||||
|
var leDate = request.LeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours);
|
||||||
data = data.Where(d => d.DateTime >= request.LeDate);
|
data = data.Where(d => d.DateTime >= request.LeDate);
|
||||||
|
}
|
||||||
|
|
||||||
if (request.Divider > 1)
|
if (request.Divider > 1)
|
||||||
data = data.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0);
|
data = data.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user