From c96bf87f175e9cf65350552ad1bbb9f7399431b4 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 8 Apr 2022 13:10:06 +0500 Subject: [PATCH] Reorganize dtos --- AsbCloudApp/AsbCloudApp.csproj | 4 - .../Comparators/TelemetryUserDtoComparer.cs | 2 +- AsbCloudApp/Data/ITelemetryData.cs | 5 +- AsbCloudApp/Data/{ => SAUB}/EventDto.cs | 2 +- AsbCloudApp/Data/SAUB/Readme.md | 2 + .../Data/{ => SAUB}/TelemetryDataSaubDto.cs | 9 +- .../Data/{ => SAUB}/TelemetryDataSpinDto.cs | 13 +-- .../Data/{ => SAUB}/TelemetryInfoDto.cs | 2 +- .../Data/{ => SAUB}/TelemetryMessageDto.cs | 2 +- .../Data/{ => SAUB}/TelemetryUserDto.cs | 2 +- AsbCloudApp/Data/TelemetryDto.cs | 3 +- AsbCloudApp/Data/WITS/Readme.md | 2 + .../Data/WITS/{Record1.cs => Record1Dto.cs} | 0 .../Data/WITS/{Record50.cs => Record50Dto.cs} | 0 .../Data/WITS/{Record60.cs => Record60Dto.cs} | 0 .../Data/WITS/{Record61.cs => Record61Dto.cs} | 0 .../Data/WITS/{Record7.cs => Record7Dto.cs} | 0 .../Data/WITS/{Record8.cs => Record8Dto.cs} | 0 .../WITS/{RecordBase.cs => RecordBaseDto.cs} | 12 ++- AsbCloudApp/Services/IEventService.cs | 2 +- AsbCloudApp/Services/IMessageService.cs | 1 + AsbCloudApp/Services/ITelemetryService.cs | 1 + AsbCloudApp/Services/ITelemetryUserService.cs | 2 +- AsbCloudApp/Services/IWitsRepository.cs | 11 ++- AsbCloudDb/Model/WITS/Record15.cs | 1 + AsbCloudInfrastructure/DependencyInjection.cs | 10 +++ .../Services/EventService.cs | 2 +- .../Services/MessageService.cs | 1 + .../Services/TelemetryDataBaseService.cs | 8 +- .../Services/TelemetryDataSaubService.cs | 6 +- .../Services/TelemetryDataSpinService.cs | 6 +- .../Services/TelemetryService.cs | 1 + .../Services/TelemetryUserService.cs | 2 +- .../Services/WitsInfoService.cs | 34 +++++++ .../Services/WitsRecordRepository.cs | 90 +++++++++++++++++++ .../Validators/EventDtoValidator.cs | 2 +- .../TelemetryDataSaubControllerTests.cs | 2 +- .../ServicesTests/EventServiceTest.cs | 2 +- .../TelemetryDataSaubServiceTest.cs | 3 +- .../Controllers/TelemetryController.cs | 1 + .../TelemetryDataSaubController.cs | 2 +- .../TelemetryDataSpinController.cs | 2 +- .../WITS/WitsControllerAbstract.cs | 82 +++++++++++++++++ .../Controllers/WITS/WitsInfoController.cs | 46 ++++++++++ .../Controllers/WITS/WitsRecord1Controller.cs | 21 +++++ .../WITS/WitsRecord50Controller.cs | 19 ++++ .../WITS/WitsRecord60Controller.cs | 19 ++++ .../WITS/WitsRecord61Controller.cs | 19 ++++ .../Controllers/WITS/WitsRecord7Controller.cs | 19 ++++ .../Controllers/WITS/WitsRecord8Controller.cs | 19 ++++ AsbCloudWebApi/Controllers/WitsController.cs | 63 ------------- AsbCloudWebApi/ProtobufModel.cs | 6 +- ConsoleApp1/ControllerLoadTester.cs | 3 +- 53 files changed, 454 insertions(+), 114 deletions(-) rename AsbCloudApp/Data/{ => SAUB}/EventDto.cs (89%) create mode 100644 AsbCloudApp/Data/SAUB/Readme.md rename AsbCloudApp/Data/{ => SAUB}/TelemetryDataSaubDto.cs (94%) rename AsbCloudApp/Data/{ => SAUB}/TelemetryDataSpinDto.cs (93%) rename AsbCloudApp/Data/{ => SAUB}/TelemetryInfoDto.cs (94%) rename AsbCloudApp/Data/{ => SAUB}/TelemetryMessageDto.cs (94%) rename AsbCloudApp/Data/{ => SAUB}/TelemetryUserDto.cs (88%) create mode 100644 AsbCloudApp/Data/WITS/Readme.md rename AsbCloudApp/Data/WITS/{Record1.cs => Record1Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{Record50.cs => Record50Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{Record60.cs => Record60Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{Record61.cs => Record61Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{Record7.cs => Record7Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{Record8.cs => Record8Dto.cs} (100%) rename AsbCloudApp/Data/WITS/{RecordBase.cs => RecordBaseDto.cs} (96%) create mode 100644 AsbCloudInfrastructure/Services/WitsInfoService.cs create mode 100644 AsbCloudInfrastructure/Services/WitsRecordRepository.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs create mode 100644 AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs delete mode 100644 AsbCloudWebApi/Controllers/WitsController.cs diff --git a/AsbCloudApp/AsbCloudApp.csproj b/AsbCloudApp/AsbCloudApp.csproj index fdd95225..dbc15171 100644 --- a/AsbCloudApp/AsbCloudApp.csproj +++ b/AsbCloudApp/AsbCloudApp.csproj @@ -4,8 +4,4 @@ net6.0 - - - - diff --git a/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs index 48b497a9..ad8f3239 100644 --- a/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs +++ b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; namespace AsbCloudApp.Comparators diff --git a/AsbCloudApp/Data/ITelemetryData.cs b/AsbCloudApp/Data/ITelemetryData.cs index b8b00dbc..61d70da7 100644 --- a/AsbCloudApp/Data/ITelemetryData.cs +++ b/AsbCloudApp/Data/ITelemetryData.cs @@ -4,7 +4,8 @@ namespace AsbCloudApp.Data { public interface ITelemetryData { - int IdTelemetry { get; set; } - DateTime Date { get; set; } + int IdTelemetry { get; set; } + + DateTime DateTime { get; set; } } } diff --git a/AsbCloudApp/Data/EventDto.cs b/AsbCloudApp/Data/SAUB/EventDto.cs similarity index 89% rename from AsbCloudApp/Data/EventDto.cs rename to AsbCloudApp/Data/SAUB/EventDto.cs index df4a3da3..9d81dc56 100644 --- a/AsbCloudApp/Data/EventDto.cs +++ b/AsbCloudApp/Data/SAUB/EventDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { public class EventDto : IId { diff --git a/AsbCloudApp/Data/SAUB/Readme.md b/AsbCloudApp/Data/SAUB/Readme.md new file mode 100644 index 00000000..8a09cd11 --- /dev/null +++ b/AsbCloudApp/Data/SAUB/Readme.md @@ -0,0 +1,2 @@ +Папка содержит dto для получаемые от панели оператора САУБ. +Данные WITS вынесены в отдельную папку. \ No newline at end of file diff --git a/AsbCloudApp/Data/TelemetryDataSaubDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs similarity index 94% rename from AsbCloudApp/Data/TelemetryDataSaubDto.cs rename to AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs index 15bea34c..3705f867 100644 --- a/AsbCloudApp/Data/TelemetryDataSaubDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs @@ -1,13 +1,18 @@ using System; -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { /// /// Сообщение получаемое по телеметрии и отправляемое в frontend /// public class TelemetryDataSaubDto : ITelemetryData { - public DateTime Date { get; set; } + public DateTime DateTime { get; set; } + public DateTime Date // TODO: remove this legacy after all panels updated + { + get { return DateTime; } + set { DateTime = value; } + } /// /// Режим работы САУБ: diff --git a/AsbCloudApp/Data/TelemetryDataSpinDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs similarity index 93% rename from AsbCloudApp/Data/TelemetryDataSpinDto.cs rename to AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs index 8904113d..122ee2ee 100644 --- a/AsbCloudApp/Data/TelemetryDataSpinDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs @@ -1,15 +1,16 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { public class TelemetryDataSpinDto : ITelemetryData { public int IdTelemetry { get; set; } - public DateTime Date { get; set; } + public DateTime DateTime { get; set; } + public DateTime Date // TODO: remove this legacy after all panels updated + { + get { return DateTime; } + set { DateTime = value; } + } public float? TopDriveSpeed { get; set; } public float? TopDriveSpeedMin { get; set; } public float? TopDriveSpeedMax { get; set; } diff --git a/AsbCloudApp/Data/TelemetryInfoDto.cs b/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs similarity index 94% rename from AsbCloudApp/Data/TelemetryInfoDto.cs rename to AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs index 0b601db6..7b9f16cf 100644 --- a/AsbCloudApp/Data/TelemetryInfoDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs @@ -1,6 +1,6 @@ using System; -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { public class TelemetryInfoDto { diff --git a/AsbCloudApp/Data/TelemetryMessageDto.cs b/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs similarity index 94% rename from AsbCloudApp/Data/TelemetryMessageDto.cs rename to AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs index bd9d90a2..02d9d728 100644 --- a/AsbCloudApp/Data/TelemetryMessageDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs @@ -1,6 +1,6 @@ using System; -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { /// /// Сообщение получаемое от телеметрии с буровой diff --git a/AsbCloudApp/Data/TelemetryUserDto.cs b/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs similarity index 88% rename from AsbCloudApp/Data/TelemetryUserDto.cs rename to AsbCloudApp/Data/SAUB/TelemetryUserDto.cs index dd58e848..83b8ba26 100644 --- a/AsbCloudApp/Data/TelemetryUserDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.SAUB { public class TelemetryUserDto : IId { diff --git a/AsbCloudApp/Data/TelemetryDto.cs b/AsbCloudApp/Data/TelemetryDto.cs index df55e879..66bf9cc1 100644 --- a/AsbCloudApp/Data/TelemetryDto.cs +++ b/AsbCloudApp/Data/TelemetryDto.cs @@ -1,4 +1,5 @@ -using System.Text.Json.Serialization; +using AsbCloudApp.Data.SAUB; +using System.Text.Json.Serialization; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/WITS/Readme.md b/AsbCloudApp/Data/WITS/Readme.md new file mode 100644 index 00000000..ac6325ef --- /dev/null +++ b/AsbCloudApp/Data/WITS/Readme.md @@ -0,0 +1,2 @@ +Данные WITS см.: http://www.petrospec-technologies.com/resource/wits_doc.htm. +Дополнительное описание параметров в сборке AsbWitsInf.dll \ No newline at end of file diff --git a/AsbCloudApp/Data/WITS/Record1.cs b/AsbCloudApp/Data/WITS/Record1Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record1.cs rename to AsbCloudApp/Data/WITS/Record1Dto.cs diff --git a/AsbCloudApp/Data/WITS/Record50.cs b/AsbCloudApp/Data/WITS/Record50Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record50.cs rename to AsbCloudApp/Data/WITS/Record50Dto.cs diff --git a/AsbCloudApp/Data/WITS/Record60.cs b/AsbCloudApp/Data/WITS/Record60Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record60.cs rename to AsbCloudApp/Data/WITS/Record60Dto.cs diff --git a/AsbCloudApp/Data/WITS/Record61.cs b/AsbCloudApp/Data/WITS/Record61Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record61.cs rename to AsbCloudApp/Data/WITS/Record61Dto.cs diff --git a/AsbCloudApp/Data/WITS/Record7.cs b/AsbCloudApp/Data/WITS/Record7Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record7.cs rename to AsbCloudApp/Data/WITS/Record7Dto.cs diff --git a/AsbCloudApp/Data/WITS/Record8.cs b/AsbCloudApp/Data/WITS/Record8Dto.cs similarity index 100% rename from AsbCloudApp/Data/WITS/Record8.cs rename to AsbCloudApp/Data/WITS/Record8Dto.cs diff --git a/AsbCloudApp/Data/WITS/RecordBase.cs b/AsbCloudApp/Data/WITS/RecordBaseDto.cs similarity index 96% rename from AsbCloudApp/Data/WITS/RecordBase.cs rename to AsbCloudApp/Data/WITS/RecordBaseDto.cs index 52e3267b..6116650f 100644 --- a/AsbCloudApp/Data/WITS/RecordBase.cs +++ b/AsbCloudApp/Data/WITS/RecordBaseDto.cs @@ -1,13 +1,18 @@ +using System; + namespace AsbCloudApp.Data.WITS { /// /// This is base class for all WITS-0 records /// - public abstract class RecordBaseDto + public abstract class RecordBaseDto: ITelemetryData { public int Id { get; set; } - + public int IdTelemetry { get; set; } + + public DateTime DateTime { get; set; } + public int TimeStamp { get; set; } /// @@ -83,7 +88,7 @@ namespace AsbCloudApp.Data.WITS /// ValueType = "L" /// - public int? Date { get; set; } + public int? Date_ { get; set; } /// /// RecordId = 1, @@ -114,6 +119,5 @@ namespace AsbCloudApp.Data.WITS /// public short? Actcod { get; set; } - } } diff --git a/AsbCloudApp/Services/IEventService.cs b/AsbCloudApp/Services/IEventService.cs index 54e8897a..937eb24a 100644 --- a/AsbCloudApp/Services/IEventService.cs +++ b/AsbCloudApp/Services/IEventService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IMessageService.cs b/AsbCloudApp/Services/IMessageService.cs index 1a2536f2..98dc863d 100644 --- a/AsbCloudApp/Services/IMessageService.cs +++ b/AsbCloudApp/Services/IMessageService.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/ITelemetryService.cs b/AsbCloudApp/Services/ITelemetryService.cs index 2d42d53d..144ae3ca 100644 --- a/AsbCloudApp/Services/ITelemetryService.cs +++ b/AsbCloudApp/Services/ITelemetryService.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/ITelemetryUserService.cs b/AsbCloudApp/Services/ITelemetryUserService.cs index 80c465a3..c19dbb39 100644 --- a/AsbCloudApp/Services/ITelemetryUserService.cs +++ b/AsbCloudApp/Services/ITelemetryUserService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; namespace AsbCloudApp.Services diff --git a/AsbCloudApp/Services/IWitsRepository.cs b/AsbCloudApp/Services/IWitsRepository.cs index 32a9c8ee..34a47126 100644 --- a/AsbCloudApp/Services/IWitsRepository.cs +++ b/AsbCloudApp/Services/IWitsRepository.cs @@ -1,11 +1,16 @@ -using System.Collections.Generic; +using AsbCloudApp.Data; +using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services { - public interface IWitsRepository + public interface IWitsRecordRepository + where TDto: ITelemetryData { - Task SaveDataAsync(string uid, IEnumerable dtos, CancellationToken token); + Task SaveDataAsync(int idTelemetry, IEnumerable dtos, CancellationToken token); + Task> GetAsync(int idTelemetry, DateTime begin, DateTime end, CancellationToken token); + Task<(DateTime begin, DateTime end, int count)?> GetStatAsync(int idTelemetry, CancellationToken token); } } \ No newline at end of file diff --git a/AsbCloudDb/Model/WITS/Record15.cs b/AsbCloudDb/Model/WITS/Record15.cs index 00781033..0f84b023 100644 --- a/AsbCloudDb/Model/WITS/Record15.cs +++ b/AsbCloudDb/Model/WITS/Record15.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +#nullable enable namespace AsbCloudDb.Model.WITS { diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index f7e83474..79ba1f42 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -14,6 +14,7 @@ using System; using FluentValidation; using FluentValidation.AspNetCore; using AsbCloudInfrastructure.Services.DrillingProgram; +using AsbCloudApp.Data.SAUB; namespace AsbCloudInfrastructure { @@ -54,6 +55,7 @@ namespace AsbCloudInfrastructure services.AddHostedService();// replace by BackgroundWorkerService + services.AddSingleton(new WitsInfoService()); services.AddSingleton(new CacheDb()); services.AddSingleton(); services.AddSingleton(); @@ -96,6 +98,14 @@ namespace AsbCloudInfrastructure services.AddTransient, TelemetryDataSaubService>(); services.AddTransient, TelemetryDataSpinService>(); + // Wits + services.AddTransient, WitsRecordRepository>(); + services.AddTransient, WitsRecordRepository>(); + services.AddTransient, WitsRecordRepository>(); + services.AddTransient, WitsRecordRepository>(); + services.AddTransient, WitsRecordRepository>(); + services.AddTransient, WitsRecordRepository>(); + services.AddValidators(); return services; diff --git a/AsbCloudInfrastructure/Services/EventService.cs b/AsbCloudInfrastructure/Services/EventService.cs index f34d5cf0..59828dd4 100644 --- a/AsbCloudInfrastructure/Services/EventService.cs +++ b/AsbCloudInfrastructure/Services/EventService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; diff --git a/AsbCloudInfrastructure/Services/MessageService.cs b/AsbCloudInfrastructure/Services/MessageService.cs index 1d3c6d6a..e18aed0d 100644 --- a/AsbCloudInfrastructure/Services/MessageService.cs +++ b/AsbCloudInfrastructure/Services/MessageService.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; diff --git a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index ebf5d0a6..ef8a118a 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -40,16 +40,16 @@ namespace AsbCloudInfrastructure.Services if (dtos == default || !dtos.Any()) return 0; - var dtosList = dtos.OrderBy(d => d.Date).ToList(); + var dtosList = dtos.OrderBy(d => d.DateTime).ToList(); - var dtoMinDate = dtosList.First().Date; - var dtoMaxDate = dtosList.Last().Date; + var dtoMinDate = dtosList.First().DateTime; + var dtoMaxDate = dtosList.Last().DateTime; if (dtosList.Count > 1) { var duplicates = new List(8); for (int i = 1; i < dtosList.Count; i++) - if (dtosList[i].Date - dtosList[i-1].Date < TimeSpan.FromMilliseconds(100)) + if (dtosList[i].DateTime - dtosList[i-1].DateTime < TimeSpan.FromMilliseconds(100)) duplicates.Add(dtosList[i - 1]); foreach (var duplicate in duplicates) dtosList.Remove(duplicate); diff --git a/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs b/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs index 18648d93..7bfd7f61 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; @@ -21,7 +21,7 @@ namespace AsbCloudInfrastructure.Services var telemetryUser = cacheTelemetryUsers? .FirstOrDefault(u => u.IdTelemetry == src.IdTelemetry && (u.Name == src.User || u.Surname == src.User)); entity.IdUser = telemetryUser?.IdUser; - entity.DateTime = src.Date.ToUtcDateTimeOffset(timezoneOffset); + entity.DateTime = src.DateTime.ToUtcDateTimeOffset(timezoneOffset); return entity; } @@ -31,7 +31,7 @@ namespace AsbCloudInfrastructure.Services var telemetryUser = cacheTelemetryUsers? .FirstOrDefault(u => u.IdTelemetry == src.IdTelemetry && u.IdUser == src.IdUser); dto.User = telemetryUser?.MakeDisplayName(); - dto.Date = src.DateTime.ToRemoteDateTime(timezoneOffset); + dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset); return dto; } } diff --git a/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs b/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs index c6ac634c..b808ae4c 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; @@ -18,14 +18,14 @@ namespace AsbCloudInfrastructure.Services public override TelemetryDataSpin Convert(TelemetryDataSpinDto src, double timezoneOffset) { var entity = src.Adapt(); - entity.DateTime = src.Date.ToUtcDateTimeOffset(timezoneOffset); + entity.DateTime = src.DateTime.ToUtcDateTimeOffset(timezoneOffset); return entity; } public override TelemetryDataSpinDto Convert(TelemetryDataSpin src, double timezoneOffset) { var dto = src.Adapt(); - dto.Date = src.DateTime.ToRemoteDateTime(timezoneOffset); + dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset); return dto; } } diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs index 90144464..c88c3972 100644 --- a/AsbCloudInfrastructure/Services/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryService.cs @@ -10,6 +10,7 @@ using System; using System.Threading; using Microsoft.EntityFrameworkCore; using AsbCloudDb; +using AsbCloudApp.Data.SAUB; namespace AsbCloudInfrastructure.Services { diff --git a/AsbCloudInfrastructure/Services/TelemetryUserService.cs b/AsbCloudInfrastructure/Services/TelemetryUserService.cs index fe6799c3..19b0d781 100644 --- a/AsbCloudInfrastructure/Services/TelemetryUserService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryUserService.cs @@ -1,5 +1,5 @@ using AsbCloudApp.Comparators; -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; diff --git a/AsbCloudInfrastructure/Services/WitsInfoService.cs b/AsbCloudInfrastructure/Services/WitsInfoService.cs new file mode 100644 index 00000000..42bea924 --- /dev/null +++ b/AsbCloudInfrastructure/Services/WitsInfoService.cs @@ -0,0 +1,34 @@ +using AsbWitsInfo; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services +{ + public class WitsInfoService + { + private readonly InfoService witsInfoService; + public WitsInfoService(IEnumerable? customItems = null, IEnumerable? customRecords = null) + { + witsInfoService = new InfoService(customItems, customRecords); + } + + public object GetItems(int idRecord = -1) + { + object items; + if(idRecord > 0) + items = witsInfoService.ItemInfoStore.Where(i => i.RecordId == idRecord); + else + items = witsInfoService.ItemInfoStore.Where(i => true); + return items; + } + + public object GetRecords(int idRecord = -1) + { + object items; + if (idRecord > 0) + items = witsInfoService.RecordInfoStore.Where(i => i.RecordId == idRecord); + else + items = witsInfoService.RecordInfoStore.Where(i => true); + return items; + } + } +} diff --git a/AsbCloudInfrastructure/Services/WitsRecordRepository.cs b/AsbCloudInfrastructure/Services/WitsRecordRepository.cs new file mode 100644 index 00000000..09cb1d09 --- /dev/null +++ b/AsbCloudInfrastructure/Services/WitsRecordRepository.cs @@ -0,0 +1,90 @@ +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using Mapster; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services +{ + public class WitsRecordRepository : IWitsRecordRepository + where TEntity : class, ITelemetryData + where TDto: AsbCloudApp.Data.ITelemetryData + { + private readonly DbSet dbset; + private readonly IAsbCloudDbContext db; + private readonly ITelemetryService telemetryService; + + public WitsRecordRepository(IAsbCloudDbContext db, ITelemetryService telemetryService) + { + dbset = db.Set(); + this.db = db; + this.telemetryService = telemetryService; + } + + public async Task<(DateTime begin, DateTime end, int count)?> GetStatAsync(int idTelemetry, CancellationToken token) + { + var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; + var stat = await dbset.Where(d => d.IdTelemetry == idTelemetry) + .GroupBy(d => d.IdTelemetry) + .Select(g => new Tuple(g.Min(d => d.DateTime), g.Max(d => d.DateTime), g.Count())) + .FirstOrDefaultAsync(token); + + if (stat is null || stat.Item3 == 0) + return null; + + return ( + stat.Item1.ToRemoteDateTime(timezoneHours), + stat.Item2.ToRemoteDateTime(timezoneHours), + stat.Item3); + } + + public async Task> GetAsync(int idTelemetry, DateTime begin, DateTime end, CancellationToken token) + { + var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; + var query = dbset + .Where(d => d.IdTelemetry == idTelemetry) + .Where(d => d.DateTime >= begin) + .Where(d => d.DateTime <= end) + .AsNoTracking(); + var data = await query.ToListAsync(token); + return data.Select(d => Convert(d, timezoneHours)); + } + + public Task SaveDataAsync(int idTelemetry, IEnumerable dtos, CancellationToken token) + { + if (dtos?.Any() != true) + return Task.CompletedTask; + + var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; + var entities = dtos.Select(dto => Convert(dto, idTelemetry, timezoneHours)); + + dbset.AddRange(entities); + return db.SaveChangesAsync(token); + } + + private static TEntity Convert(TDto dto, int idTelemetry, double timezoneHours) + { + if (dto is null) + return null; + + var entity = dto.Adapt(); + entity.IdTelemetry = idTelemetry; + entity.DateTime = dto.DateTime.ToUtcDateTimeOffset(timezoneHours); + return entity; + } + + private static TDto Convert(TEntity entity, double timezoneHours) + { + if (entity is null) + return default; + + var data = entity.Adapt(); + data.DateTime = entity.DateTime.ToRemoteDateTime(timezoneHours); + return data; + } + } +} diff --git a/AsbCloudInfrastructure/Validators/EventDtoValidator.cs b/AsbCloudInfrastructure/Validators/EventDtoValidator.cs index d70dea2a..3ed82d24 100644 --- a/AsbCloudInfrastructure/Validators/EventDtoValidator.cs +++ b/AsbCloudInfrastructure/Validators/EventDtoValidator.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using FluentValidation; namespace AsbCloudInfrastructure.Validators diff --git a/AsbCloudWebApi.Tests/ControllersTests/TelemetryDataSaubControllerTests.cs b/AsbCloudWebApi.Tests/ControllersTests/TelemetryDataSaubControllerTests.cs index 60a6db17..26a4c34b 100644 --- a/AsbCloudWebApi.Tests/ControllersTests/TelemetryDataSaubControllerTests.cs +++ b/AsbCloudWebApi.Tests/ControllersTests/TelemetryDataSaubControllerTests.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudWebApi.Controllers; diff --git a/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs index 9d6baf19..ff03239e 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs @@ -1,4 +1,3 @@ -using AsbCloudApp.Data; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; using AsbCloudInfrastructure.Services; @@ -8,6 +7,7 @@ using System.Threading.Tasks; using AsbCloudApp.Services; using Moq; using Xunit; +using AsbCloudApp.Data.SAUB; namespace AsbCloudWebApi.Tests.ServicesTests; diff --git a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs index 63638083..a29de72f 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services; @@ -70,7 +71,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests var newData = new List { new TelemetryDataSaubDto{ - Date = now, + DateTime = now, AxialLoad = 1, MseState = 1, User = tuser, diff --git a/AsbCloudWebApi/Controllers/TelemetryController.cs b/AsbCloudWebApi/Controllers/TelemetryController.cs index e66734a9..9855fa3b 100644 --- a/AsbCloudWebApi/Controllers/TelemetryController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryController.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/TelemetryDataSaubController.cs b/AsbCloudWebApi/Controllers/TelemetryDataSaubController.cs index c24fd103..242ee985 100644 --- a/AsbCloudWebApi/Controllers/TelemetryDataSaubController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryDataSaubController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/TelemetryDataSpinController.cs b/AsbCloudWebApi/Controllers/TelemetryDataSpinController.cs index 286efdf2..d8e0bc67 100644 --- a/AsbCloudWebApi/Controllers/TelemetryDataSpinController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryDataSpinController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs b/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs new file mode 100644 index 00000000..58c1aa2a --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs @@ -0,0 +1,82 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public abstract class WitsControllerAbstract : ControllerBase + where TDto : ITelemetryData + { + private readonly ITelemetryService telemetryService; + private readonly IHubContext telemetryHubContext; + protected abstract string SirnalRMethodGetDataName { get; } + + public WitsControllerAbstract( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + { + this.telemetryService = telemetryService; + this.telemetryHubContext = telemetryHubContext; + } + + [HttpPost("{uid}")] + [AllowAnonymous] + public async virtual Task PostDataAsync( + string uid, + [FromBody] IEnumerable dtos, + [FromServices] IWitsRecordRepository witsRecordRepository, + CancellationToken token = default) + { + var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid); + await witsRecordRepository.SaveDataAsync(idTelemetry, dtos, token).ConfigureAwait(false); + var idWell = telemetryService.GetIdWellByTelemetryUid(uid); + if (idWell != null && dtos.Any()) + _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_wits") + .SendAsync(SirnalRMethodGetDataName, dtos), CancellationToken.None); + + return Ok(); + } + + [HttpGet("{idWell}")] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable))] + public async virtual Task GetDataAsync( + int idWell, + DateTime begin, + DateTime end, + [FromServices] IWitsRecordRepository witsRecordRepository, + CancellationToken token) + { + var idTelemetry = telemetryService.GetIdTelemetryByIdWell(idWell); + if (idTelemetry is null) + return NoContent(); + var dtos = await witsRecordRepository.GetAsync((int)idTelemetry, begin, end, token); + return Ok(dtos); + } + + [HttpGet("{idWell}/datesRange")] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof((DateTime begin, DateTime end, int count)?))] + public async virtual Task GetDatesRangeAsync( + int idWell, + [FromServices] IWitsRecordRepository witsRecordRepository, + CancellationToken token) + { + var idTelemetry = telemetryService.GetIdTelemetryByIdWell(idWell); + if (idTelemetry is null) + return NoContent(); + var dtos = await witsRecordRepository.GetStatAsync((int)idTelemetry, token); + return Ok(dtos); + } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs b/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs new file mode 100644 index 00000000..41e6c9e3 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs @@ -0,0 +1,46 @@ +using AsbCloudInfrastructure.Services; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsInfoController : ControllerBase + { + private readonly WitsInfoService witsInfoService; + + public WitsInfoController(WitsInfoService witsInfoService) + { + this.witsInfoService = witsInfoService; + } + + [HttpGet("item")] + public IActionResult GetItems() + { + var result = witsInfoService.GetItems(); + return Ok(result); + } + + [HttpGet("item/{idRecord}")] + public IActionResult GetItems(int idRecord) + { + var result = witsInfoService.GetItems(idRecord); + return Ok(result); + } + + [HttpGet("record")] + public IActionResult GetRecordInfo() + { + var result = witsInfoService.GetRecords(); + return Ok(result); + } + + [HttpGet("record/{idRecord}")] + public IActionResult GetRecordInfo(int idRecord) + { + var result = witsInfoService.GetRecords(idRecord); + return Ok(result); + } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs new file mode 100644 index 00000000..a0b3f33c --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs @@ -0,0 +1,21 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord1Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord1"; + + public WitsRecord1Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs new file mode 100644 index 00000000..96d991b2 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord50Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord50"; + public WitsRecord50Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs new file mode 100644 index 00000000..292cb0a6 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord60Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord60"; + public WitsRecord60Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs new file mode 100644 index 00000000..c9a9df55 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord61Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord61"; + public WitsRecord61Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs new file mode 100644 index 00000000..0e32a5f2 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord7Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord7"; + public WitsRecord7Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + } +} diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs new file mode 100644 index 00000000..08bb7a22 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; + +namespace AsbCloudWebApi.Controllers.WITS +{ + [Route("api/[controller]")] + [ApiController] + public class WitsRecord8Controller : WitsControllerAbstract + { + protected override string SirnalRMethodGetDataName => "ReceiveWitsRecord8"; + public WitsRecord8Controller( + ITelemetryService telemetryService, + IHubContext telemetryHubContext) + : base(telemetryService, telemetryHubContext) { } + } +} diff --git a/AsbCloudWebApi/Controllers/WitsController.cs b/AsbCloudWebApi/Controllers/WitsController.cs deleted file mode 100644 index 4d0e492b..00000000 --- a/AsbCloudWebApi/Controllers/WitsController.cs +++ /dev/null @@ -1,63 +0,0 @@ -using AsbCloudApp.Services; -using AsbCloudWebApi.SignalR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.SignalR; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -namespace AsbCloudWebApi.Controllers -{ - [Route("api/telemetry/{uid}/wits")] - [ApiController] - public class WitsController : ControllerBase - { - private readonly IWitsRepository witsService; - private readonly ITelemetryService telemetryService; - private readonly IHubContext telemetryHubContext; - - public WitsController( - IWitsRepository witsService, - ITelemetryService telemetryService, - IHubContext telemetryHubContext) - { - this.witsService = witsService; - this.telemetryService = telemetryService; - this.telemetryHubContext = telemetryHubContext; - } - - //[HttpPost("record1")] - //[AllowAnonymous] - //public virtual async Task PostDataAsync(string uid, [FromBody] IEnumerable dtos, - // CancellationToken token = default) - //{ - // await telemetryDataService.UpdateDataAsync(uid, dtos, token).ConfigureAwait(false); - - // var idWell = telemetryService.GetIdWellByTelemetryUid(uid); - // if (idWell != null && dtos.Any()) - // _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}") - // .SendAsync(SirnalRMethodGetDataName, dtos), CancellationToken.None); - - // return Ok(); - //} - - - //private async Task PostDataAsync( - // string uid, - // IEnumerable dtos, - // CancellationToken token = default) - //{ - // //await witsService.SaveDataAsync(uid, dtos, token).ConfigureAwait(false); - - // var idWell = telemetryService.GetIdWellByTelemetryUid(uid); - // if (idWell != null && dtos.Any()) - // _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}") - // .SendAsync(SirnalRMethodGetDataName, dtos), CancellationToken.None); - - // return Ok(); - //} - } -} diff --git a/AsbCloudWebApi/ProtobufModel.cs b/AsbCloudWebApi/ProtobufModel.cs index e41cb955..935438c9 100644 --- a/AsbCloudWebApi/ProtobufModel.cs +++ b/AsbCloudWebApi/ProtobufModel.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using ProtoBuf.Meta; namespace AsbCloudWebApi @@ -18,7 +18,7 @@ namespace AsbCloudWebApi return; RuntimeTypeModel.Default.Add(type, false) .Add(1, nameof(TelemetryDataSpinDto.IdTelemetry)) - .Add(2, nameof(TelemetryDataSpinDto.Date)) + .Add(2, nameof(TelemetryDataSpinDto.DateTime)) .Add(3, nameof(TelemetryDataSpinDto.TopDriveSpeed)) .Add(4, nameof(TelemetryDataSpinDto.TopDriveSpeedMin)) .Add(5, nameof(TelemetryDataSpinDto.TopDriveSpeedMax)) @@ -91,7 +91,7 @@ namespace AsbCloudWebApi return; RuntimeTypeModel.Default.Add(type, false) .Add(1, nameof(TelemetryDataSaubDto.IdTelemetry)) - .Add(2, nameof(TelemetryDataSaubDto.Date)) + .Add(2, nameof(TelemetryDataSaubDto.DateTime)) .Add(3, nameof(TelemetryDataSaubDto.Mode)) .Add(4, nameof(TelemetryDataSaubDto.User)) .Add(5, nameof(TelemetryDataSaubDto.WellDepth)) diff --git a/ConsoleApp1/ControllerLoadTester.cs b/ConsoleApp1/ControllerLoadTester.cs index 2a9a4c0f..3c4133f2 100644 --- a/ConsoleApp1/ControllerLoadTester.cs +++ b/ConsoleApp1/ControllerLoadTester.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Text; using System.Text.Json; using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; namespace ConsoleApp1 { @@ -75,7 +76,7 @@ namespace ConsoleApp1 { var dto = new TelemetryDataSaubDto { - Date = date == default ? DateTime.Now : date, + DateTime = date == default ? DateTime.Now : date, User = "Вупсень", Mode = 1, //ротор IdFeedRegulator = 1,