From 9023aef984558c3d5dbbe26f7bf9b1f10b849b6b Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Tue, 19 Apr 2022 12:14:03 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D0=BB=D0=B5=D1=80=20=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=81=D1=83=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=80=D0=B0=D0=BF=D0=BE=D1=80=D1=82?= =?UTF-8?q?=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudApp/Data/DailyReportDto.cs | 216 ++++++++++++++++++ .../AsbCloudInfrastructure.csproj | 2 + .../DailyReport/DailyReportTemplate.xlsx | Bin 0 -> 20959 bytes .../Controllers/DailyReportController.cs | 116 ++++++++++ 4 files changed, 334 insertions(+) create mode 100644 AsbCloudApp/Data/DailyReportDto.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportTemplate.xlsx create mode 100644 AsbCloudWebApi/Controllers/DailyReportController.cs diff --git a/AsbCloudApp/Data/DailyReportDto.cs b/AsbCloudApp/Data/DailyReportDto.cs new file mode 100644 index 00000000..48277255 --- /dev/null +++ b/AsbCloudApp/Data/DailyReportDto.cs @@ -0,0 +1,216 @@ +using System; +using System.Collections.Generic; + +namespace AsbCloudApp.Data +{ + /// + /// + /// + public class DailyReportDto + { + /// + ///название скважины + /// + public string WellName { get; set; } + + /// + ///название куста + /// + public string ClusterName { get; set; } + + /// + ///заказчик + /// + public string Customer { get; set; } + + /// + ///подрядчик + /// + public string Contractor { get; set; } + + /// + ///дата рапорта + /// + public DateTime ReportDate { get; set; } + + /// + ///глубина забоя на дату начала интервала + /// + public double? WellDepthIntervalStartDate { get; set; } + + /// + ///глубина забоя на дату окончания интервала + /// + public double? WellDepthIntervalFinishDate { get; set; } + + /// + ///Глубина забоя по стволу на окончание отчетного периода + /// + public double? BottomholeDepth { get; set; } + + /// + ///Глубина забоя по вертикали на дату окончания отчетного периода + /// + public double? VerticalDepth { get; set; } + + /// + ///Зeнитный угол на дату окончания отчетного периода + /// + public double? ZenithAngle { get; set; } + + /// + ///Азимутальный угол на дату окончания отчетного периода + /// + public double? AzimuthAngle { get; set; } + + /// + ///ФИО бурильщиков + /// + public string FirstDriller { get; set; } + + /// + ///ФИО бурильщиков + /// + public string SecondDriller { get; set; } + + /// + ///Время работы АПД + /// + public double? WorkTimeSAUB { get; set; } + + /// + ///Время работы спин мастер + /// + public double? WorkTimeSpinMaster { get; set; } + + /// + ///Время работы торк мастер + /// + public double? WorkTimeTorkMaster { get; set; } + + /// + ///количество метров пробуренных с включенным АПД + /// + public double? PenetrationSAUB { get; set; } + + /// + ///количество метров пробуренных с включенным Спин мастер + /// + public double? PenetrationSpinMaster { get; set; } + + /// + ///количество метров пробуренных с включенным торк мастер + /// + public double? PenetrationTorkMaster { get; set; } + + /// + ///Количество запусков МСЕ + /// + public int CountLaunchesMSE { get; set; } + + /// + ///КНБК описание + /// + public string BHADescription { get; set; } + + /// + ///Нормативное время на одну операцию по подготовке ствола скважины к наращиванию + /// + public double? StandardTimeBarrelPreparation { get; set; } + + /// + ///Нормативное время на одну операцию по наращиванию + /// + public double? StandardTimeExtension { get; set; } + + /// + ///Фактическое время проработок при подготовке ствола скважины к наращиванию. + /// + public double? ActualTimeBarrelPreparation { get; set; } + + /// + ///Фактическое время наращиваний + /// + public double? ActualTimeExtension { get; set; } + + /// + ///Режимы бурения в роторе + /// + public IEnumerable RotorDrillingModes { get; set; } + + /// + ///режимы бурения в слайде + /// + public IEnumerable SlideDrillingModes { get; set; } + + /// + ///Количество метров пробуренных в роторе за отчетный период + /// + public double? PenetrationInRotor { get; set; } + + /// + ///Количество часов бурения в роторе за отчетный период + /// + public double? NumberDrillingHours { get; set; } + + /// + ///средний диф перепад в роторе за отчетный период + /// + public double? AVGDiffDropRotor { get; set; } + + /// + ///количество метров пробуренных в слайде за отчетный период + /// + public double? PenetrationInSlide { get; set; } + + /// + ///время бурения в роторе за отчетный период + /// + public double? DrillingTimeInRotor { get; set; } + + /// + ///средний диф перепад в слайде за отчетный период + /// + public double? AVGDiffPressureSlide { get; set; } + + /// + ///Плановая МСП за секцию + /// + public double? SectionROPPlan { get; set; } + + /// + ///Общее время бурения за секцию + /// + public double? SectionDrillingTimeTotal { get; set; } + + /// + ///Общая проходка за секцию + /// + public double? SectionPenetrationTotal { get; set; } + + /// + ///Количество наращиваний за отчетный период + /// + public int ExtensionsCount { get; set; } + + /// + ///Отклонение относительно ГГД + /// + public double? DeviationFromTVD { get; set; } + + /// + ///указываются все причины, которые влияют на снижение МСП. + /// + public string DeclinesReasonsROP { get; set; } + + /// + ///ФИО Мастера буровой + /// + public string DrillingMaster { get; set; } + + /// + ///ФИО супервайзера + /// + public string Supervisor { get; set; } + } +} diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index 529cfdb4..c03c48d9 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -9,11 +9,13 @@ + + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportTemplate.xlsx b/AsbCloudInfrastructure/Services/DailyReport/DailyReportTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..640f481b8e808f4cde0267039c257687365b36f2 GIT binary patch literal 20959 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 BqJ;ne literal 0 HcmV?d00001 diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs new file mode 100644 index 00000000..5f0dcf3d --- /dev/null +++ b/AsbCloudWebApi/Controllers/DailyReportController.cs @@ -0,0 +1,116 @@ +using AsbCloudApp.Data; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudWebApi.Controllers +{ + [Route("api/well/{idWell}/[controller]")] + [ApiController] + [Authorize] + public class DailyReportController : ControllerBase + { + /// + /// Список наборов данных для формирования рапорта + /// + /// + /// + /// + /// + /// + [HttpGet] + //[Permission] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public async Task GetListAsync(int idWell, DateTime? begin = null, DateTime? end = null, CancellationToken token = default) + { + await Task.Delay(1); + var dto = new DailyReportDto + { + }; + var result = new List { dto }; + return Ok(result); + } + + /// + /// новый набор данных для формирования рапорта (на новую дату). Если в архиве на эту дату уже есть данные то вернуться они. + /// + /// + /// + /// + /// + [HttpGet("{date}")] + //[Permission] + [ProducesResponseType(typeof(DailyReportDto), (int)System.Net.HttpStatusCode.OK)] + public async Task GetOrGenerateAsync(int idWell, [Required] DateTime date, CancellationToken token = default) + { + await Task.Delay(1); + var dto = new DailyReportDto + { + ReportDate = date, + }; + return Ok(dto); + } + + /// + /// Сохранение нового набора данных для формирования рапорта + /// + /// + /// + /// + /// + [HttpPost] + //[Permission] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task AddAsync(int idWell, [Required] DailyReportDto dto, CancellationToken token = default) + { + await Task.Delay(1); + return Ok(1); + } + + /// + /// Сохранение изменений набора данных для формирования рапорта + /// + /// + /// + /// + /// + /// + [HttpPut("{date}")] + //[Permission] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task UpdateAsync(int idWell, [Required] DateTime date, [Required] DailyReportDto dto, CancellationToken token = default) + { + await Task.Delay(1); + return Ok(1); + } + + /// + /// Сформировать и скачать рапорт в формате excel + /// + /// + /// + /// + [HttpGet("{date}/excel")] + //[Permission] + [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)] + public async Task DownloadAsync(int idWell, CancellationToken token = default) + { + await Task.Delay(1); + var stream = GetExcelTemplateStream(); + var fileName = "CP.xlsx"; + return File(stream, "application/octet-stream", fileName); + } + + private static Stream GetExcelTemplateStream() + { + var stream = System.Reflection.Assembly.GetExecutingAssembly() + .GetManifestResourceStream("AsbCloudInfrastructure.Services.WellOperationService.DailyReportTemplate.xlsx"); + return stream; + } + } +}