fix(api): StatTemplateAutoControlController - исправлена статистика созданных шаблонов по авто-контролю

This commit is contained in:
Mikhail Trubnikov
2024-10-21 11:58:01 +10:00
parent fbb28de122
commit ebc5094387
2 changed files with 45 additions and 21 deletions

View File

@@ -42,30 +42,53 @@ namespace PARR.API.Controllers.V1.Statistics
var startPeriod = endPeriod.AddDays(-startPeriodDays);
var templates = await templateService.Get()
.Where(t =>
t.InitiatorParrComponentId == Constants.ParrComponentsEnum.JobAutoControl
&&
((
// измененные
t.DateModified.HasValue
&& t.DateModified.Value.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date >= startPeriod.Date
&& t.DateModified.Value.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date <= endPeriod.Date
) || (
// созданные
t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date >= startPeriod.Date
&& t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date <= endPeriod.Date
&& t.InitiatorComment != null
&& !t.InitiatorComment.Contains(TemplateActivatorActionsEnum.ActivateAllForAutoControl.ToString())
&& !t.InitiatorComment.Contains(TemplateActivatorActionsEnum.DeactivateAllForAutoControl.ToString())
))
)
.Select(t => new QueryResult
{
//TemplateId = t.Id,
DateCreated = t.DateCreated,
DateModified = t.DateModified,
InitiatorComment = t.InitiatorComment,
//InitiatorParrComponentId = t.InitiatorParrComponentId
})
.ToListAsync();
#region ищем созданные, но уже перемещенные в историю
var createdTemplatesAndMoveToHistory = await templateService.Get().Include(t => t.TemplateHistories)
.Where(t =>
t.InitiatorParrComponentId == Constants.ParrComponentsEnum.JobAutoControl
&&
((
// измененные
t.DateModified.HasValue
&& t.DateModified.Value.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date >= startPeriod.Date
&& t.DateModified.Value.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date <= endPeriod.Date
) || (
// созданные
t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date >= startPeriod.Date
&& t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date <= endPeriod.Date
))
t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date >= startPeriod.Date
&& t.DateCreated.DateTime.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date <= endPeriod.Date
&& t.TemplateHistories.Any(x => x.InitiatorParrComponentId == Constants.ParrComponentsEnum.JobAutoControl)
)
.Select(t => new QueryResult
{
//TemplateId = t.Id,
DateCreated = t.DateCreated,
DateModified = t.DateModified,
InitiatorComment = t.InitiatorComment,
//InitiatorParrComponentId = t.InitiatorParrComponentId
})
.ToListAsync();
// фильтруем чтобы инициатор коммент не содержал ActivateAllForAutoControl и DeactivateAllForAutoControl, если не содержит, то остается последнее единственное - генерация
createdTemplatesAndMoveToHistory = createdTemplatesAndMoveToHistory.Where(t =>
t.TemplateHistories.Any(x =>
x.InitiatorComment != null
&& !x.InitiatorComment.Contains(TemplateActivatorActionsEnum.ActivateAllForAutoControl.ToString())
&& !x.InitiatorComment.Contains(TemplateActivatorActionsEnum.DeactivateAllForAutoControl.ToString())
&& x.InitiatorParrComponentId == Constants.ParrComponentsEnum.JobAutoControl
)).ToList();
//TODO: createdTemplatesAndMoveToHistory - возможно тут ошибка. Не убираются дубли шаблонов из template
#endregion
var history = await templateHistoryService.Get()
.Where(t =>
t.InitiatorParrComponentId == Constants.ParrComponentsEnum.JobAutoControl
@@ -86,6 +109,7 @@ namespace PARR.API.Controllers.V1.Statistics
var objs = new List<QueryResult>();
objs.AddRange(templates);
objs.AddRange(history);
objs.AddRange(createdTemplatesAndMoveToHistory.Select(t => new QueryResult { DateCreated = t.DateCreated }));
// создано
var creations = objs.Where(t => t.DateCreated.HasValue).GroupBy(t => t.DateCreated!.Value.AddHours(timeZoneQuery.TimeZoneOffsetHours).Date)

View File

@@ -76,7 +76,7 @@ namespace PARR.DAL.Services.Abstracts
/// <param name="initiator"></param>
private void SetInitiator(IHistoryInitiator? initiator)
{
// Задваем иницатора только для новых и измененных записей
// Задаем инициатора только для новых и измененных записей
var entrities = EntitiContext.ChangeTracker.Entries()
.Where(t => t.State == EntityState.Modified || t.State == EntityState.Added);