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