forked from ddrilling/AsbCloudServer
внесение правок согласно код-ревью
This commit is contained in:
parent
494fd2a107
commit
bcdfb1933e
@ -15,6 +15,22 @@ namespace AsbCloudApp.Data.Subsystems
|
||||
/// Наработки подсистем
|
||||
/// </summary>
|
||||
public IEnumerable<SubsystemStatDto> listSubsystemStat { get; set; }
|
||||
/// <summary>
|
||||
/// Наработки подсистемы АКБ
|
||||
/// </summary>
|
||||
public SubsystemStatDto SubsystemAKB { get; set; }
|
||||
/// <summary>
|
||||
/// Наработки подсистемы МСЕ
|
||||
/// </summary>
|
||||
public SubsystemStatDto SubsystemMSE { get; set; }
|
||||
/// <summary>
|
||||
/// Наработки подсистемы СПИН
|
||||
/// </summary>
|
||||
public SubsystemStatDto SubsystemSpinMaster { get; set; }
|
||||
/// <summary>
|
||||
/// Наработки подсистемы ТОРК
|
||||
/// </summary>
|
||||
public SubsystemStatDto SubsystemTorqueMaster { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Data.DetectedOperation;
|
||||
using AsbCloudApp.Requests;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
@ -39,6 +40,16 @@ namespace AsbCloudApp.Services
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<DetectedOperationDto>?> GetOperationsAsync(DetectedOperationRequest request, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить операции
|
||||
/// </summary>
|
||||
/// <param name="gtDate"></param>
|
||||
/// <param name="ltDate"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <param name="wellTimezoneHours"></param>
|
||||
/// <returns>кортеж - ид телеметрии, интервалы глубины забоя </returns>
|
||||
Task<IEnumerable<(int, double, double)>?> GetDepthIntervalAllOperationsAsync(DateTime gtDate, DateTime ltDate, double wellTimezoneHours, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить операции
|
||||
/// </summary>
|
||||
|
@ -84,6 +84,25 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
||||
return dtos;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<(int, double, double)>?> GetDepthIntervalAllOperationsAsync(DateTime gtDate, DateTime ltDate, double wellTimezoneHours ,CancellationToken token)
|
||||
{
|
||||
var query = db.Set<DetectedOperation>()
|
||||
.Include(o => o.OperationCategory)
|
||||
.Where(o => o.DateStart >= gtDate.ToUtcDateTimeOffset(wellTimezoneHours))
|
||||
.Where(o => o.DateEnd <= ltDate.ToUtcDateTimeOffset(wellTimezoneHours));
|
||||
if (query is null)
|
||||
return null;
|
||||
var data = await query.ToListAsync(token);
|
||||
var result = data.GroupBy(g => g.IdTelemetry)
|
||||
.Select(g =>
|
||||
(
|
||||
g.Key,
|
||||
g.Where(o => o.IdCategory == 1).Sum(o => o.DepthEnd - o.DepthStart),
|
||||
g.Where(o => o.IdCategory == 3).Sum(o => o.DepthEnd - o.DepthStart)
|
||||
));
|
||||
return result;
|
||||
}
|
||||
|
||||
private static IEnumerable<DetectedOperationDrillersStatDto> GetOperationsDrillersStat(IEnumerable<DetectedOperationDto> operations)
|
||||
{
|
||||
var groups = operations.GroupBy(o => o.Driller);
|
||||
|
@ -184,14 +184,6 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
|
||||
}
|
||||
|
||||
//TODO:
|
||||
// скорее всего нужно доработать wellService - первое это метод
|
||||
// GetWellsByCompanyAsync (получать сразу активные скважины ,а не вытягивать сначала все)
|
||||
// второе - метод GetOperationsAsync - по умолчанию если не указан
|
||||
// ИД скважины он заполняется как 0 , в нашем случае нужно получить опред операции по ВСЕМ
|
||||
// скважинам
|
||||
|
||||
|
||||
private async Task<IEnumerable<WellDto>> GetActiveWellByCompany(int idCompany, CancellationToken token)
|
||||
{
|
||||
var listWell = await wellService.GetWellsByCompanyAsync(idCompany, token);
|
||||
@ -207,15 +199,6 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
var firstWell = activeWell.FirstOrDefault();
|
||||
if (firstWell == null)
|
||||
return null;
|
||||
var _well = wellService.GetOrDefault(firstWell.Id);
|
||||
if (_well is null || _well.Timezone is null)
|
||||
return null;
|
||||
DateTimeOffset ExtractDate(DateTime dateTime)
|
||||
{
|
||||
var dateTimeOffset = dateTime.ToUtcDateTimeOffset(_well!.Timezone.Hours);
|
||||
var date = new DateTimeOffset(dateTimeOffset.Year, dateTimeOffset.Month, dateTimeOffset.Day, 0, 0, 0, TimeSpan.Zero);
|
||||
return date;
|
||||
}
|
||||
|
||||
var query = db.SubsystemOperationTimes
|
||||
.Where(o => telemetryIds.Contains(o.IdTelemetry))
|
||||
@ -223,23 +206,28 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
|
||||
if (gtDate is not null)
|
||||
{
|
||||
var beginUTC = ExtractDate(gtDate.Value);
|
||||
var beginUTC = gtDate.Value.ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||
query = query.Where(d => d.DateStart >= beginUTC);
|
||||
}
|
||||
//query = query.Where(o => o.DateStart >= DateTime.Today.ToUtcDateTimeOffset(_well.Timezone.Hours));
|
||||
else
|
||||
{
|
||||
var beginUTC = DateTime.Today.AddDays(-1).ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||
query = query.Where(o => o.DateStart >= beginUTC );
|
||||
}
|
||||
|
||||
if (ltDate is not null)
|
||||
{
|
||||
var endUTC = ExtractDate(ltDate.Value);
|
||||
var endUTC = ltDate.Value.ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||
query = query.Where(d => d.DateEnd <= endUTC);
|
||||
}
|
||||
//query = query.Where(o => o.DateEnd <= DateTime.Today.AddDays(-1).ToUtcDateTimeOffset(_well.Timezone.Hours));
|
||||
else
|
||||
{
|
||||
var endUTC = DateTime.Today.ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||
query = query.Where(o => o.DateEnd <= endUTC);
|
||||
}
|
||||
|
||||
var result = new List<SubsystemActiveWellStatDto>();
|
||||
if (query is null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var subsystemsOperationTime = await query.ToListAsync(token);
|
||||
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry);
|
||||
|
||||
@ -272,7 +260,9 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
var dto = subsystem.Select(s => s.Adapt<SubsystemOperationTimeDto>());
|
||||
var subsystemStat = CalcStat(dto, depthInterval);
|
||||
wellStat.listSubsystemStat.Concat(subsystemStat);
|
||||
//wellStat.Saub = subsystemStat.FirstOrDefault(s=>s.IdSubsystem == idSubsystemSaub)
|
||||
}
|
||||
|
||||
result.Add(wellStat);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user