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 00000000..640f481b Binary files /dev/null and b/AsbCloudInfrastructure/Services/DailyReport/DailyReportTemplate.xlsx differ 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; + } + } +}