forked from ddrilling/AsbCloudServer
часть исправлений после код ревью
This commit is contained in:
parent
f07b1535d2
commit
0880c3b75c
@ -14,7 +14,7 @@ namespace AsbCloudApp.Data.Subsystems
|
||||
/// <summary>
|
||||
/// Наработки подсистем
|
||||
/// </summary>
|
||||
public List<SubsystemStatDto> listSubsystemStat { get; set; }
|
||||
public IEnumerable<SubsystemStatDto> listSubsystemStat { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -192,24 +192,21 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
// скважинам
|
||||
|
||||
|
||||
private async Task<IEnumerable<WellDto>> GetSubsystemOperationTimeAll(int idCompany, CancellationToken token)
|
||||
private async Task<IEnumerable<WellDto>> 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<IEnumerable<SubsystemActiveWellStatDto>?> 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<SubsystemActiveWellStatDto>();
|
||||
var subsystemsOperationTime = query.ToList();
|
||||
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry).ToList();
|
||||
var result = new List<SubsystemActiveWellStatDto>();
|
||||
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<SubsystemOperationTimeDto>());
|
||||
var subsystemStat = CalcStat(dto, depthInterval);
|
||||
wellStat.listSubsystemStat.AddRange(subsystemStat);
|
||||
wellStat.listSubsystemStat.Concat(subsystemStat);
|
||||
}
|
||||
result.Add(wellStat);
|
||||
}
|
||||
|
@ -49,18 +49,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
/// <summary>
|
||||
/// получить статистику по активным скважинам
|
||||
/// </summary>
|
||||
/// <param name="GtDate"> Больше или равно дате </param>
|
||||
/// <param name="LtDate"> Меньше или равно дате </param>
|
||||
/// <param name="token"> Токен </param>
|
||||
/// <returns> </returns>
|
||||
[HttpGet("statByActiveWell")]
|
||||
[ProducesResponseType(typeof(IEnumerable<SubsystemStatDto>), (int)System.Net.HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetStatByWellAsync([FromQuery] DateTime? GtDate, DateTime? LtDate, CancellationToken token = default)
|
||||
public async Task<IActionResult> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user