From 37ec39f403d4d619a9013d6ef72e50abb187377d Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Mon, 18 Dec 2023 15:56:24 +0500 Subject: [PATCH] =?UTF-8?q?1.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0=20Microsoft?= =?UTF-8?q?.AspNetCore.Http.Extensions=202.=20=D0=9F=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D0=B0=D1=82=D0=B0=D0=BC=20=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AsbCloudInfrastructure.csproj | 1 + .../DetectedOperationExportService.cs | 35 +++++++++++-------- .../SAUB/DetectedOperationController.cs | 4 +-- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index f2edc76d..a1816762 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -56,6 +56,7 @@ + diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs index a6038741..eb119b06 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs @@ -10,6 +10,7 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudInfrastructure.Services.DetectOperations.Detectors; using AsbCloudApp.Repositories; +using Microsoft.AspNetCore.Http.Extensions; namespace AsbCloudInfrastructure.Services.DetectOperations; @@ -21,12 +22,6 @@ public class DetectedOperationExportService new DetectorSlipsTime() }; - private readonly IDictionary domains = new Dictionary - { - { 1, "https://cloud.digitaldrilling.ru" }, - { 2, "https://cloud.autodrilling.ru" } - }; - private const int headerRowsCount = 1; private const string cellDepositName = "B1"; @@ -54,7 +49,15 @@ public class DetectedOperationExportService this.wellOperationRepository = wellOperationRepository; } - public async Task ExportAsync(int idWell, string url, CancellationToken cancellationToken) + /// + /// Экспорт excel файла с операциями по скважине + /// + /// ключ скважины + /// хост + /// + /// + /// + public async Task ExportAsync(int idWell, string host, CancellationToken cancellationToken) { var well = await dbContext.Wells .Include(w => w.Cluster) @@ -69,17 +72,17 @@ public class DetectedOperationExportService var operations = await DetectOperationsAsync(well.IdTelemetry.Value, DateTime.UnixEpoch, cancellationToken); - return await GenerateExcelFileStreamAsync(well, url, operations, cancellationToken); + return await GenerateExcelFileStreamAsync(well, host, operations, cancellationToken); } - private async Task GenerateExcelFileStreamAsync(Well well, string url, IEnumerable operationDetectorResults, + private async Task GenerateExcelFileStreamAsync(Well well, string host, IEnumerable operationDetectorResults, CancellationToken cancellationToken) { using var excelTemplateStream = await GetExcelTemplateStreamAsync(cancellationToken); using var workbook = new XLWorkbook(excelTemplateStream, XLEventTracking.Disabled); - await AddToWorkbookAsync(workbook, well, url, operationDetectorResults, cancellationToken); + await AddToWorkbookAsync(workbook, well, host, operationDetectorResults, cancellationToken); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); @@ -87,7 +90,7 @@ public class DetectedOperationExportService return memoryStream; } - private async Task AddToWorkbookAsync(XLWorkbook workbook, Well well, string url, IEnumerable operationDetectorResults, + private async Task AddToWorkbookAsync(XLWorkbook workbook, Well well, string host, IEnumerable operationDetectorResults, CancellationToken cancellationToken) { const string sheetName = "Операции"; @@ -98,12 +101,12 @@ public class DetectedOperationExportService var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName) ?? throw new FileFormatException($"Книга excel не содержит листа {sheetName}."); - await AddToSheetAsync(sheet, well, url, operationDetectorResults + await AddToSheetAsync(sheet, well, host, operationDetectorResults .OrderBy(x => x.Operation.DateStart).ThenBy(x => x.Operation.DepthStart).ToArray(), cancellationToken); } - private async Task AddToSheetAsync(IXLWorksheet sheet, Well well, string url, IList operationDetectorResults, + private async Task AddToSheetAsync(IXLWorksheet sheet, Well well, string host, IList operationDetectorResults, CancellationToken cancellationToken) { var wellOperationCategories = await dbContext.WellOperationCategories.ToListAsync(cancellationToken); @@ -134,7 +137,11 @@ public class DetectedOperationExportService && idReasonOfEndObject is int idReasonOfEnd) row.Cell(columnIdReasonOfEnd).Value = GetIdReasonOfEnd(idReasonOfEnd); - var link = $"{url}?end={Uri.EscapeDataString(dateStart.AddSeconds(1800 * 0.9).ToString("yyyy-MM-ddTHH:mm:ss.fff"))}&range=1800"; + var query = new QueryBuilder(); + query.Add("end", dateStart.AddSeconds(1800 * 0.9).ToString("yyyy-MM-ddTHH:mm:ss.fff")); + query.Add("range", "1800"); + + var link = $"{host}/well/{well.Id}/telemetry/monitoring{query}"; row.Cell(columnDateStart).Value = dateStart; row.Cell(columnDateStart).SetHyperlink(new XLHyperlink(link)); diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index 65231423..02f2d4cb 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -135,8 +135,8 @@ namespace AsbCloudWebApi.Controllers.SAUB if (idCompany is null) return Forbid(); - var url = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}/well/{idWell}/telemetry/monitoring"; - var stream = await detectedOperationExportService.ExportAsync(idWell, url, token); + var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"; + var stream = await detectedOperationExportService.ExportAsync(idWell, host, token); return File(stream, "application/octet-stream", "operations.xlsx"); }