forked from ddrilling/AsbCloudServer
80 lines
3.6 KiB
C#
80 lines
3.6 KiB
C#
using AsbCloudApp.Data;
|
||
using AsbCloudApp.Data.ProcessMapPlan;
|
||
using AsbCloudApp.Data.ProcessMaps.Report;
|
||
using AsbCloudApp.Repositories;
|
||
using AsbCloudApp.Requests;
|
||
using AsbCloudApp.Services;
|
||
using AsbCloudApp.Services.ProcessMaps;
|
||
using AsbCloudApp.Services.ProcessMaps.WellDrilling;
|
||
using AsbCloudWebApi.SignalR;
|
||
using AsbCloudWebApi.SignalR.Clients;
|
||
using Microsoft.AspNetCore.Http;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.AspNetCore.SignalR;
|
||
using System.Collections.Generic;
|
||
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace AsbCloudWebApi.Controllers.ProcessMaps;
|
||
|
||
/// <summary>
|
||
/// РТК бурение
|
||
/// </summary>
|
||
public class ProcessMapWellDrillingController : ProcessMapBaseController<ProcessMapPlanDrillingDto>
|
||
{
|
||
private readonly IProcessMapReportDataSaubStatService processMapReportDataSaubStatService;
|
||
private readonly IProcessMapReportDataSaubStatExportService processMapReportDataSaubStatExportService;
|
||
|
||
protected override string SignalRGroup => "ProcessMapWellDrilling";
|
||
|
||
public ProcessMapWellDrillingController(IWellService wellService,
|
||
IChangeLogRepository<ProcessMapPlanDrillingDto, ProcessMapPlanBaseRequestWithWell> repository,
|
||
IUserRepository userRepository,
|
||
IProcessMapReportDataSaubStatExportService processMapReportDataSaubStatExportService,
|
||
IProcessMapReportDataSaubStatService processMapReportDataSaubStatService,
|
||
ICrudRepository<WellSectionTypeDto> wellSectionRepository,
|
||
IHubContext<TelemetryHub, ITelemetryHubClient> telemetryHubContext,
|
||
ITelemetryService telemetryService,
|
||
IProcessMapPlanService<ProcessMapPlanDrillingDto> service)
|
||
: base(wellService, repository, userRepository, wellSectionRepository, telemetryHubContext, telemetryService, service)
|
||
{
|
||
this.processMapReportDataSaubStatExportService = processMapReportDataSaubStatExportService;
|
||
this.processMapReportDataSaubStatService = processMapReportDataSaubStatService;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Получение данных для отчета РТК бурение
|
||
/// </summary>
|
||
/// <param name="idWell">Id</param>
|
||
/// <param name="request">параметры запроса</param>
|
||
/// <param name="cancellationToken"></param>
|
||
/// <returns></returns>
|
||
[HttpPost("report")]
|
||
[ProducesResponseType(typeof(IEnumerable<ProcessMapReportDataSaubStatDto>), StatusCodes.Status200OK)]
|
||
public async Task<IActionResult> GetReportAsync(int idWell, DataSaubStatRequest request, CancellationToken cancellationToken)
|
||
{
|
||
var report = await processMapReportDataSaubStatService.GetAsync(idWell, request, cancellationToken);
|
||
|
||
return Ok(report);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Экспорт отчета РТК бурение
|
||
/// </summary>
|
||
/// <param name="idWell">Id скважины</param>
|
||
/// <param name="request">Параметры запроса</param>
|
||
/// <param name="cancellationToken"></param>
|
||
/// <returns></returns>
|
||
[HttpGet("report/export")]
|
||
[ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")]
|
||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||
public async Task<IActionResult> ExportReportAsync(int idWell, [FromQuery] DataSaubStatRequest request, CancellationToken cancellationToken)
|
||
{
|
||
var report = await processMapReportDataSaubStatExportService.ExportAsync(idWell, request, cancellationToken);
|
||
|
||
if (report is null)
|
||
return NoContent();
|
||
|
||
return File(report.Value.File, "application/octet-stream", report.Value.Name);
|
||
}
|
||
} |