часть исправлений после код ревью

This commit is contained in:
eugeniy_ivanov 2022-11-02 15:49:07 +05:00
parent f07b1535d2
commit 0880c3b75c
3 changed files with 25 additions and 23 deletions

View File

@ -14,7 +14,7 @@ namespace AsbCloudApp.Data.Subsystems
/// <summary> /// <summary>
/// Наработки подсистем /// Наработки подсистем
/// </summary> /// </summary>
public List<SubsystemStatDto> listSubsystemStat { get; set; } public IEnumerable<SubsystemStatDto> listSubsystemStat { get; set; }
} }
} }

View File

@ -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 listWell = await wellService.GetWellsByCompanyAsync(idCompany, token);
var active = listWell.Where(w => w.IdState == 1); var active = listWell.Where(w => w.IdState == 1);
return active; return active;
} }
public async Task<IEnumerable<SubsystemActiveWellStatDto>?> GetStatByActiveWell(int idCompany, DateTime? gtDate, DateTime? ltDate, CancellationToken token) 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 telemetryIds = activeWell.Select(w => w.IdTelemetry).Distinct();
var query = db.SubsystemOperationTimes var query = db.SubsystemOperationTimes
.Where(o => telemetryIds.Contains(o.IdTelemetry)) .Where(o => telemetryIds.Contains(o.IdTelemetry))
.AsNoTracking(); .AsNoTracking();
if (query is null)
{
return null;
}
DateTime today = DateTime.Today; DateTime today = DateTime.Today;
if (!gtDate.HasValue) if (!gtDate.HasValue)
{ {
@ -222,9 +219,13 @@ namespace AsbCloudInfrastructure.Services.Subsystems
ltDate = today.AddDays(-1); ltDate = today.AddDays(-1);
} }
query = query.Where(o => o.DateEnd <= ltDate.Value.ToUniversalTime()); query = query.Where(o => o.DateEnd <= ltDate.Value.ToUniversalTime());
var result = new List<SubsystemActiveWellStatDto>(); var result = new List<SubsystemActiveWellStatDto>();
var subsystemsOperationTime = query.ToList(); if (query is null)
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry).ToList(); {
return null;
}
var subsystemsOperationTime = await query.ToListAsync(token);
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry);
foreach (var group in groupingSubsystemsOperationTime) foreach (var group in groupingSubsystemsOperationTime)
{ {
@ -246,13 +247,13 @@ namespace AsbCloudInfrastructure.Services.Subsystems
if (detectedOperations is not null && detectedOperations.Any()) if (detectedOperations is not null && detectedOperations.Any())
{ {
var depthInterval = GetDepthInterval(detectedOperations); var depthInterval = GetDepthInterval(detectedOperations);
var groupSubsystem = group.GroupBy(g => g.IdSubsystem).ToList(); var groupSubsystem = group.GroupBy(g => g.IdSubsystem);
foreach (var subsystem in groupSubsystem) foreach (var subsystem in groupSubsystem)
{ {
var dto = subsystem.Select(s => s.Adapt<SubsystemOperationTimeDto>()); var dto = subsystem.Select(s => s.Adapt<SubsystemOperationTimeDto>());
var subsystemStat = CalcStat(dto, depthInterval); var subsystemStat = CalcStat(dto, depthInterval);
wellStat.listSubsystemStat.AddRange(subsystemStat); wellStat.listSubsystemStat.Concat(subsystemStat);
} }
result.Add(wellStat); result.Add(wellStat);
} }

View File

@ -49,18 +49,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems
/// <summary> /// <summary>
/// получить статистику по активным скважинам /// получить статистику по активным скважинам
/// </summary> /// </summary>
/// <param name="GtDate"> Больше или равно дате </param>
/// <param name="LtDate"> Меньше или равно дате </param>
/// <param name="token"> Токен </param>
/// <returns> </returns>
[HttpGet("statByActiveWell")] [HttpGet("statByActiveWell")]
[ProducesResponseType(typeof(IEnumerable<SubsystemStatDto>), (int)System.Net.HttpStatusCode.OK)] [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(); var idCompany = User.GetCompanyId();
if (idCompany.HasValue) if (!idCompany.HasValue)
{ return Forbid();
var subsystemResult = await subsystemOperationTimeService.GetStatByActiveWell(idCompany.Value, GtDate, LtDate, token); var subsystemResult = await subsystemOperationTimeService.GetStatByActiveWell(idCompany.Value, GtDate, LtDate, token);
return Ok(subsystemResult); return Ok(subsystemResult);
}
return Forbid();
} }
/// <summary> /// <summary>