forked from ddrilling/AsbCloudServer
Исправления суточного отчёта.
1. Мелкие фиксы в сервисе + сделал более предсказуемый размер файлов отчёта. 2. Исправил получение ограничивающих параметров. Теперь не учитываются ограничивающие параметры если их начальная глубина больше конечной.
This commit is contained in:
parent
84d84fb504
commit
56b90e0952
@ -94,13 +94,13 @@ public class AutoGeneratedDailyReportService : IAutoGeneratedDailyReportService
|
|||||||
|
|
||||||
for (int day = result.Skip; (day - result.Skip) < result.Take && (datesRange.From.AddDays(day)) <= datesRange.To; day++)
|
for (int day = result.Skip; (day - result.Skip) < result.Take && (datesRange.From.AddDays(day)) <= datesRange.To; day++)
|
||||||
{
|
{
|
||||||
var dateFrom = datesRange.From.AddDays(day);
|
var reportDate = DateOnly.FromDateTime(datesRange.From.AddDays(day));
|
||||||
|
|
||||||
reports.Add(new AutoGeneratedDailyReportDto
|
reports.Add(new AutoGeneratedDailyReportInfoDto
|
||||||
{
|
{
|
||||||
FileName = string.Format(fileNameTemplate, well.Caption, well.Cluster, DateOnly.FromDateTime(dateFrom)),
|
FileName = string.Format(fileNameTemplate, well.Caption, well.Cluster, reportDate),
|
||||||
ReportDate = DateOnly.FromDateTime(dateFrom),
|
ReportDate = reportDate,
|
||||||
FileSize = GetFileSize() / 1024,
|
FileSize = GetFileSize(reportDate, idWell) / 1024,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,9 +127,9 @@ public class AutoGeneratedDailyReportService : IAutoGeneratedDailyReportService
|
|||||||
var report = new AutoGeneratedDailyReportDto
|
var report = new AutoGeneratedDailyReportDto
|
||||||
{
|
{
|
||||||
FileName = string.Format(fileNameTemplate, well.Caption, well.Cluster, reportDate),
|
FileName = string.Format(fileNameTemplate, well.Caption, well.Cluster, reportDate),
|
||||||
FileSize = GetFileSize() / 1024,
|
FileSize = GetFileSize(reportDate, idWell) / 1024,
|
||||||
ReportDate = reportDate,
|
ReportDate = reportDate,
|
||||||
Head = CreateHeadBlock(well, reportDate, factOperations),
|
Head = CreateHeadBlock(well, factOperations),
|
||||||
Subsystems = (await CreateSubsystemBlockAsync(idWell, startDate, finishDate, cancellationToken)).ToArray(),
|
Subsystems = (await CreateSubsystemBlockAsync(idWell, startDate, finishDate, cancellationToken)).ToArray(),
|
||||||
LimitingParameters = (await CreateLimitingParameterBlockAsync(idWell, startDate, finishDate, cancellationToken)).ToArray(),
|
LimitingParameters = (await CreateLimitingParameterBlockAsync(idWell, startDate, finishDate, cancellationToken)).ToArray(),
|
||||||
TimeBalance = factOperations.GroupBy(w => w.CategoryName).Select(x => new TimeBalanceRecordDto
|
TimeBalance = factOperations.GroupBy(w => w.CategoryName).Select(x => new TimeBalanceRecordDto
|
||||||
@ -144,7 +144,7 @@ public class AutoGeneratedDailyReportService : IAutoGeneratedDailyReportService
|
|||||||
return (report.FileName, stream);
|
return (report.FileName, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
private HeadBlockDto CreateHeadBlock(WellDto well, DateOnly reportDate, WellOperationDto[] factOperations)
|
private HeadBlockDto CreateHeadBlock(WellDto well, WellOperationDto[] factOperations)
|
||||||
{
|
{
|
||||||
var customer = well.Companies.FirstOrDefault(company => company.IdCompanyType == 1);
|
var customer = well.Companies.FirstOrDefault(company => company.IdCompanyType == 1);
|
||||||
|
|
||||||
@ -188,12 +188,12 @@ public class AutoGeneratedDailyReportService : IAutoGeneratedDailyReportService
|
|||||||
startDate, finishDate, cancellationToken)).ToArray();
|
startDate, finishDate, cancellationToken)).ToArray();
|
||||||
|
|
||||||
var sumDepths = limitingParameterStats.Sum(x => x.Depth);
|
var sumDepths = limitingParameterStats.Sum(x => x.Depth);
|
||||||
|
|
||||||
return limitingParameterStats.Select(l => new LimitingParameterRecordDto
|
return limitingParameterStats.Select(l => new LimitingParameterRecordDto
|
||||||
{
|
{
|
||||||
NameFeedRegulator = l.NameFeedRegulator,
|
NameFeedRegulator = l.NameFeedRegulator,
|
||||||
Hours = l.TotalMinutes,
|
Hours = l.TotalMinutes,
|
||||||
PercentDepth = l.Depth / sumDepths,
|
PercentDepth = sumDepths != 0 ? l.Depth / sumDepths : 0,
|
||||||
Depth = l.Depth,
|
Depth = l.Depth,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -239,10 +239,11 @@ public class AutoGeneratedDailyReportService : IAutoGeneratedDailyReportService
|
|||||||
return limitingParameterService.GetStatAsync(request, cancellationToken);
|
return limitingParameterService.GetStatAsync(request, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int GetFileSize()
|
private int GetFileSize(DateOnly reportDate, int idWell)
|
||||||
{
|
{
|
||||||
const int fileSizeTemplate = 10240;
|
const int fileSizeTemplate = 10240;
|
||||||
// TODO: Добавку размера сделать более предсказуемой на основе даты рапорта. что то типа `(Date.Ticks * idWell) % (fileSizeTemplate / 10)`
|
long ticks = new DateTime(reportDate.Year, reportDate.Month, reportDate.Day).Ticks * idWell;
|
||||||
return new Random().Next(1, 8193) + fileSizeTemplate;
|
int remainder = (int)(ticks % (fileSizeTemplate / 10));
|
||||||
|
return fileSizeTemplate + remainder;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -43,10 +43,15 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
List<LimitingParameterDto> result = new List<LimitingParameterDto>(data.Count());
|
List<LimitingParameterDto> result = new List<LimitingParameterDto>(data.Count());
|
||||||
foreach (var item in data)
|
foreach (var item in data)
|
||||||
{
|
{
|
||||||
var trimData = TrimLimitingParameters(item, request);
|
var trimData = TrimLimitingParameters(item, request).ToArray();
|
||||||
|
|
||||||
var allItemDepths = trimData.Sum(x => x.DepthEnd - x.DepthStart);
|
//TODO: временный фикс, нужно избежать отрицательных значений в ограничивающих параметрах.
|
||||||
var allItemDates = trimData.Sum(x => (x.DateEnd - x.DateStart).TotalMinutes);
|
//Проблема возникает при при формировании LimitingParameter в LimitingParameterCalcWorkFactory.
|
||||||
|
//Начальная глубина ограничивающего параметра не может быть больше конечной.
|
||||||
|
var allItemDepths = trimData.Where(x => x.DepthStart < x.DepthEnd)
|
||||||
|
.Sum(x => x.DepthEnd - x.DepthStart);
|
||||||
|
var allItemDates = trimData.Where(x => x.DepthStart < x.DepthEnd)
|
||||||
|
.Sum(x => (x.DateEnd - x.DateStart).TotalMinutes);
|
||||||
|
|
||||||
result.Add(new LimitingParameterDto
|
result.Add(new LimitingParameterDto
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user