fix(esppTemplateSync): исправил мапинг полей. Сервис IRobotConfigurationService создается в scope.

This commit is contained in:
Mikhail Trubnikov
2023-10-25 15:37:14 +10:00
parent 180594fa00
commit a84d6f8de3
4 changed files with 26 additions and 19 deletions

View File

@@ -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 откуда то нужно брать инициатора

View File

@@ -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,11 +162,16 @@ 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;
}
}
}
}