feat(dal): в методе получения Id неиспользуемого шаблона добавлена проверка на Ok статус, чтобы не давать роботу ошибочные задания.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using PARR.BLL.Domain.Mq;
|
||||
using PARR.BLL.Services.Interfaces;
|
||||
using PARR.Common.Domain;
|
||||
@@ -29,9 +30,6 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
private const bool DefaultUsedTemplateState = false;
|
||||
private const bool DefaultUsedScheduleState = false;
|
||||
|
||||
// Маска для неиспользуемых шаблонов — хардкод, недоступна из GUI
|
||||
private const string UnusedTemplateNameMask = "%П-1%_НЕАКТУАЛЬНЫЕ_%ЭК%_%ТИКТАК%";
|
||||
|
||||
private readonly ILogger<SimpleTemplateSynchronizer> logger;
|
||||
private readonly IUnitFilterService unitFilterService;
|
||||
private readonly MqSettings mqSettings;
|
||||
@@ -45,6 +43,7 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
private readonly IMatchingStatusService matchingStatusService;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly INextRunService nextRunService;
|
||||
private readonly IOptions<TemplateSettings> templateSettings;
|
||||
|
||||
public SimpleTemplateSynchronizer(
|
||||
ILogger<SimpleTemplateSynchronizer> logger,
|
||||
@@ -65,7 +64,8 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
ITemplateUpdaterMqSender templateUpdaterMqSender,
|
||||
IMatchingStatusService matchingStatusService,
|
||||
SettingsFromDb settingsFromDb,
|
||||
INextRunService nextRunService
|
||||
INextRunService nextRunService,
|
||||
IOptions<TemplateSettings> templateSettings
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -81,6 +81,7 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
this.matchingStatusService = matchingStatusService;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.nextRunService = nextRunService;
|
||||
this.templateSettings = templateSettings;
|
||||
}
|
||||
|
||||
public async Task SyncTemplatesForJobAsync(Guid jobId, HistoryInitiator initiator)
|
||||
@@ -552,7 +553,7 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
MinValueRelationships = unusedJob.MinValueRelationships,
|
||||
MaxValueRelationships = unusedJob.MaxValueRelationships,
|
||||
IsParentRelationships = unusedJob.IsParentRelationships,
|
||||
TemplateNameMask = UnusedTemplateNameMask,
|
||||
TemplateNameMask = templateSettings.Value.UnusedTemplateNameMask,
|
||||
WorkGroupMask = unusedJob.WorkGroupMask,
|
||||
ResponseAreaMask = unusedJob.ResponseAreaMask,
|
||||
TnkId = unusedJob.TnkId,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using PARR.BLL.Domain.Mq;
|
||||
using PARR.Common.Domain;
|
||||
using PARR.Constants;
|
||||
@@ -8,6 +9,7 @@ using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Job;
|
||||
using PARR.TemplateMatcher.Services.Interfaces;
|
||||
using PARR.TemplateMatcher.Settings;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Implementations;
|
||||
|
||||
@@ -22,6 +24,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
|
||||
private readonly ITemplateNameNormalizer namenormalizer;
|
||||
private readonly ITemplateUpdaterMqSender sender;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IOptions<TemplateSettings> templateSettings;
|
||||
|
||||
public TemplateDeactivator(
|
||||
ILogger<TemplateDeactivator> logger,
|
||||
@@ -29,7 +32,8 @@ internal class TemplateDeactivator : ITemplateDeactivator
|
||||
IJobService jobService,
|
||||
ITemplateNameNormalizer namenormalizer,
|
||||
ITemplateUpdaterMqSender sender,
|
||||
SettingsFromDb settingsFromDb
|
||||
SettingsFromDb settingsFromDb,
|
||||
IOptions<TemplateSettings> templateSettings
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -38,6 +42,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
|
||||
this.namenormalizer = namenormalizer;
|
||||
this.sender = sender;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.templateSettings = templateSettings;
|
||||
}
|
||||
|
||||
public async Task<bool> DeactivateTemplateAsync(Template template, HistoryInitiator initiator)
|
||||
@@ -70,12 +75,15 @@ internal class TemplateDeactivator : ITemplateDeactivator
|
||||
.ThenInclude(g => g!.GroupType)
|
||||
.FirstOrDefaultAsync(j => j.Id == settingsFromDb.JobIdForUnusedTemplates);
|
||||
|
||||
|
||||
if (unusedJob == null)
|
||||
{
|
||||
logger.LogError("Job для деактивированных шаблонов не найден.");
|
||||
return false;
|
||||
}
|
||||
|
||||
unusedJob.TemplateNameMask = templateSettings.Value.UnusedTemplateNameMask;
|
||||
|
||||
// === Создаём временный Template для нормализации имени ===
|
||||
var tempTemplateForName = new Template
|
||||
{
|
||||
@@ -96,7 +104,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
|
||||
TemplateId = template.Id,
|
||||
JobId = unusedJob.Id,
|
||||
UnitId = template.UnitId,
|
||||
Name = expectedName + "_" + DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
|
||||
Name = expectedName,
|
||||
IsActiveTemplate = DefaultUnusedTemplateState,
|
||||
IsActiveSchedule = DefaultUnusedScheduleState,
|
||||
LastRun = template.LastRun,
|
||||
|
||||
7
PARR.TemplateMatcher/Settings/TemplateSettings.cs
Normal file
7
PARR.TemplateMatcher/Settings/TemplateSettings.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace PARR.TemplateMatcher.Settings
|
||||
{
|
||||
internal class TemplateSettings
|
||||
{
|
||||
public string UnusedTemplateNameMask { get; set; } = "%П-1%_НЕАКТУАЛЬНЫЕ_%ЭК%_%ТИКТАК%";
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,10 @@ namespace PARR.TemplateMatcher
|
||||
configuration.GetSection(nameof(MqSettings)).Bind(mqSettings);
|
||||
services.AddSingleton(mqSettings);
|
||||
|
||||
var templateSettings = new TemplateSettings();
|
||||
configuration.GetSection(nameof(TemplateSettings)).Bind(templateSettings);
|
||||
services.AddSingleton(templateSettings);
|
||||
|
||||
services.AddTransient<IMqTemplateMatcher, MqTemplateMatcher>();
|
||||
services.AddTransient<IJobValidatorService, JobValidatorService>();
|
||||
services.AddTransient<IJobGroupValidatorService, JobGroupValidatorService>();
|
||||
|
||||
Reference in New Issue
Block a user