Добавлен справочник ResponseArea
This commit is contained in:
@@ -11,9 +11,5 @@ namespace PARR.AIHIT.Context
|
||||
|
||||
public DbSet<EK> EKs { get; set; }
|
||||
|
||||
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
//{
|
||||
// optionsBuilder.UseSqlServer(@"Data Source=10.248.19.97; Initial Catalog=mao2;User ID=awhit-ipp-parr;pwd=ET3h$9y1LH#D;TrustServerCertificate=true;");
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using AutoMapper;
|
||||
using PARR.AIHIT.MappingProfiles.Resolvers;
|
||||
using PARR.AIHIT.Models;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.AIHIT;
|
||||
@@ -23,9 +24,12 @@ namespace PARR.AIHIT.MappingProfiles
|
||||
CreateMap<RawDataEK, Host>()
|
||||
.ForMember(d => d.Ek, o => o.MapFrom(s => s.EKFindCode))//TODO Определить имя хоста по
|
||||
.ForMember(d => d.IP, o => o.MapFrom(s => s.IP))
|
||||
.ForMember(d => d.Status, o => o.MapFrom(s => s.Status))
|
||||
.ForMember(d => d.EkStatusCode, o => o.MapFrom<EkStatusCodeResolver>())
|
||||
//.ForMember(d => d.StatusStr, o => o.MapFrom(s => s.Status))
|
||||
.ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.WorkGroup))
|
||||
.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.ResponseArea));
|
||||
.ForMember(d => d.ResponseAreaCode, o => o.MapFrom<ResponseAreaCodeResolver>())
|
||||
.ForMember(d => d.ResponseArea, o => o.Ignore());
|
||||
//.ForMember(d => d.ResponseAreaStr, o => o.MapFrom(s => s.ResponseArea));
|
||||
//CreateMap<PARR.DAL.Models.Host, PARR.DAL.Models.Host>()
|
||||
// .ForMember(d => d.HostName, o => o.MapFrom(s => s.HostName))
|
||||
// .ForMember(d => d.IP, o => o.MapFrom(s => s.IP))
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using AutoMapper;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.AIHIT;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PARR.AIHIT.MappingProfiles.Resolvers
|
||||
{
|
||||
internal class EkStatusCodeResolver : IValueResolver<RawDataEK, Host, int>
|
||||
{
|
||||
public int Resolve(RawDataEK source, Host destination, int destMember, ResolutionContext context)
|
||||
{
|
||||
var pattern = "\\d+";
|
||||
var regex = new Regex(pattern);
|
||||
|
||||
int.TryParse(regex.Match(source.Status!).Value, out int result);
|
||||
|
||||
if (!Enum.IsDefined(typeof(EkStatusEnum), result))
|
||||
throw new Exception($"Неверный статус ЭК {source.Status}");
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using AutoMapper;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.AIHIT;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PARR.AIHIT.MappingProfiles.Resolvers
|
||||
{
|
||||
internal class ResponseAreaCodeResolver : IValueResolver<RawDataEK, Host, int>
|
||||
{
|
||||
public int Resolve(RawDataEK source, Host destination, int destMember, ResolutionContext context)
|
||||
{
|
||||
var pattern = "\\d+";
|
||||
var regex = new Regex(pattern);
|
||||
|
||||
int.TryParse(regex.Match(source.ResponseArea!).Value, out int result);
|
||||
|
||||
if (result == 0)
|
||||
return (int)ResponseAreaEnum.gvc;
|
||||
|
||||
if (!Enum.IsDefined(typeof(ResponseAreaEnum), result))
|
||||
throw new Exception($"Неверный код дороги {source.ResponseArea}");
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -217,37 +217,45 @@ namespace PARR.AIHIT
|
||||
var respAreas = await settingService.Get()
|
||||
.Where(ra => ra.Group == AIHTITSettings.RespAreaGroupName)
|
||||
.ToListAsync();
|
||||
|
||||
#if !DEBUG
|
||||
//Запускаем хранимую процедуру в АИХ ИТ и складываем в таблицу RawDataEKs, предварительно почистив старые данные
|
||||
//foreach (var respArea in respAreas)
|
||||
//{
|
||||
// var eksFromAIHIT = aihitService.GetEKList(respArea.Value)?.ToList();
|
||||
foreach (var respArea in respAreas)
|
||||
{
|
||||
var eksFromAIHIT = aihitService.GetEKList(respArea.Value)?.ToList();
|
||||
|
||||
// if (eksFromAIHIT == null)
|
||||
// continue;
|
||||
if (eksFromAIHIT == null)
|
||||
continue;
|
||||
|
||||
// //Удаляем текущие данные по зоне ответственности respArea
|
||||
// var toDelete = rawDataEKService.Get().Where(rd => rd.ResponseArea == respArea.Value).ToList();
|
||||
// toDelete.ForEach(d => rawDataEKService.Delete(d));
|
||||
//Удаляем текущие данные по зоне ответственности respArea
|
||||
var toDelete = rawDataEKService.Get().Where(rd => rd.ResponseArea == respArea.Value).ToList();
|
||||
toDelete.ForEach(d => rawDataEKService.Delete(d));
|
||||
if(!await rawDataEKService.CommitAsync())
|
||||
{
|
||||
logger.LogError($"Не удалось создать удалить записи в rawDataEK зоны ответственности {respArea.Name}");
|
||||
continue;
|
||||
}
|
||||
|
||||
// foreach (var ek in eksFromAIHIT)
|
||||
// {
|
||||
// // создаем
|
||||
// var mappedEK = mapper.Map<RawDataEK>(ek);
|
||||
foreach (var ek in eksFromAIHIT)
|
||||
{
|
||||
// создаем
|
||||
var mappedEK = mapper.Map<RawDataEK>(ek);
|
||||
|
||||
// mappedEK.Id = Guid.NewGuid();
|
||||
// mappedEK.DateCreated = DateTimeOffset.UtcNow;
|
||||
|
||||
// if (!await rawDataEKService.CreateAsync(mappedEK) || !await rawDataEKService.CommitAsync())
|
||||
// {
|
||||
// logger.LogError($"Не удалось создать запись rawDataEK {mappedEK.ShortName}({mappedEK.IP})");
|
||||
// continue;
|
||||
// }
|
||||
// else
|
||||
// logger.LogInformation($"----- Создана запись rawDataEK {mappedEK.ShortName}({mappedEK.IP}) -----");
|
||||
// }
|
||||
//}
|
||||
mappedEK.Id = Guid.NewGuid();
|
||||
mappedEK.DateCreated = DateTimeOffset.UtcNow;
|
||||
|
||||
//if (!await rawDataEKService.CreateAsync(mappedEK) || !await rawDataEKService.CommitAsync())
|
||||
if (!await rawDataEKService.CreateAsync(mappedEK))
|
||||
{
|
||||
logger.LogError($"Не удалось создать запись rawDataEK {mappedEK.ShortName}({mappedEK.IP})");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
logger.LogInformation($"----- Создана запись rawDataEK {mappedEK.ShortName}({mappedEK.IP}), зона ответственности {respArea.Name} -----");
|
||||
}
|
||||
if (await rawDataEKService.CommitAsync())
|
||||
logger.LogError($"Информация о хостах зоны ответственности {respArea.Name} не записана ");
|
||||
}
|
||||
#endif
|
||||
//Разбираем сырые данные
|
||||
|
||||
//Получаем интересующие статусы ЭК
|
||||
@@ -293,9 +301,9 @@ namespace PARR.AIHIT
|
||||
{
|
||||
// обновляем
|
||||
var isChanged = false;
|
||||
if (!foundHost.Status!.Equals(mappedHost.Status))
|
||||
if (!foundHost.EkStatusCode!.Equals(mappedHost.EkStatusCode))
|
||||
{
|
||||
foundHost.Status = mappedHost.Status;
|
||||
foundHost.EkStatusCode = mappedHost.EkStatusCode;
|
||||
isChanged = true;
|
||||
}
|
||||
else if (mappedHost.WorkGroup != null && !foundHost.WorkGroup!.Equals(mappedHost.WorkGroup))
|
||||
|
||||
Reference in New Issue
Block a user