forked from ddrilling/AsbCloudServer
Синхронное получение диапазона дат операций
This commit is contained in:
parent
16645d053a
commit
e9386b5897
@ -76,6 +76,14 @@ namespace AsbCloudApp.Repositories
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<IEnumerable<SectionByOperationsDto>> GetSectionsAsync(IEnumerable<int> idsWells, CancellationToken token);
|
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>
|
||||||
/// Получить диапазон дат выполнения операций
|
/// Получить диапазон дат выполнения операций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -314,6 +314,23 @@ public class WellOperationRepository : CrudRepositoryBase<WellOperationDto, Well
|
|||||||
return sections;
|
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)
|
public async Task<DatesRangeDto?> GetDatesRangeAsync(int idWell, int idType, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var query = dbContext.WellOperations.Where(o => o.IdWell == idWell && o.IdType == idType);
|
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
|
//TODO: пока такое получение TimeZone скважины, нужно исправить на Lazy
|
||||||
//Хоть мы и тянем данные из кэша, но от получения TimeZone в этом методе нужно избавиться, пока так
|
//Хоть мы и тянем данные из кэша, но от получения TimeZone в этом методе нужно избавиться, пока так
|
||||||
var timeZoneOffset = wellService.GetTimezone(src.IdWell).Offset;
|
var timeZoneOffset = wellService.GetTimezone(src.IdWell).Offset;
|
||||||
|
|
||||||
var dto = src.Adapt<WellOperationDto>();
|
var dto = src.Adapt<WellOperationDto>();
|
||||||
dto.DateStart = src.DateStart.ToOffset(timeZoneOffset);
|
dto.DateStart = src.DateStart.ToOffset(timeZoneOffset);
|
||||||
dto.LastUpdateDate = src.LastUpdateDate?.ToOffset(timeZoneOffset);
|
dto.LastUpdateDate = src.LastUpdateDate?.ToOffset(timeZoneOffset);
|
||||||
|
@ -273,8 +273,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
if (entity.Timezone is null)
|
if (entity.Timezone is null)
|
||||||
dto.Timezone = GetTimezone(entity.Id);
|
dto.Timezone = GetTimezone(entity.Id);
|
||||||
|
|
||||||
//TODO: фикс
|
dto.StartDate = wellOperationRepository.GetDatesRange(entity.Id, WellOperation.IdOperationTypeFact)?.From.ToRemoteDateTime(dto.Timezone.Hours);
|
||||||
//dto.StartDate = wellOperationRepository.GetDatesRangeAsync(entity.Id, ).FirstOperationDate(entity.Id)?.ToRemoteDateTime(dto.Timezone.Hours);
|
|
||||||
dto.WellType = entity.WellType.Caption;
|
dto.WellType = entity.WellType.Caption;
|
||||||
dto.Cluster = entity.Cluster.Caption;
|
dto.Cluster = entity.Cluster.Caption;
|
||||||
dto.Deposit = entity.Cluster.Deposit.Caption;
|
dto.Deposit = entity.Cluster.Deposit.Caption;
|
||||||
|
Loading…
Reference in New Issue
Block a user