fix(esppTemplateSync): исправил мапинг полей. Сервис IRobotConfigurationService создается в scope.
This commit is contained in:
@@ -14,7 +14,7 @@ namespace PARR.EsppTemplateSync.MappingProfiles
|
||||
.ForMember(d => d.IsActive, o => o.MapFrom(s => s.IsActiveTemplate))
|
||||
.ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.Host!.WorkGroup))
|
||||
.ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.ApplicationsInWork!.ShortDescription))
|
||||
.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.ApplicationsInWork!.ShortDescription))
|
||||
.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Host!.ResponseArea!.Name))
|
||||
.ForMember(d => d.Duration, o => o.MapFrom(s => s.ApplicationsInWork!.TemplateDuration))
|
||||
.ForMember(d => d.EK, o => o.MapFrom(s => s.Host!.Ek))
|
||||
//.ForMember(d => d.Initiator, o => o.MapFrom(s => )) TODO откуда то нужно брать инициатора
|
||||
|
||||
@@ -16,15 +16,13 @@ namespace PARR.EsppTemplateSync.Services
|
||||
private readonly IParserService parserService;
|
||||
private readonly GlobalSettings globalSettings;
|
||||
private readonly IMapper mapper;
|
||||
private readonly IRobotConfigurationService robotConfigurationService;
|
||||
|
||||
public Manager(
|
||||
ILogger<Manager> logger,
|
||||
IServiceProvider serviceProvider,
|
||||
IParserService parserService,
|
||||
GlobalSettings globalSettings,
|
||||
IMapper mapper,
|
||||
IRobotConfigurationService robotConfigurationService
|
||||
IMapper mapper
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -32,7 +30,6 @@ namespace PARR.EsppTemplateSync.Services
|
||||
this.parserService = parserService;
|
||||
this.globalSettings = globalSettings;
|
||||
this.mapper = mapper;
|
||||
this.robotConfigurationService = robotConfigurationService;
|
||||
}
|
||||
|
||||
public Task<bool> ManageFileAsync(string path)
|
||||
@@ -76,14 +73,15 @@ namespace PARR.EsppTemplateSync.Services
|
||||
var services = scope.ServiceProvider;
|
||||
|
||||
var templateService = services.GetService<ITemplateService>();
|
||||
|
||||
if (templateService == null)
|
||||
{
|
||||
throw new Exception($"Не найден сервис: {nameof(ITemplateService)}");
|
||||
// return;
|
||||
}
|
||||
|
||||
var robotConfigurationService = services.GetService<IRobotConfigurationService>();
|
||||
if (robotConfigurationService == null)
|
||||
throw new Exception($"Не найден сервис: {nameof(IRobotConfigurationService)}");
|
||||
|
||||
Template? template = await templateService.GetTemplateByNameAsync(esppTemplate.Name);
|
||||
|
||||
//существует в ЕСПП но отсутствует в ПАРР.
|
||||
//TODO деактивируем и видимо ещё что-то нужно
|
||||
if (template == null)
|
||||
@@ -101,6 +99,7 @@ namespace PARR.EsppTemplateSync.Services
|
||||
// logger.LogInformation($"----- Создана запись Template {esppTemplate.Name}({esppTemplate.ShortDescription}) -----");
|
||||
//---
|
||||
logger.LogWarning($"----- Найден шаблон ЕСПП незарегистрированный в ПАРР {esppTemplate.Name}({esppTemplate.ShortDescription}) -----");
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
@@ -108,16 +107,17 @@ namespace PARR.EsppTemplateSync.Services
|
||||
var mappedTemplate = mapper.Map<EsppTemplate>(template);
|
||||
if (mappedTemplate == null)
|
||||
return;
|
||||
var isChanged = IsChanged(mappedTemplate, esppTemplate);
|
||||
|
||||
var isChanged = IsChanged(mappedTemplate, esppTemplate);
|
||||
if (isChanged)
|
||||
{
|
||||
SetUpdateStatus(template);
|
||||
SetUpdateStatus(template, robotConfigurationService);
|
||||
|
||||
if (!await templateService.CommitAsync())
|
||||
logger.LogError($"Не удалось изменить запись Template {template.Name}");
|
||||
else
|
||||
logger.LogInformation($"----- Установлен принудительный статус {TaskStatusEnum.Updating.ToString()} Template {template.Name} -----");
|
||||
|
||||
} //надо ли проверять если не изменился, но был статус Updating не понятно. Доверяем роботу пока, что после окончания работ от точно сообщит
|
||||
else
|
||||
{
|
||||
@@ -139,12 +139,14 @@ namespace PARR.EsppTemplateSync.Services
|
||||
return;
|
||||
}
|
||||
|
||||
private void SetUpdateStatus(Template template)
|
||||
|
||||
private void SetUpdateStatus(Template template, IRobotConfigurationService robotConfigurationService)
|
||||
{
|
||||
var robotConfig = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.TemplateOrder, ref template);
|
||||
robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, ref robotConfig);
|
||||
}
|
||||
|
||||
|
||||
private bool IsChanged(EsppTemplate template, EsppTemplate esppTemplate)
|
||||
{
|
||||
foreach (var prop in template.GetType().GetProperties())
|
||||
@@ -160,9 +162,14 @@ namespace PARR.EsppTemplateSync.Services
|
||||
continue;
|
||||
|
||||
//Replace("\r","").Replace("\n","") - в подробном описании могут быть переносы строк, в Rabbit прилетает без переносов. Убираем переносы для стравнения
|
||||
if (parrValue!.ToString()!.ToLower().Replace("\r", "").Replace("\n", "") != esppValue!.ToString()!.ToLower())
|
||||
return true;
|
||||
var parrValueStr = parrValue!.ToString()!.ToLower().Replace("\r", "").Replace("\n", "");
|
||||
var esppValueStr = esppValue!.ToString()!.ToLower();
|
||||
|
||||
if (parrValueStr != esppValueStr)
|
||||
{
|
||||
logger.LogDebug($"Не совпадают поля. parrValueStr: {parrValueStr}, esppValueStr: {esppValueStr}");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ builder.Services.AddLogging(config =>
|
||||
builder.Services.InstallEsppTemplateSyncServices(builder.Configuration);
|
||||
builder.Configuration.AddEsppTemplateConfigurations(builder.Services);
|
||||
builder.Services.AddEsppTemplateSettings(builder.Configuration);
|
||||
|
||||
builder.Services.AddHostedService<Worker>();
|
||||
|
||||
var host = builder.Build();
|
||||
|
||||
@@ -6,7 +6,6 @@ namespace PARR.EsppTemplateSyncWorker
|
||||
{
|
||||
private readonly ILogger<Worker> _logger;
|
||||
private ITemplateSyncer templateSyncer;
|
||||
//private readonly IServiceProvider serviceProvider;
|
||||
|
||||
public Worker(
|
||||
ILogger<Worker> logger,
|
||||
@@ -19,13 +18,13 @@ namespace PARR.EsppTemplateSyncWorker
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
templateSyncer?.Start();
|
||||
//TODO <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
templateSyncer.Start();
|
||||
//TODO Периодично нужно проверять шаблоны в ПАРР и создавать их если они отсутствуют в ЕСПП. По ним то ничего не приходит из экспорта
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
templateSyncer?.Stop();
|
||||
templateSyncer.Stop();
|
||||
|
||||
return base.StopAsync(cancellationToken);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user