forked from ddrilling/AsbCloudServer
Fixed WellDto creation in WellService (fixed LastTelemetryDate field)
This commit is contained in:
parent
d19a62c041
commit
5b82229a94
@ -16,8 +16,7 @@ namespace AsbCloudApp.Services
|
||||
int? GetIdTelemetryByIdWell(int idWell);
|
||||
int Merge(IEnumerable<int> telemetryIds);
|
||||
IEnumerable<(string Key, int[] Ids)> GetRedundentRemoteUids();
|
||||
Task<IEnumerable<WellDto>> GetTransmittingWellsAsync(int idCompany,
|
||||
CancellationToken token);
|
||||
IEnumerable<TelemetryDto> GetTransmittingTelemetriesAsync(int idCompany);
|
||||
DateTime GetLastTelemetryDate(string telemetryUid);
|
||||
DateTime GetLastTelemetryDate(int telemetryId);
|
||||
}
|
||||
|
@ -5,10 +5,7 @@ using AsbCloudInfrastructure.Services.Cache;
|
||||
using Mapster;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
@ -29,25 +26,18 @@ namespace AsbCloudInfrastructure.Services
|
||||
this.telemetryTracker = telemetryTracker;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WellDto>> GetTransmittingWellsAsync(int idCompany, CancellationToken token)
|
||||
public IEnumerable<TelemetryDto> GetTransmittingTelemetriesAsync(int idCompany)
|
||||
{
|
||||
var wells = new List<Well>();
|
||||
var telemetryDtos = new List<TelemetryDto>();
|
||||
IEnumerable<string> activeTelemetriesUids = telemetryTracker.GetTransmittingTelemetryUids();
|
||||
if (activeTelemetriesUids.Any())
|
||||
{
|
||||
wells = await db.GetWellsForCompany(idCompany)
|
||||
.Where(w => activeTelemetriesUids.Contains(w.Telemetry.RemoteUid))
|
||||
.AsNoTracking()
|
||||
.ToListAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
var telemetries = cacheTelemetry
|
||||
.Where(t => activeTelemetriesUids.Contains(t.RemoteUid));
|
||||
telemetryDtos = telemetries.Adapt<TelemetryDto>().ToList();
|
||||
}
|
||||
return wells.Select(w => new WellDto
|
||||
{
|
||||
Id = w.Id,
|
||||
Caption = w.Caption,
|
||||
Cluster = w.Cluster.Caption,
|
||||
Deposit = w.Cluster.Deposit.Caption,
|
||||
});
|
||||
|
||||
return telemetryDtos;
|
||||
}
|
||||
|
||||
public void SaveRequestDate(string uid) =>
|
||||
|
@ -29,30 +29,38 @@ namespace AsbCloudInfrastructure.Services
|
||||
|
||||
public DateTime GetLastTelemetryDate(int idWell)
|
||||
{
|
||||
var lastTelemetryDate = DateTime.MinValue;
|
||||
var defaultDate = DateTime.MinValue;
|
||||
var well = cacheWells.FirstOrDefault(w => w.Id == idWell);
|
||||
|
||||
if (well is null || well.IdTelemetry is null)
|
||||
return lastTelemetryDate;
|
||||
if (well?.IdTelemetry is null)
|
||||
return defaultDate;
|
||||
|
||||
lastTelemetryDate = telemetryService.GetLastTelemetryDate(well.IdTelemetry??0);
|
||||
return lastTelemetryDate;
|
||||
var lastTelemetry = db.TelemetryDataSaub
|
||||
.FirstOrDefault(t => t.Id == well.IdTelemetry);
|
||||
return lastTelemetry?.Date ?? defaultDate;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WellDto>> GetTransmittingWellsAsync(int idCompany,
|
||||
CancellationToken token) =>
|
||||
await telemetryService.GetTransmittingWellsAsync(idCompany, token);
|
||||
public async Task<IEnumerable<WellDto>> GetTransmittingWellsAsync(int idCompany,
|
||||
CancellationToken token)
|
||||
{
|
||||
var activeTelemetryIds = telemetryService.GetTransmittingTelemetriesAsync(idCompany)
|
||||
.Select(t => t.Id);
|
||||
|
||||
var wells = await (from w in db.GetWellsForCompany(idCompany)
|
||||
where w.IdTelemetry != null &&
|
||||
activeTelemetryIds.Contains((int)w.IdTelemetry)
|
||||
select w)
|
||||
.AsNoTracking()
|
||||
.ToListAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
return wells.Select(Convert);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WellDto>> GetWellsByCompanyAsync(int idCompany, CancellationToken token)
|
||||
{
|
||||
var wells = await db.GetWellsForCompany(idCompany).ToListAsync(token);
|
||||
return wells.Select(w => new WellDto
|
||||
{
|
||||
Id = w.Id,
|
||||
Caption = w.Caption,
|
||||
Cluster = w.Cluster.Caption,
|
||||
Deposit = w.Cluster.Deposit.Caption,
|
||||
});
|
||||
return wells.Select(Convert);
|
||||
}
|
||||
|
||||
public async Task<int?> UpdateWellAsync(int idWell, WellParamsDto dto,
|
||||
@ -97,20 +105,17 @@ namespace AsbCloudInfrastructure.Services
|
||||
.FirstOrDefaultAsync(w => w.Id == idWell, token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
var dto = entity.Adapt<WellDto>();
|
||||
|
||||
if (dto is null)
|
||||
return dto;
|
||||
if (entity is null)
|
||||
return null;
|
||||
|
||||
dto.Cluster = entity.Cluster?.Caption;
|
||||
dto.Deposit = entity.Cluster?.Deposit?.Caption;
|
||||
var dto = Convert(entity);
|
||||
|
||||
return dto;
|
||||
}
|
||||
public async Task<string> GetWellCaptionByIdAsync(int idWell, CancellationToken token)
|
||||
{
|
||||
var entity = await cacheWells.FirstOrDefaultAsync(w => w.Id == idWell, token).ConfigureAwait(false);
|
||||
var dto = entity.Adapt<WellDto>();
|
||||
var dto = Convert(entity);
|
||||
return dto.Caption;
|
||||
}
|
||||
|
||||
@ -134,5 +139,17 @@ namespace AsbCloudInfrastructure.Services
|
||||
_ => "Незвестно",
|
||||
};
|
||||
}
|
||||
|
||||
private WellDto Convert(Well well)
|
||||
{
|
||||
return new WellDto
|
||||
{
|
||||
Id = well.Id,
|
||||
Caption = well.Caption,
|
||||
Cluster = well.Cluster.Caption,
|
||||
Deposit = well.Cluster.Deposit.Caption,
|
||||
LastTelemetryDate = GetLastTelemetryDate(well.Id)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user