diff --git a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
index f940bfb1..fd3c1054 100644
--- a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
+++ b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
@@ -14,7 +14,7 @@ namespace AsbCloudApp.Data.Subsystems
///
/// Наработки подсистем
///
- public List listSubsystemStat { get; set; }
+ public IEnumerable listSubsystemStat { get; set; }
}
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
index 9add54b0..65c68188 100644
--- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
+++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
@@ -192,24 +192,21 @@ namespace AsbCloudInfrastructure.Services.Subsystems
// скважинам
- private async Task> GetSubsystemOperationTimeAll(int idCompany, CancellationToken token)
+ private async Task> GetActiveWellByCompany(int idCompany, CancellationToken token)
{
var listWell = await wellService.GetWellsByCompanyAsync(idCompany, token);
var active = listWell.Where(w => w.IdState == 1);
return active;
- }
+ }
+
+
public async Task?> GetStatByActiveWell(int idCompany, DateTime? gtDate, DateTime? ltDate, CancellationToken token)
{
- var activeWell = await GetSubsystemOperationTimeAll(idCompany, token);
+ var activeWell = await GetActiveWellByCompany(idCompany, token);
var telemetryIds = activeWell.Select(w => w.IdTelemetry).Distinct();
var query = db.SubsystemOperationTimes
.Where(o => telemetryIds.Contains(o.IdTelemetry))
- .AsNoTracking();
-
- if (query is null)
- {
- return null;
- }
+ .AsNoTracking();
DateTime today = DateTime.Today;
if (!gtDate.HasValue)
{
@@ -222,9 +219,13 @@ namespace AsbCloudInfrastructure.Services.Subsystems
ltDate = today.AddDays(-1);
}
query = query.Where(o => o.DateEnd <= ltDate.Value.ToUniversalTime());
- var result = new List();
- var subsystemsOperationTime = query.ToList();
- var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry).ToList();
+ var result = new List();
+ if (query is null)
+ {
+ return null;
+ }
+ var subsystemsOperationTime = await query.ToListAsync(token);
+ var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry);
foreach (var group in groupingSubsystemsOperationTime)
{
@@ -246,13 +247,13 @@ namespace AsbCloudInfrastructure.Services.Subsystems
if (detectedOperations is not null && detectedOperations.Any())
{
var depthInterval = GetDepthInterval(detectedOperations);
- var groupSubsystem = group.GroupBy(g => g.IdSubsystem).ToList();
+ var groupSubsystem = group.GroupBy(g => g.IdSubsystem);
foreach (var subsystem in groupSubsystem)
{
var dto = subsystem.Select(s => s.Adapt());
var subsystemStat = CalcStat(dto, depthInterval);
- wellStat.listSubsystemStat.AddRange(subsystemStat);
+ wellStat.listSubsystemStat.Concat(subsystemStat);
}
result.Add(wellStat);
}
diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs
index 55b3b26b..7790472f 100644
--- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs
+++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs
@@ -49,18 +49,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems
///
/// получить статистику по активным скважинам
///
+ /// Больше или равно дате
+ /// Меньше или равно дате
+ /// Токен
+ ///
[HttpGet("statByActiveWell")]
[ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
- public async Task GetStatByWellAsync([FromQuery] DateTime? GtDate, DateTime? LtDate, CancellationToken token = default)
+ public async Task GetStatByWellAsync(DateTime? GtDate, DateTime? LtDate, CancellationToken token = default)
{
var idCompany = User.GetCompanyId();
- if (idCompany.HasValue)
- {
- var subsystemResult = await subsystemOperationTimeService.GetStatByActiveWell(idCompany.Value, GtDate, LtDate, token);
- return Ok(subsystemResult);
- }
- return Forbid();
-
+ if (!idCompany.HasValue)
+ return Forbid();
+ var subsystemResult = await subsystemOperationTimeService.GetStatByActiveWell(idCompany.Value, GtDate, LtDate, token);
+ return Ok(subsystemResult);
}
///