From 38521940a68abd4f361feb585c38cebe5072e7d2 Mon Sep 17 00:00:00 2001 From: ngfrolov <ng.frolov@autodrilling.ru> Date: Fri, 29 Mar 2024 08:49:26 +0500 Subject: [PATCH] DetectedOperationService temporary fix timezone problem --- .../DetectOperations/DetectedOperationService.cs | 4 +++- .../Services/SAUB/TelemetryDataSaubService.cs | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 63391899..c6bca518 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudInfrastructure.Services.DetectOperations.Detectors; +using AsbCloudInfrastructure.Services.SAUB; namespace AsbCloudInfrastructure.Services.DetectOperations; @@ -142,7 +143,7 @@ public class DetectedOperationService : IDetectedOperationService const int minOperationLength = 5; const int maxDetectorsInterpolationFrameLength = 30; const int gap = maxDetectorsInterpolationFrameLength + minOperationLength; - var timeIncrement = TimeSpan.FromSeconds(1); + //var timezone = telemetryService.GetTimezone(idTelemetry); while (true) { @@ -155,6 +156,7 @@ public class DetectedOperationService : IDetectedOperationService var detectableTelemetries = (await telemetryDataSaubService.GetByTelemetryAsync(idTelemetry, request, token)) .Where(t => t.BlockPosition >= 0) + .Select(t => t as TelemetryNewDataSaubDto) .Select(t => new DetectableTelemetry { DateTime = t.DateTime,//TODO: <-- вот тут ошибка при присвоении DateTime с kind unspecified в DateTimeOffset времени назначается локальный часовой пояс. diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs index 92db8e4d..e6fb372b 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs @@ -16,6 +16,11 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.SAUB; +class TelemetryNewDataSaubDto : TelemetryDataSaubDto +{ + public new DateTimeOffset DateTime { get; set; } +} + public class TelemetryDataSaubService : TelemetryDataBaseService<TelemetryDataSaubDto, TelemetryDataSaub>, ITelemetryDataSaubService { private readonly ITelemetryUserService telemetryUserService; @@ -124,10 +129,10 @@ public class TelemetryDataSaubService : TelemetryDataBaseService<TelemetryDataSa protected override TelemetryDataSaubDto Convert(TelemetryDataSaub src, double timezoneOffset) { - var dto = src.Adapt<TelemetryDataSaubDto>(); + var dto = src.Adapt<TelemetryNewDataSaubDto>(); var telemetryUser = telemetryUserService.GetOrDefault(src.IdTelemetry, src.IdUser ?? int.MinValue); dto.User = telemetryUser?.MakeDisplayName(); - dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset); + dto.DateTime = src.DateTime.ToOffset(TimeSpan.FromHours(timezoneOffset)); // src.DateTime.ToRemoteDateTime(timezoneOffset); dto.BitDepth = src.BitDepth <= src.WellDepth ? src.BitDepth : src.WellDepth;