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;
+ }
+ }
+}