From 51d43d179af8dee08be895f9775729b765f111c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Tue, 20 Aug 2024 14:09:42 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=20=D0=A0?= =?UTF-8?q?=D0=A2=D0=9A=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AsbCloudInfrastructure.csproj | 1 + .../ProcessMapPlanSubsystemsTemplate.cs | 22 +++++++++ .../ProcessMapPlanSubsystemsExportService.cs | 30 ++++++++++++ .../Parser/ProcessMapPlanSubsystemsParser.cs | 44 ++++++++++++++++++ .../Templates/ProcessMapPlanSubsystems.xlsx | Bin 0 -> 62060 bytes 5 files changed, 97 insertions(+) create mode 100644 AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSubsystemsTemplate.cs create mode 100644 AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSubsystemsExportService.cs create mode 100644 AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSubsystemsParser.cs create mode 100644 AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSubsystems.xlsx diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index 57a0258c..2942a43a 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -44,6 +44,7 @@ + diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSubsystemsTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSubsystemsTemplate.cs new file mode 100644 index 00000000..53ea5180 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSubsystemsTemplate.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using AsbCloudApp.Data.ProcessMaps; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSubsystemsTemplate : ITemplateParameters +{ + public string SheetName => "Использование систем"; + public int HeaderRowsCount => 2; + public string FileName => "ProcessMapPlanSubsystems.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSubsystemsDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSubsystemsDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSubsystemsDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanSubsystemsDto.AutoRotor), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSubsystemsDto.AutoSlide), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSubsystemsDto.AutoOscillation), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanSubsystemsDto.Note), new Cell(7, typeof(string)) } + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSubsystemsExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSubsystemsExportService.cs new file mode 100644 index 00000000..3903a5fa --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSubsystemsExportService.cs @@ -0,0 +1,30 @@ +using System.Threading; +using System.Threading.Tasks; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSubsystemsExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSubsystemsExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSubsystemsTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_использование_подсистем.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSubsystemsParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSubsystemsParser.cs new file mode 100644 index 00000000..9adc787d --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSubsystemsParser.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSubsystemsParser : ProcessMapPlanParser +{ + public ProcessMapPlanSubsystemsParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSubsystemsTemplate(); + + protected override ProcessMapPlanSubsystemsDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + //TODO: при парсинге всех РТК шаблонов этот код повторяется, нужно поправить + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSubsystems.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSubsystems.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e74656c8d1055e980ad7a29feba4725c988481c0 GIT binary patch literal 62060 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 I2lVZK0KFP>(EtDd literal 0 HcmV?d00001