CS2-99: Fixed well fact end date depending on well state

This commit is contained in:
Харченко Владимир 2021-12-21 16:36:28 +05:00
parent a0208f412e
commit 1ec76e812f
2 changed files with 12 additions and 8 deletions

View File

@ -7,12 +7,12 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Дата и время начала /// Дата и время начала
/// </summary> /// </summary>
public DateTime Start { get; set; } public DateTime? Start { get; set; }
/// <summary> /// <summary>
/// Дата и время окончания /// Дата и время окончания
/// </summary> /// </summary>
public DateTime End { get; set; } public DateTime? End { get; set; }
/// <summary> /// <summary>
/// Глубина, м /// Глубина, м

View File

@ -186,7 +186,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
return statWellDto; return statWellDto;
statWellDto.Sections = CalcSectionsStats(wellOperations); statWellDto.Sections = CalcSectionsStats(wellOperations);
statWellDto.Total = GetStatTotal(wellOperations); statWellDto.Total = GetStatTotal(wellOperations, well.IdState);
return statWellDto; return statWellDto;
} }
@ -219,14 +219,18 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
return sections; return sections;
} }
private static PlanFactBase<StatOperationsDto> GetStatTotal(IEnumerable<WellOperation> operations) private static PlanFactBase<StatOperationsDto> GetStatTotal(IEnumerable<WellOperation> operations,
int idWellState)
{ {
var operationsPlan = operations.Where(o => o.IdType == idOperationTypePlan); var operationsPlan = operations.Where(o => o.IdType == idOperationTypePlan);
var operationsFact = operations.Where(o => o.IdType == idOperationTypeFact); var operationsFact = operations.Where(o => o.IdType == idOperationTypeFact);
var factEnd = CalcStat(operationsFact);
if (idWellState != 2)
factEnd.End = null;
var section = new PlanFactBase<StatOperationsDto> var section = new PlanFactBase<StatOperationsDto>
{ {
Plan = CalcStat(operationsPlan), Plan = CalcStat(operationsPlan),
Fact = CalcStat(operationsFact), Fact = factEnd,
}; };
return section; return section;
} }
@ -240,7 +244,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
return CalcStat(sectionOperations); return CalcStat(sectionOperations);
} }
private static StatOperationsDto CalcStat(IEnumerable<WellOperation> operations) private static StatOperationsDto CalcStat(IEnumerable<WellOperation> operations)
{ {
if (!operations.Any()) if (!operations.Any())
@ -250,8 +254,8 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
var section = new StatOperationsDto var section = new StatOperationsDto
{ {
Start = operations.First().DateStart, Start = operations.FirstOrDefault()?.DateStart,
End = operations.Max(o => (o.DateStart.AddHours(o.DurationHours))), End = operations.Max(o => o.DateStart.AddHours(o.DurationHours)),
WellDepthStart = operations.Min(o => o.DepthStart), WellDepthStart = operations.Min(o => o.DepthStart),
WellDepthEnd = operations.Max(o => o.DepthStart), WellDepthEnd = operations.Max(o => o.DepthStart),
Rop = CalcROP(operations), Rop = CalcROP(operations),