diff --git a/AsbCloudApp/Services/IParserService.cs b/AsbCloudApp/Services/IParserService.cs
index 6fa095cd..89212ba7 100644
--- a/AsbCloudApp/Services/IParserService.cs
+++ b/AsbCloudApp/Services/IParserService.cs
@@ -9,7 +9,7 @@ namespace AsbCloudApp.Services;
///
///
///
-public interface IParserService : IParserService
+public interface IParserService
where TDto : class, IId
where TOptions : IParserOptionsRequest
{
@@ -26,11 +26,4 @@ public interface IParserService : IParserService
///
///
Stream GetTemplateFile();
-}
-
-///
-/// Сервис парсинга(интерфейс маркер)
-///
-public interface IParserService
-{
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/Parser/Cell.cs b/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs
similarity index 97%
rename from AsbCloudInfrastructure/Services/Parser/Cell.cs
rename to AsbCloudInfrastructure/Services/ExcelServices/Cell.cs
index 381ca57b..a18fb167 100644
--- a/AsbCloudInfrastructure/Services/Parser/Cell.cs
+++ b/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.IO;
using ClosedXML.Excel;
-namespace AsbCloudInfrastructure.Services.Parser;
+namespace AsbCloudInfrastructure.Services.ExcelServices;
public class Cell
{
diff --git a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs
similarity index 77%
rename from AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs
rename to AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs
index 13c621af..64e0259c 100644
--- a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs
+++ b/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs
@@ -7,39 +7,34 @@ using System.Reflection;
using AsbCloudApp.Data;
using AsbCloudApp.Requests.ParserOptions;
using AsbCloudApp.Services;
+using AsbCloudInfrastructure.Services.ExcelServices.Templates;
using ClosedXML.Excel;
using Mapster;
-namespace AsbCloudInfrastructure.Services.Parser;
+namespace AsbCloudInfrastructure.Services.ExcelServices;
public abstract class ParserExcelService : IParserService
where TDto : class, IValidatableObject, IId
where TOptions : IParserOptionsRequest
{
- protected abstract string SheetName { get; }
+ protected abstract ITemplateParameters TemplateParameters { get; }
- protected virtual int HeaderRowsCount => 0;
-
- protected abstract string TemplateFileName { get; }
-
- protected abstract IDictionary Cells { get; }
-
public virtual ParserResultDto Parse(Stream file, TOptions options)
{
using var workbook = new XLWorkbook(file);
- var sheet = workbook.GetWorksheet(SheetName);
+ var sheet = workbook.GetWorksheet(TemplateParameters.SheetName);
var dtos = ParseExcelSheet(sheet);
return dtos;
}
public virtual Stream GetTemplateFile() =>
- Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateFileName)
- ?? throw new ArgumentNullException($"Файл '{TemplateFileName}' не найден");
+ Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName)
+ ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден");
protected virtual IDictionary ParseRow(IXLRow xlRow)
{
- var cells = Cells.ToDictionary(x => x.Key, x =>
+ var cells = TemplateParameters.Cells.ToDictionary(x => x.Key, x =>
{
var columnNumber = x.Value.ColumnNumber;
var xlCell = xlRow.Cell(columnNumber);
@@ -72,7 +67,7 @@ public abstract class ParserExcelService : IParserService x.Key, x => x.Value.ColumnNumber);
+ var columnsDict = TemplateParameters.Cells.ToDictionary(x => x.Key, x => x.Value.ColumnNumber);
var invalidDto = new ValidationResultDto
{
@@ -84,7 +79,10 @@ public abstract class ParserExcelService : IParserService : IParserService ParseExcelSheet(IXLWorksheet sheet)
{
- var count = sheet.RowsUsed().Count() - HeaderRowsCount;
+ var count = sheet.RowsUsed().Count() - TemplateParameters.HeaderRowsCount;
if (count <= 0)
return new ParserResultDto();
@@ -105,7 +103,7 @@ public abstract class ParserExcelService : IParserService
{
- private readonly IEnumerable sections;
-
public ProcessMapPlanDrillingParser(IWellOperationRepository wellOperationRepository)
+ : base(wellOperationRepository)
{
- sections = wellOperationRepository.GetSectionTypes();
}
-
- protected override string SheetName => "План";
- protected override string TemplateFileName => "ProcessMapPlanDrillingTemplate.xlsx";
- private const int ColumnSection = 1;
- private const int ColumnMode = 2;
-
- protected override IDictionary Cells => new Dictionary
- {
- { nameof(ProcessMapPlanDrillingDto.Section), new Cell(ColumnSection, typeof(string)) },
- { nameof(ProcessMapPlanDrillingDto.Mode), new Cell(ColumnMode, typeof(string)) },
- { nameof(ProcessMapPlanDrillingDto.DepthStart), new Cell(3, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.DepthEnd), new Cell(4, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.DeltaPressurePlan), new Cell(5, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.DeltaPressureLimitMax), new Cell(6, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.AxialLoadPlan), new Cell(7, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.AxialLoadLimitMax), new Cell(8, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.TopDriveTorquePlan), new Cell(9, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.TopDriveTorqueLimitMax), new Cell(10, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.TopDriveSpeedPlan), new Cell(11, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.TopDriveSpeedLimitMax), new Cell(12, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.FlowPlan), new Cell(13, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.FlowLimitMax), new Cell(14, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.RopPlan), new Cell(15, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.UsageSaub), new Cell(16, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.UsageSpin), new Cell(17, typeof(double)) },
- { nameof(ProcessMapPlanDrillingDto.Comment), new Cell(18, typeof(string)) }
- };
+ protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDrillingTemplate();
protected override ProcessMapPlanDrillingDto BuildDto(IDictionary row, int rowNumber)
{
@@ -55,7 +27,10 @@ public class ProcessMapPlanDrillingParser : ProcessMapPlanParser : ParserExcelService
where TDto : ProcessMapPlanBaseDto
{
- protected override int HeaderRowsCount => 2;
-
+ protected readonly IEnumerable sections;
+
+ protected ProcessMapPlanParser(IWellOperationRepository wellOperationRepository)
+ {
+ sections = wellOperationRepository.GetSectionTypes();
+ }
+
public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options)
{
var result = base.Parse(file, options);
diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs
index 6ca31714..7bfaa880 100644
--- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs
+++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs
@@ -2,42 +2,21 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using AsbCloudApp.Data;
using AsbCloudApp.Data.ProcessMaps;
using AsbCloudApp.Repositories;
-using AsbCloudInfrastructure.Services.Parser;
+using AsbCloudInfrastructure.Services.ExcelServices.Templates;
+using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates;
namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser;
public class ProcessMapPlanReamParser : ProcessMapPlanParser
{
- private readonly IEnumerable sections;
-
public ProcessMapPlanReamParser(IWellOperationRepository wellOperationRepository)
+ : base(wellOperationRepository)
{
- sections = wellOperationRepository.GetSectionTypes();
}
-
- protected override string SheetName => "План";
- protected override string TemplateFileName => "ProcessMapPlanReamTemplate.xlsx";
- private const int ColumnSection = 1;
-
- protected override IDictionary Cells => new Dictionary
- {
- { nameof(ProcessMapPlanReamDto.Section), new Cell(ColumnSection, typeof(string)) },
- { nameof(ProcessMapPlanReamDto.DepthStart), new Cell(2, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.DepthEnd), new Cell(3, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.Repeats), new Cell(4, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SpinUpward), new Cell(5, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SpinUpward), new Cell(6, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SpeedDownward), new Cell(7, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SpeedUpward), new Cell(8, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SetpointDrag), new Cell(9, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.SetpointTight), new Cell(10, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.Pressure), new Cell(11, typeof(double)) },
- { nameof(ProcessMapPlanReamDto.Torque), new Cell(12, typeof(double)) },
- };
+ protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamTemplate();
protected override ProcessMapPlanReamDto BuildDto(IDictionary row, int rowNumber)
{
@@ -48,7 +27,9 @@ public class ProcessMapPlanReamParser : ProcessMapPlanParser
{
- protected override string SheetName => "Фактическая траектория";
-
- protected override string TemplateFileName => "TrajectoryFactManualTemplate.xlsx";
-
- protected override IDictionary Cells => new Dictionary
- {
- { nameof(TrajectoryGeoFactDto.WellboreDepth), new Cell(1, typeof(double)) },
- { nameof(TrajectoryGeoFactDto.ZenithAngle), new Cell(2, typeof(double)) },
- { nameof(TrajectoryGeoFactDto.AzimuthGeo), new Cell(3, typeof(double)) },
- { nameof(TrajectoryGeoFactDto.AzimuthMagnetic), new Cell(4, typeof(double)) },
- { nameof(TrajectoryGeoFactDto.VerticalDepth), new Cell(5, typeof(double)) },
- { nameof(TrajectoryGeoFactDto.Comment), new Cell(6, typeof(string)) }
- };
+ protected override ITemplateParameters TemplateParameters => new TrajectoryFactManualTemplate();
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs
index ce579fa6..f2aca93d 100644
--- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs
+++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs
@@ -2,15 +2,13 @@ using System.IO;
using AsbCloudApp.Data;
using AsbCloudApp.Data.Trajectory;
using AsbCloudApp.Requests.ParserOptions;
-using AsbCloudInfrastructure.Services.Parser;
+using AsbCloudInfrastructure.Services.ExcelServices;
namespace AsbCloudInfrastructure.Services.Trajectory.Parser;
public abstract class TrajectoryParser : ParserExcelService
where TDto : TrajectoryGeoDto
{
- protected override int HeaderRowsCount => 2;
-
public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options)
{
var result = base.Parse(file, options);
diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
index 568bfa35..d99f0b9f 100644
--- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
+++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
@@ -1,23 +1,10 @@
-using System.Collections.Generic;
-using AsbCloudApp.Data.Trajectory;
-using AsbCloudInfrastructure.Services.Parser;
+using AsbCloudApp.Data.Trajectory;
+using AsbCloudInfrastructure.Services.ExcelServices.Templates;
+using AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemplates;
namespace AsbCloudInfrastructure.Services.Trajectory.Parser;
public class TrajectoryPlanParser : TrajectoryParser
{
- protected override string SheetName => "Плановая траектория";
-
- protected override string TemplateFileName => "TrajectoryPlanTemplate.xlsx";
-
- protected override IDictionary Cells => new Dictionary
- {
- { nameof(TrajectoryGeoPlanDto.WellboreDepth), new Cell(1, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.ZenithAngle), new Cell(2, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.AzimuthGeo), new Cell(3, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.AzimuthMagnetic), new Cell(4, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.VerticalDepth), new Cell(5, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.Radius), new Cell(6, typeof(double)) },
- { nameof(TrajectoryGeoPlanDto.Comment), new Cell(7, typeof(string)) }
- };
+ protected override ITemplateParameters TemplateParameters => new TrajectoryPlanTemplate();
}
\ No newline at end of file
diff --git a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
index 8b9bd3e9..1acd0ad7 100644
--- a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
+++ b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
@@ -1,7 +1,6 @@
using System.Linq;
using AsbCloudApp.Data.Trajectory;
using AsbCloudApp.Requests.ParserOptions;
-using AsbCloudInfrastructure.Services.Parser;
using AsbCloudInfrastructure.Services.Trajectory.Parser;
using Xunit;