Промежуточная фиксация со структурой ответа

This commit is contained in:
Lyudmila Romanova 2022-06-10 11:55:01 +05:00
parent cf8c61c1a7
commit 42e2c57c1b
3 changed files with 52 additions and 3 deletions

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace AsbCloudApp.Data
{
/// <summary>
/// Автоматически определяемая операция
/// </summary>
public class DetectedOperationListDto
{
public IEnumerable<IGrouping<int, DetectedOperationDto>> test { get; set; }
/// <summary>
/// Список всех операций
/// </summary>
public IEnumerable<DetectedOperationDto> List { get; set; }
/// <summary>
/// Количество по
/// </summary>
public IDictionary<int,int> Count { get; set; }
/// <summary>
/// Среднее целевое
/// </summary>
public IDictionary<int,double> Average { get; set; }
/// <summary>
/// Коэффициент эффективности
/// </summary>
public IDictionary<int,double> Efficiency { get; set; }
/// <summary>
/// Среднее по ключевому показателю
/// </summary>
public IDictionary<int,double> AverageByParam { get; set; }
/// <summary>
/// Коэффициент потерь
/// </summary>
public IDictionary<int,double> Loss { get; set; }
}
}

View File

@ -9,7 +9,7 @@ namespace AsbCloudApp.Services
public interface IDetectedOperationService
{
Task<IEnumerable<WellOperationCategoryDto>> GetCategoriesAsync(CancellationToken token);
Task<IEnumerable<DetectedOperationDto>> GetAsync(int idWell, Requests.DetectedOperationRequest request, CancellationToken token);
Task<DetectedOperationListDto> GetAsync(int idWell, Requests.DetectedOperationRequest request, CancellationToken token);
Task<int> DeleteAsync(int idWell, DetectedOperationRequest request, CancellationToken token);
}
}

View File

@ -31,12 +31,13 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
this.scheduleService = scheduleService;
}
public async Task<IEnumerable<DetectedOperationDto>> GetAsync(int idWell, DetectedOperationRequest request, CancellationToken token)
public async Task<DetectedOperationListDto> GetAsync(int idWell, DetectedOperationRequest request, CancellationToken token)
{
var well = await wellService.GetAsync(idWell, token);
if (well?.IdTelemetry is null || well.Timezone is null)
return null;
var res = new DetectedOperationListDto();
var query = BuildQuery(well, request)
.AsNoTracking();
@ -50,7 +51,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
{
item.Driller = await scheduleService.GetDrillerAsync(idWell, item.DateStart);
}
return dtos;
res.List = dtos;
res.Count = dtos.GroupBy(o => o.Driller==null?0:o.Driller.Id,
p=>p,
(key,gr)=>(key,gr.Count())).ToDictionary(e=>e.key,e=>e.Item2);
//res.test = g;
return res;
}
public async Task<int> DeleteAsync(int idWell, DetectedOperationRequest request, CancellationToken token)