feat(templateGeneratorWorker): добавлено новое поле IsUnused и пересчет NextRun относительно Job.Group.ReferenceDate
This commit is contained in:
@@ -10,6 +10,7 @@ using PARR.DAL.Models.Job;
|
|||||||
using PARR.DAL.Models.Unit;
|
using PARR.DAL.Models.Unit;
|
||||||
using PARR.DAL.Services.Interfaces;
|
using PARR.DAL.Services.Interfaces;
|
||||||
using PARR.DAL.Services.Interfaces.Job;
|
using PARR.DAL.Services.Interfaces.Job;
|
||||||
|
using PARR.DAL.TransformServices;
|
||||||
using PARR.TemplateGeneratorWorker.Services;
|
using PARR.TemplateGeneratorWorker.Services;
|
||||||
|
|
||||||
namespace PARR.TemplateGeneratorWorker
|
namespace PARR.TemplateGeneratorWorker
|
||||||
@@ -22,6 +23,7 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
private readonly IJobService jobService;
|
private readonly IJobService jobService;
|
||||||
private readonly IShortcodesService shortcodesService;
|
private readonly IShortcodesService shortcodesService;
|
||||||
private readonly ITemplateService templateService;
|
private readonly ITemplateService templateService;
|
||||||
|
private readonly IEsppScheduleTransformService esppScheduleTransformService;
|
||||||
|
|
||||||
public TemplateGenerator(
|
public TemplateGenerator(
|
||||||
ILogger<TemplateGenerator> logger,
|
ILogger<TemplateGenerator> logger,
|
||||||
@@ -29,7 +31,8 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
IValidatorService validatorService,
|
IValidatorService validatorService,
|
||||||
IJobService jobService,
|
IJobService jobService,
|
||||||
IShortcodesService shortcodesService,
|
IShortcodesService shortcodesService,
|
||||||
ITemplateService templateService
|
ITemplateService templateService,
|
||||||
|
IEsppScheduleTransformService esppScheduleTransformService
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
@@ -38,6 +41,7 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
this.jobService = jobService;
|
this.jobService = jobService;
|
||||||
this.shortcodesService = shortcodesService;
|
this.shortcodesService = shortcodesService;
|
||||||
this.templateService = templateService;
|
this.templateService = templateService;
|
||||||
|
this.esppScheduleTransformService = esppScheduleTransformService;
|
||||||
}
|
}
|
||||||
public async Task GenerateTemplateAsync(string msg)
|
public async Task GenerateTemplateAsync(string msg)
|
||||||
{
|
{
|
||||||
@@ -48,9 +52,6 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
if (query == null)
|
if (query == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var isTemplateExist = templateService.Get()
|
|
||||||
.AsNoTracking()
|
|
||||||
.Any(t => t.JobId == query.JobId && t.UnitId == query.UnitId);
|
|
||||||
|
|
||||||
if (!await validatorService.IsValidAsync(query.JobId, query.UnitId))
|
if (!await validatorService.IsValidAsync(query.JobId, query.UnitId))
|
||||||
{
|
{
|
||||||
@@ -58,20 +59,39 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTemplateExist)
|
var existing = await templateService
|
||||||
|
.Get()
|
||||||
|
.AsNoTracking()
|
||||||
|
.FirstOrDefaultAsync(t => t.JobId == query.JobId && t.UnitId == query.UnitId);
|
||||||
|
|
||||||
|
|
||||||
|
if (existing != null)
|
||||||
{
|
{
|
||||||
logger.LogWarning($"Шаблон с JobId={query.JobId} и UnitId={query.UnitId} уже существует");
|
logger.LogWarning("Шаблон уже существует (Job={JobId}, Unit={UnitId}) → пропускаем Create", query.JobId, query.UnitId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var job = await jobService
|
var job = await jobService
|
||||||
.Get().AsNoTracking()
|
.Get().AsNoTracking()
|
||||||
|
.Include(t => t.Group)
|
||||||
.FirstOrDefaultAsync(t => t.Id == query.JobId);
|
.FirstOrDefaultAsync(t => t.Id == query.JobId);
|
||||||
|
|
||||||
|
if (job == null)
|
||||||
|
{
|
||||||
|
logger.LogError("Job не найден: {JobId}", query.JobId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (job.Group == null)
|
||||||
|
{
|
||||||
|
logger.LogError("Job {JobId} не привязан к JobGroup", query.JobId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var templateName = await shortcodesService.ApplyShortcodesAsync(job!.TemplateNameMask!, query.UnitId, query.JobId);
|
var templateName = await shortcodesService.ApplyShortcodesAsync(job!.TemplateNameMask!, query.UnitId, query.JobId);
|
||||||
|
|
||||||
|
var nextRun = await esppScheduleTransformService.GetNextDateAsync(job.GroupId, job.Group!.ReferenceDate);
|
||||||
|
|
||||||
var template = new Template
|
var template = new Template
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
Id = Guid.NewGuid(),
|
||||||
@@ -80,17 +100,20 @@ namespace PARR.TemplateGeneratorWorker
|
|||||||
JobId = query.JobId,
|
JobId = query.JobId,
|
||||||
IsActiveTemplate = query.IsActiveTemplate ?? false,
|
IsActiveTemplate = query.IsActiveTemplate ?? false,
|
||||||
IsActiveSchedule = query.IsActiveSchedule ?? false,
|
IsActiveSchedule = query.IsActiveSchedule ?? false,
|
||||||
|
NextRun = nextRun,
|
||||||
|
IsUnused = false,
|
||||||
InitiatorComment = query.HistoryInitiator?.InitiatorComment,
|
InitiatorComment = query.HistoryInitiator?.InitiatorComment,
|
||||||
InitiatorParrComponentId = query.HistoryInitiator?.InitiatorParrComponentId
|
InitiatorParrComponentId = query.HistoryInitiator?.InitiatorParrComponentId
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!await templateService.CreateAsync(template) || !await templateService.CommitAsync(new HistoryInitiator { InitiatorComment = "Запрос на генерацию с тестового шаблона", InitiatorParrComponentId = ParrComponentsEnum.TemplateTaskGenerator }))
|
if (await templateService.CreateAsync(template) && await templateService.CommitAsync(initiator))
|
||||||
{
|
{
|
||||||
logger.LogError($"Ошибка при создании шаблона: Name: {template.Name}, {nameof(template.Job)}: {template.JobId}, {nameof(template.Unit)}: {template.UnitId}");
|
logger.LogInformation("Создан шаблон: Id={TemplateId}, Name={Name}, Job={JobId}, Unit={UnitId}",
|
||||||
|
template.Id, template.Name, request.JobId, request.UnitId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logger.LogInformation($"Создан шаблон: Name: {template.Name}, {nameof(template.Job)}: {template.JobId}, {nameof(template.Unit)}: {template.UnitId}");
|
logger.LogError("Ошибка создания шаблона: Name={Name}", templateName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user