diff --git a/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs b/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs
new file mode 100644
index 00000000..46b0103f
--- /dev/null
+++ b/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Threading;
+using AsbCloudApp.Data.ProcessMaps;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+
+namespace AsbCloudApp.Repositories;
+
+///
+/// РТК план
+///
+public interface IProcessMapPlanRepository : IRepositoryWellRelated
+ where TDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Получить РТК по коллекции параметров
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(IEnumerable requests, CancellationToken cancellationToken);
+
+ ///
+ /// Удалить РТК по скважине
+ ///
+ ///
+ ///
+ ///
+ Task RemoveByWellAsync(int idWell, CancellationToken cancellationToken);
+}
diff --git a/AsbCloudApp/Repositories/IWellCompositeRepository.cs b/AsbCloudApp/Repositories/IWellCompositeRepository.cs
index 103337ac..5354a587 100644
--- a/AsbCloudApp/Repositories/IWellCompositeRepository.cs
+++ b/AsbCloudApp/Repositories/IWellCompositeRepository.cs
@@ -29,11 +29,11 @@ namespace AsbCloudApp.Repositories
Task SaveAsync(int idWell, IEnumerable wellComposites, CancellationToken token);
///
- /// Получение РТК бурение по композитной скважине
+ /// Получение РТК-план бурение по композитной скважине
///
///
///
///
- Task> GetCompositeProcessMap(int idWell, CancellationToken token);
+ Task> GetCompositeProcessMap(int idWell, CancellationToken token);
}
}
diff --git a/AsbCloudApp/Repositories/IWellDrillingProcessMapRepository.cs b/AsbCloudApp/Repositories/IWellDrillingProcessMapRepository.cs
deleted file mode 100644
index 105f24b3..00000000
--- a/AsbCloudApp/Repositories/IWellDrillingProcessMapRepository.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using AsbCloudApp.Data.ProcessMaps;
-using AsbCloudApp.Requests;
-using AsbCloudApp.Services;
-
-namespace AsbCloudApp.Repositories;
-
-///
-/// РТК бурение скважины
-///
-public interface IWellDrillingProcessMapRepository : IRepositoryWellRelated
-{
- ///
- /// Получить РТК бурение по параметрам
- ///
- ///
- ///
- ///
- Task> GetAsync(WellDrillingProcessMapRequest request, CancellationToken cancellationToken);
-
- ///
- /// Получить РТК бурение по коллекции параметров
- ///
- ///
- ///
- ///
- Task> GetAsync(IEnumerable requests, CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/IWellReamProcessMapRepository.cs b/AsbCloudApp/Repositories/IWellReamProcessMapRepository.cs
deleted file mode 100644
index dc1ac920..00000000
--- a/AsbCloudApp/Repositories/IWellReamProcessMapRepository.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using System.Threading;
-using AsbCloudApp.Data.ProcessMaps;
-using AsbCloudApp.Requests;
-using AsbCloudApp.Services;
-
-namespace AsbCloudApp.Repositories;
-
-///
-/// РТК проработки
-///
-public interface IWellReamProcessMapRepository : IRepositoryWellRelated
-{
- ///
- /// Получить РТК проработки по параметрам
- ///
- ///
- ///
- ///
- Task> GetAsync(WellReamProcessMapRequest request, CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/WellDrillingProcessMapRequest.cs b/AsbCloudApp/Requests/ProcessMapPlanRequest.cs
similarity index 80%
rename from AsbCloudApp/Requests/WellDrillingProcessMapRequest.cs
rename to AsbCloudApp/Requests/ProcessMapPlanRequest.cs
index 2c8eb150..b614b8c3 100644
--- a/AsbCloudApp/Requests/WellDrillingProcessMapRequest.cs
+++ b/AsbCloudApp/Requests/ProcessMapPlanRequest.cs
@@ -3,9 +3,9 @@
namespace AsbCloudApp.Requests;
///
-/// Запрос для получения РТК бурение
+/// Запрос для получения РТК план
///
-public class WellDrillingProcessMapRequest
+public class ProcessMapPlanRequest
{
///
/// Идентификатор скважины
diff --git a/AsbCloudApp/Requests/WellReamProcessMapRequest.cs b/AsbCloudApp/Requests/WellReamProcessMapRequest.cs
deleted file mode 100644
index 850feca8..00000000
--- a/AsbCloudApp/Requests/WellReamProcessMapRequest.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-
-namespace AsbCloudApp.Requests;
-
-///
-/// Запрос для получения РТК проработки
-///
-public class WellReamProcessMapRequest
-{
- ///
- /// Идентификатор скважины
- ///
- public int IdWell { get; set; }
-
- ///
- /// Дата обновления
- ///
- public DateTime? UpdateFrom { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/IRepositoryWellRelated.cs b/AsbCloudApp/Services/IRepositoryWellRelated.cs
index 84dd3d71..9c771657 100644
--- a/AsbCloudApp/Services/IRepositoryWellRelated.cs
+++ b/AsbCloudApp/Services/IRepositoryWellRelated.cs
@@ -21,14 +21,6 @@ namespace AsbCloudApp.Services
/// emptyList if nothing found
Task> GetByIdWellAsync(int idWell, CancellationToken token);
- ///
- /// Удалить записи связанных со скважиной
- ///
- ///
- ///
- ///
- Task RemoveByWellAsync(int idWell, CancellationToken cancellationToken);
-
///
/// Получение всех записей по нескольким скважинам
///
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index bf6b3564..9f3de68a 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -1,266 +1,308 @@
-using AsbCloudApp.Data;
+using System;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.Manuals;
+using AsbCloudApp.Data.ProcessMaps;
using AsbCloudApp.Data.SAUB;
using AsbCloudApp.Data.Subsystems;
+using AsbCloudApp.Data.WellOperationImport.Options;
using AsbCloudApp.Repositories;
using AsbCloudApp.Services;
+using AsbCloudApp.Services.AutoGeneratedDailyReports;
+using AsbCloudApp.Services.Notifications;
+using AsbCloudApp.Services.ProcessMaps;
+using AsbCloudApp.Services.ProcessMaps.WellDrillingProcessMap;
using AsbCloudApp.Services.Subsystems;
+using AsbCloudApp.Services.WellOperationImport;
using AsbCloudDb.Model;
+using AsbCloudDb.Model.Manuals;
+using AsbCloudDb.Model.ProcessMaps;
using AsbCloudDb.Model.Subsystems;
using AsbCloudInfrastructure.Background;
using AsbCloudInfrastructure.Repository;
using AsbCloudInfrastructure.Services;
+using AsbCloudInfrastructure.Services.AutoGeneratedDailyReports;
using AsbCloudInfrastructure.Services.DailyReport;
using AsbCloudInfrastructure.Services.DetectOperations;
using AsbCloudInfrastructure.Services.DrillingProgram;
+using AsbCloudInfrastructure.Services.ProcessMaps.WellDrillingProcessMap;
+using AsbCloudInfrastructure.Services.ProcessMaps.WellDrillingProcessMap.Report;
using AsbCloudInfrastructure.Services.SAUB;
using AsbCloudInfrastructure.Services.Subsystems;
using AsbCloudInfrastructure.Services.Trajectory;
+using AsbCloudInfrastructure.Services.WellOperationImport;
+using AsbCloudInfrastructure.Services.WellOperationImport.FileParser;
using AsbCloudInfrastructure.Services.WellOperationService;
using Mapster;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using System;
-using AsbCloudApp.Data.Manuals;
-using AsbCloudApp.Data.ProcessMaps;
-using AsbCloudApp.Services.AutoGeneratedDailyReports;
-using AsbCloudApp.Services.Notifications;
-using AsbCloudDb.Model.Manuals;
-using AsbCloudInfrastructure.Services.AutoGeneratedDailyReports;
-using AsbCloudApp.Services.WellOperationImport;
-using AsbCloudInfrastructure.Services.WellOperationImport;
-using AsbCloudApp.Data.WellOperationImport.Options;
-using AsbCloudInfrastructure.Services.WellOperationImport.FileParser;
-using AsbCloudApp.Services.ProcessMaps.WellDrillingProcessMap;
-using AsbCloudApp.Services.ProcessMaps;
-using AsbCloudInfrastructure.Services.ProcessMaps.WellDrillingProcessMap;
-using AsbCloudInfrastructure.Services.ProcessMaps.WellDrillingProcessMap.Report;
namespace AsbCloudInfrastructure
{
public static class DependencyInjection
{
- public static IAsbCloudDbContext MakeContext(string connectionString)
- {
- var options = new DbContextOptionsBuilder()
- .UseNpgsql(connectionString)
- .Options;
- var context = new AsbCloudDbContext(options);
- return context;
- }
+ public static IAsbCloudDbContext MakeContext(string connectionString)
+ {
+ var options = new DbContextOptionsBuilder()
+ .UseNpgsql(connectionString)
+ .Options;
+ var context = new AsbCloudDbContext(options);
+ return context;
+ }
- public static void MapsterSetup()
- {
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source.DateTime);
+ public static void MapsterSetup()
+ {
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source.DateTime);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source == default ? new DateTime(0, DateTimeKind.Utc) : source);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source == default ? new DateTime(0, DateTimeKind.Utc) : source);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source.MakeTimeOnly());
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source.MakeTimeOnly());
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => new(source));
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => new(source));
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => new(source));
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => new(source));
#pragma warning disable CS8603 // Possible null reference return.
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.Cluster,
- dst => dst.RelationCompaniesWells,
- dst => dst.Telemetry,
- dst => dst.WellComposites,
- dst => dst.WellCompositeSrcs,
- dst => dst.WellOperations,
- dst => dst.WellType);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.Cluster,
+ dst => dst.RelationCompaniesWells,
+ dst => dst.Telemetry,
+ dst => dst.WellComposites,
+ dst => dst.WellCompositeSrcs,
+ dst => dst.WellOperations,
+ dst => dst.WellType);
#pragma warning restore CS8603 // Possible null reference return.
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.Deposit,
- dst => dst.Wells);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.Deposit,
+ dst => dst.Wells);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType();
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType();
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType();
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType();
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.NotificationCategory,
- dst => dst.User);
- }
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.NotificationCategory,
+ dst => dst.User);
- public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
- {
- MapsterSetup();
- var connectionStringName = "DefaultConnection";
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Map(dest => dest.AxialLoad, src => new PlanLimitDto
+ {
+ LimitMax = src.AxialLoadLimitMax,
+ Plan = src.AxialLoadPlan
+ })
+ .Map(dest => dest.Flow, src => new PlanLimitDto
+ {
+ LimitMax = src.FlowLimitMax,
+ Plan = src.FlowPlan
+ })
+ .Map(dest => dest.Pressure, src => new PlanLimitDto
+ {
+ LimitMax = src.PressureLimitMax,
+ Plan = src.PressurePlan
+ })
+ .Map(dest => dest.TopDriveSpeed, src => new PlanLimitDto
+ {
+ LimitMax = src.TopDriveSpeedLimitMax,
+ Plan = src.TopDriveSpeedPlan
+ })
+ .Map(dest => dest.TopDriveTorque, src => new PlanLimitDto
+ {
+ LimitMax = src.TopDriveTorqueLimitMax,
+ Plan = src.TopDriveTorquePlan
+ });
+
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Map(dest => dest.AxialLoadPlan, src => src.AxialLoad.Plan)
+ .Map(dest => dest.AxialLoadLimitMax, src => src.AxialLoad.LimitMax)
+ .Map(dest => dest.FlowPlan, src => src.Flow.Plan)
+ .Map(dest => dest.FlowLimitMax, src => src.Flow.LimitMax)
+ .Map(dest => dest.PressurePlan, src => src.Pressure.Plan)
+ .Map(dest => dest.PressureLimitMax, src => src.Pressure.LimitMax)
+ .Map(dest => dest.TopDriveSpeedPlan, src => src.TopDriveSpeed.Plan)
+ .Map(dest => dest.TopDriveSpeedLimitMax, src => src.TopDriveSpeed.LimitMax)
+ .Map(dest => dest.TopDriveTorquePlan, src => src.TopDriveTorque.Plan)
+ .Map(dest => dest.TopDriveTorqueLimitMax, src => src.TopDriveTorque.LimitMax);
+ }
+
+ public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
+ {
+ MapsterSetup();
+ string connectionStringName = "DefaultConnection";
#if DEBUG
- connectionStringName = "DebugConnection";
+ connectionStringName = "DebugConnection";
#endif
- services.AddDbContext(options =>
- options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
-
+ services.AddDbContext(options =>
+ options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
- services.AddMemoryCache();
- services.AddScoped(provider => provider.GetRequiredService());
- services.AddSingleton(new WitsInfoService());
- services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
- services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
- services.AddSingleton();
- services.AddSingleton();
- services.AddSingleton();
- services.AddSingleton(provider => ReduceSamplingService.GetInstance(configuration));
+ services.AddMemoryCache();
+ services.AddScoped(provider => provider.GetRequiredService());
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient, CrudWellRelatedRepositoryBase>();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
+ services.AddSingleton(new WitsInfoService());
+ services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
+ services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton(provider => ReduceSamplingService.GetInstance(configuration));
- services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, ProcessMapPlanRepository>();
+ services.AddTransient, ProcessMapPlanRepository>();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, CrudWellRelatedRepositoryBase>();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
- services.AddTransient();
+ services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient();
- // admin crud services:
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(t => t.Well))); // может быть включен в сервис TelemetryService
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(d => d.Clusters)));
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(c => c.CompanyType)));
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet
- .Include(c => c.Wells)
- .Include(c => c.Deposit))); // может быть включен в сервис ClusterService
+ // admin crud services:
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(t => t.Well))); // может быть включен в сервис TelemetryService
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(d => d.Clusters)));
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(c => c.CompanyType)));
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet
+ .Include(c => c.Wells)
+ .Include(c => c.Deposit))); // может быть включен в сервис ClusterService
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>();
- // Subsystem service
- services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient, CrudCacheRepositoryBase>();
+ // Subsystem service
+ services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient();
- // TelemetryData services
- services.AddTransient();
- services.AddTransient, TelemetryDataSpinService>();
+ services.AddTransient, CrudCacheRepositoryBase>();
- // Wits
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
+ // TelemetryData services
+ services.AddTransient();
+ services.AddTransient, TelemetryDataSpinService>();
- services.AddTransient