forked from ddrilling/AsbCloudServer
внесение правок согласно код-ревью
This commit is contained in:
parent
494fd2a107
commit
bcdfb1933e
@ -15,6 +15,22 @@ namespace AsbCloudApp.Data.Subsystems
|
|||||||
/// Наработки подсистем
|
/// Наработки подсистем
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<SubsystemStatDto> listSubsystemStat { get; set; }
|
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;
|
||||||
using AsbCloudApp.Data.DetectedOperation;
|
using AsbCloudApp.Data.DetectedOperation;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@ -39,6 +40,16 @@ namespace AsbCloudApp.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<IEnumerable<DetectedOperationDto>?> GetOperationsAsync(DetectedOperationRequest request, CancellationToken token);
|
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>
|
||||||
/// Удалить операции
|
/// Удалить операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -84,6 +84,25 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
|||||||
return dtos;
|
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)
|
private static IEnumerable<DetectedOperationDrillersStatDto> GetOperationsDrillersStat(IEnumerable<DetectedOperationDto> operations)
|
||||||
{
|
{
|
||||||
var groups = operations.GroupBy(o => o.Driller);
|
var groups = operations.GroupBy(o => o.Driller);
|
||||||
|
@ -183,15 +183,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
|||||||
return depthIntervalSubsystem;
|
return depthIntervalSubsystem;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO:
|
|
||||||
// скорее всего нужно доработать wellService - первое это метод
|
|
||||||
// GetWellsByCompanyAsync (получать сразу активные скважины ,а не вытягивать сначала все)
|
|
||||||
// второе - метод GetOperationsAsync - по умолчанию если не указан
|
|
||||||
// ИД скважины он заполняется как 0 , в нашем случае нужно получить опред операции по ВСЕМ
|
|
||||||
// скважинам
|
|
||||||
|
|
||||||
|
|
||||||
private async Task<IEnumerable<WellDto>> GetActiveWellByCompany(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);
|
||||||
@ -207,39 +199,35 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
|||||||
var firstWell = activeWell.FirstOrDefault();
|
var firstWell = activeWell.FirstOrDefault();
|
||||||
if (firstWell == null)
|
if (firstWell == null)
|
||||||
return 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
|
var query = db.SubsystemOperationTimes
|
||||||
.Where(o => telemetryIds.Contains(o.IdTelemetry))
|
.Where(o => telemetryIds.Contains(o.IdTelemetry))
|
||||||
.AsNoTracking();
|
.AsNoTracking();
|
||||||
|
|
||||||
if (gtDate is not null)
|
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(d => d.DateStart >= beginUTC);
|
||||||
}
|
}
|
||||||
//query = query.Where(o => o.DateStart >= DateTime.Today.ToUtcDateTimeOffset(_well.Timezone.Hours));
|
else
|
||||||
|
|
||||||
if (ltDate is not null)
|
|
||||||
{
|
{
|
||||||
var endUTC = ExtractDate(ltDate.Value);
|
var beginUTC = DateTime.Today.AddDays(-1).ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||||
|
query = query.Where(o => o.DateStart >= beginUTC );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ltDate is not null)
|
||||||
|
{
|
||||||
|
var endUTC = ltDate.Value.ToUtcDateTimeOffset(firstWell.Timezone.Hours);
|
||||||
query = query.Where(d => d.DateEnd <= endUTC);
|
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>();
|
var result = new List<SubsystemActiveWellStatDto>();
|
||||||
if (query is null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var subsystemsOperationTime = await query.ToListAsync(token);
|
var subsystemsOperationTime = await query.ToListAsync(token);
|
||||||
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry);
|
var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry);
|
||||||
|
|
||||||
@ -272,7 +260,9 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
|||||||
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.Concat(subsystemStat);
|
wellStat.listSubsystemStat.Concat(subsystemStat);
|
||||||
|
//wellStat.Saub = subsystemStat.FirstOrDefault(s=>s.IdSubsystem == idSubsystemSaub)
|
||||||
}
|
}
|
||||||
|
|
||||||
result.Add(wellStat);
|
result.Add(wellStat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user