forked from ddrilling/AsbCloudServer
Оптимизация получения элементов Wits
This commit is contained in:
parent
979ed91e78
commit
a91d4888e6
@ -12,6 +12,7 @@ using System.Diagnostics;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using AsbCloudApp.Exceptions;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
{
|
{
|
||||||
public class GtrWitsRepository : IGtrRepository
|
public class GtrWitsRepository : IGtrRepository
|
||||||
{
|
{
|
||||||
private static IDictionary<(int, int), string> WitsParameters = new Dictionary<(int, int), string>
|
private static IDictionary<(int IdRecord, int IdItem), string> WitsParameters = new Dictionary<(int, int), string>
|
||||||
{
|
{
|
||||||
{ (1, 8), nameof(GtrWitsDto.DEPTBITM) },
|
{ (1, 8), nameof(GtrWitsDto.DEPTBITM) },
|
||||||
{ (1, 10), nameof(GtrWitsDto.DEPTMEAS) },
|
{ (1, 10), nameof(GtrWitsDto.DEPTMEAS) },
|
||||||
@ -90,8 +91,10 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
if (telemetry is null)
|
if (telemetry is null)
|
||||||
return Enumerable.Empty<GtrWitsDto>();
|
return Enumerable.Empty<GtrWitsDto>();
|
||||||
|
|
||||||
var timezone = telemetryService.GetTimezone(telemetry.Id);
|
if (telemetry.TimeZone is null)
|
||||||
var timezoneOffset = TimeSpan.FromHours(timezone.Hours);
|
throw new ArgumentInvalidException(nameof(idWell),$"Telemetry id: {telemetry.Id} can't find timezone");
|
||||||
|
|
||||||
|
var timezoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours);
|
||||||
|
|
||||||
var query = BuildQuery<TEntity, TType>(telemetry.Id, request);
|
var query = BuildQuery<TEntity, TType>(telemetry.Id, request);
|
||||||
|
|
||||||
@ -100,7 +103,10 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
|
|
||||||
var interval = TimeSpan.FromSeconds(10);
|
var interval = TimeSpan.FromSeconds(10);
|
||||||
|
|
||||||
|
var idsRecord = WitsParameters.Select(p => p.Key.IdRecord);
|
||||||
|
|
||||||
var entities = await query
|
var entities = await query
|
||||||
|
.Where(e => idsRecord.Contains(e.IdRecord))
|
||||||
.OrderBy(e => e.DateTime)
|
.OrderBy(e => e.DateTime)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.ToArrayAsync(token);
|
.ToArrayAsync(token);
|
||||||
|
Loading…
Reference in New Issue
Block a user