From 6de9e7116ea99e44b2697ab433314d252cd0d18b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 15 Apr 2021 17:56:53 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=B8.=20=D0=A2?= =?UTF-8?q?=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B3=D0=BE=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D1=82=D1=8C=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudWebApi/Controllers/DataController.cs | 13 +++++++++---- AsbCloudWebApi/TODO.md | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 AsbCloudWebApi/TODO.md diff --git a/AsbCloudWebApi/Controllers/DataController.cs b/AsbCloudWebApi/Controllers/DataController.cs index 1edd7973..6437320b 100644 --- a/AsbCloudWebApi/Controllers/DataController.cs +++ b/AsbCloudWebApi/Controllers/DataController.cs @@ -28,15 +28,20 @@ namespace AsbCloudWebApi.Controllers /// Возвращает данные САУБ по скважине. /// По умолчанию за последние 10 минут. /// - /// - /// + /// id скважины + /// дата начала выборки. По умолчанию: текущее время - intervalSec + /// интервал времени даты начала выборки, секунды + /// желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. /// [HttpGet] [Route("{wellId}/data")] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] - public IActionResult Get(int wellId) + public IActionResult Get(int wellId, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024) { - return Ok(telemetryDataService.Get(wellId)); + if(begin == default) + begin = DateTime.Now.AddSeconds(-intervalSec); + var content = telemetryDataService.Get(wellId, begin, intervalSec, approxPointsCount); + return Ok(content); } } } diff --git a/AsbCloudWebApi/TODO.md b/AsbCloudWebApi/TODO.md new file mode 100644 index 00000000..cb546036 --- /dev/null +++ b/AsbCloudWebApi/TODO.md @@ -0,0 +1,15 @@ +* Планируемые к выполнению задачи * + +- синхронизация справочника сообщений +- синхронизация сообщений +- архив телеметрии передавать с САУБ как таблицу (планируемое снижение до 79% до gzip). +- синхронизация архива телеметрии + + + +- доделать секционирование. +- редуцирование архива телеметрии по принципу второй производной. Если вторая производная ~0, то промежуточные значения можно удалить. +- редуцирование выборки в контроллере. слишком большую выборку попробовать уменьшать оконными функиями, сохранять экстремумы и ближайшие к ним значения. + + +* Выполненные задачи * \ No newline at end of file