diff --git a/AsbCloudApp/Services/IProcessMapService.cs b/AsbCloudApp/Services/IProcessMapService.cs
index 3d2eeff4..4a8be8e2 100644
--- a/AsbCloudApp/Services/IProcessMapService.cs
+++ b/AsbCloudApp/Services/IProcessMapService.cs
@@ -1,4 +1,5 @@
-using AsbCloudApp.Data.ProcessMap;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.ProcessMap;
using System.Collections.Generic;
using System.IO;
using System.Threading;
@@ -19,6 +20,14 @@ namespace AsbCloudApp.Services
///
///
Task> GetProcessMapAsync(int idWell, CancellationToken token);
+
+ ///
+ /// Получение РТК по композитной скважине
+ ///
+ ///
+ ///
+ ///
+ Task> GetCompositeData(int idWell, CancellationToken token);
}
#nullable disable
}
diff --git a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs
index 2b932368..5269199d 100644
--- a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs
+++ b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs
@@ -26,6 +26,7 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
private readonly ITelemetryDataSaubService telemetryDataSaubService;
private readonly ILimitingParameterRepository limitingParameterRepository;
private readonly ISubsystemOperationTimeService subsystemOperationTimeService;
+ private readonly IWellCompositeRepository wellCompositeRepository;
public ProcessMapService(
IWellService wellService,
@@ -33,7 +34,8 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
IProcessMapRepository processMapRepository,
ITelemetryDataSaubService telemetryDataSaubService,
ILimitingParameterRepository limitingParameterRepository,
- ISubsystemOperationTimeService subsystemOperationTimeService)
+ ISubsystemOperationTimeService subsystemOperationTimeService,
+ IWellCompositeRepository wellCompositeRepository)
{
this.wellService = wellService;
this.wellOperationRepository = wellOperationService;
@@ -41,6 +43,7 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
this.telemetryDataSaubService = telemetryDataSaubService;
this.limitingParameterRepository = limitingParameterRepository;
this.subsystemOperationTimeService = subsystemOperationTimeService;
+ this.wellCompositeRepository = wellCompositeRepository;
}
public async Task> GetProcessMapAsync(int idWell, CancellationToken token)
@@ -68,6 +71,48 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
return result;
}
+ public async Task> GetCompositeData(int idWell, CancellationToken token)
+ {
+ var result = new List();
+
+ var dtos = await wellCompositeRepository.GetAsync(idWell, token);
+ foreach (var dto in dtos)
+ {
+ var processMaps = (await processMapRepository.GetByIdWellAsync(dto.IdWellSrc, token))!.
+ Where(x => x.IdWellSectionType == dto.IdWellSectionType).
+ Select(x => new ProcessMapDto {
+ IdWell = dto.IdWell,
+ IdWellSectionType = dto.IdWellSectionType,
+ RopPlan = x.RopPlan,
+ DepthStart = x.DepthStart,
+ DepthEnd = x.DepthEnd,
+ AxialLoad = new PlanFactDto
+ {
+ Plan = x.AxialLoad.Fact ?? 0
+ },
+ Flow = new PlanFactDto
+ {
+ Plan = x.Flow.Fact ?? 0
+ },
+ Pressure = new PlanFactDto
+ {
+ Plan = x.Pressure.Fact ?? 0
+ },
+ TopDriveSpeed = new PlanFactDto
+ {
+ Plan = x.TopDriveSpeed.Fact ?? 0
+ },
+ TopDriveTorque = new PlanFactDto
+ {
+ Plan = x.TopDriveTorque.Fact ?? 0
+ },
+ LastUpdate = DateTime.UtcNow
+ });
+ result.AddRange(processMaps);
+ }
+ return result;
+ }
+
private Task?> GetOperationTimeAsync(int idWell, CancellationToken token)
{
var request = new SubsystemOperationTimeRequest
diff --git a/AsbCloudWebApi/Controllers/WellCompositeController.cs b/AsbCloudWebApi/Controllers/WellCompositeController.cs
index c6f5c9cf..dbdd12a7 100644
--- a/AsbCloudWebApi/Controllers/WellCompositeController.cs
+++ b/AsbCloudWebApi/Controllers/WellCompositeController.cs
@@ -1,4 +1,5 @@
using AsbCloudApp.Data;
+using AsbCloudApp.Data.ProcessMap;
using AsbCloudApp.Repositories;
using AsbCloudApp.Services;
using Microsoft.AspNetCore.Authorization;
@@ -20,11 +21,15 @@ namespace AsbCloudWebApi.Controllers
{
private readonly IWellCompositeRepository wellCompositeRepository;
private readonly IWellService wellService;
+ private readonly IProcessMapService processMapService;
- public WellCompositeController(IWellCompositeRepository wellCompositeRepository, IWellService wellService)
+ public WellCompositeController(IWellCompositeRepository wellCompositeRepository,
+ IWellService wellService,
+ IProcessMapService processMapService)
{
this.wellCompositeRepository = wellCompositeRepository;
this.wellService = wellService;
+ this.processMapService = processMapService;
}
///
@@ -63,6 +68,15 @@ namespace AsbCloudWebApi.Controllers
return Ok(result);
}
+ [HttpGet("getCompositeData")]
+ [Permission]
+ [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
+ public async Task GetCompositeData(int idWell, CancellationToken token = default)
+ {
+ var result = await processMapService.GetCompositeData(idWell, token).ConfigureAwait(false);
+ return Ok(result);
+ }
+
private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token = default)
{
int? idCompany = User.GetCompanyId();