forked from ddrilling/AsbCloudServer
Синхронное получение диапазона дат операций
This commit is contained in:
parent
16645d053a
commit
e9386b5897
@ -76,6 +76,14 @@ namespace AsbCloudApp.Repositories
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SectionByOperationsDto>> GetSectionsAsync(IEnumerable<int> idsWells, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат выполнения операций
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="idType"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto? GetDatesRange(int idWell, int idType);
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат выполнения операций
|
||||
/// </summary>
|
||||
|
@ -47,7 +47,7 @@ public class WellOperationRepository : CrudRepositoryBase<WellOperationDto, Well
|
||||
var entities = await BuildQuery(request)
|
||||
.AsNoTracking()
|
||||
.ToArrayAsync(token);
|
||||
|
||||
|
||||
var dtos = entities.Select(Convert);
|
||||
|
||||
return dtos;
|
||||
@ -198,7 +198,7 @@ public class WellOperationRepository : CrudRepositoryBase<WellOperationDto, Well
|
||||
CategoryInfo = o.CategoryInfo,
|
||||
Comment = o.Comment,
|
||||
IdUser = o.IdUser,
|
||||
|
||||
|
||||
NptHours = currentWellOperations
|
||||
.Where(e => e.IdType == 1 && e.IdWell == o.IdWell)
|
||||
.Where(e => WellOperationCategory.NonProductiveTimeSubIds.Contains(e.IdCategory))
|
||||
@ -314,6 +314,23 @@ public class WellOperationRepository : CrudRepositoryBase<WellOperationDto, Well
|
||||
return sections;
|
||||
}
|
||||
|
||||
public DatesRangeDto? GetDatesRange(int idWell, int idType)
|
||||
{
|
||||
var query = dbContext.WellOperations.Where(o => o.IdWell == idWell && o.IdType == idType);
|
||||
|
||||
if (!query.Any())
|
||||
return null;
|
||||
|
||||
var minDate = query.Min(o => o.DateStart);
|
||||
var maxDate = query.Max(o => o.DateStart);
|
||||
|
||||
return new DatesRangeDto
|
||||
{
|
||||
From = minDate.ToOffset(minDate.Offset),
|
||||
To = maxDate.ToOffset(minDate.Offset)
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<DatesRangeDto?> GetDatesRangeAsync(int idWell, int idType, CancellationToken cancellationToken)
|
||||
{
|
||||
var query = dbContext.WellOperations.Where(o => o.IdWell == idWell && o.IdType == idType);
|
||||
@ -344,7 +361,6 @@ public class WellOperationRepository : CrudRepositoryBase<WellOperationDto, Well
|
||||
//TODO: пока такое получение TimeZone скважины, нужно исправить на Lazy
|
||||
//Хоть мы и тянем данные из кэша, но от получения TimeZone в этом методе нужно избавиться, пока так
|
||||
var timeZoneOffset = wellService.GetTimezone(src.IdWell).Offset;
|
||||
|
||||
var dto = src.Adapt<WellOperationDto>();
|
||||
dto.DateStart = src.DateStart.ToOffset(timeZoneOffset);
|
||||
dto.LastUpdateDate = src.LastUpdateDate?.ToOffset(timeZoneOffset);
|
||||
|
@ -272,9 +272,8 @@ namespace AsbCloudInfrastructure.Services
|
||||
|
||||
if (entity.Timezone is null)
|
||||
dto.Timezone = GetTimezone(entity.Id);
|
||||
|
||||
//TODO: фикс
|
||||
//dto.StartDate = wellOperationRepository.GetDatesRangeAsync(entity.Id, ).FirstOperationDate(entity.Id)?.ToRemoteDateTime(dto.Timezone.Hours);
|
||||
|
||||
dto.StartDate = wellOperationRepository.GetDatesRange(entity.Id, WellOperation.IdOperationTypeFact)?.From.ToRemoteDateTime(dto.Timezone.Hours);
|
||||
dto.WellType = entity.WellType.Caption;
|
||||
dto.Cluster = entity.Cluster.Caption;
|
||||
dto.Deposit = entity.Cluster.Deposit.Caption;
|
||||
|
Loading…
Reference in New Issue
Block a user