feat(aihitSyncer): добавлена синхронизация объекта WorkGroup

This commit is contained in:
Mikhail Kuznetsov
2024-06-04 11:00:14 +10:00
parent 90948108c1
commit 18dbca988a
3 changed files with 78 additions and 41 deletions

View File

@@ -18,6 +18,7 @@ namespace PARR.AIHITSyncer.Services
private readonly IApplicationInHostService appInHostService; private readonly IApplicationInHostService appInHostService;
private readonly IApplicationTypeService appTypeService; private readonly IApplicationTypeService appTypeService;
private readonly ITransformService transformService; private readonly ITransformService transformService;
private readonly IWorkGroupService workGroupService;
public List<ApplicationType> AppTypes { get; private set; } = new List<ApplicationType>(); public List<ApplicationType> AppTypes { get; private set; } = new List<ApplicationType>();
@@ -27,7 +28,8 @@ namespace PARR.AIHITSyncer.Services
IApplicationService appService, IApplicationService appService,
IApplicationInHostService appInHostService, IApplicationInHostService appInHostService,
IApplicationTypeService appTypeService, IApplicationTypeService appTypeService,
ITransformService transformService ITransformService transformService,
IWorkGroupService workGroupService
) )
{ {
this.logger = logger; this.logger = logger;
@@ -36,6 +38,7 @@ namespace PARR.AIHITSyncer.Services
this.appInHostService = appInHostService; this.appInHostService = appInHostService;
this.appTypeService = appTypeService; this.appTypeService = appTypeService;
this.transformService = transformService; this.transformService = transformService;
this.workGroupService = workGroupService;
} }
@@ -80,14 +83,17 @@ namespace PARR.AIHITSyncer.Services
private async Task<Host?> CreateHostAsync(AihitDataMq objFromQuery) private async Task<Host?> CreateHostAsync(AihitDataMq objFromQuery)
{ {
var id = Guid.NewGuid(); var id = Guid.NewGuid();
var host = new Host var host = new Host
{ {
Id = id, Id = id,
Ek = objFromQuery.EK, Ek = objFromQuery.EK,
IP = objFromQuery.IP, IP = objFromQuery.IP,
EkStatusCode = ResolveCode(objFromQuery.Status), EkStatusCode = ResolveCode(objFromQuery.Status),
WorkGroup = objFromQuery.WorkGroup, //WorkGroup = objFromQuery.WorkGroup,
ResponseAreaCode = ResolveCode(objFromQuery.ResponseArea) WorkGroupItem = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup),
ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea))
}; };
if (!await hostService.CreateAsync(host) || !await hostService.CommitAsync()) if (!await hostService.CreateAsync(host) || !await hostService.CommitAsync())
@@ -100,6 +106,28 @@ namespace PARR.AIHITSyncer.Services
return await hostService.GetHostWithAppsByEkAsync(host.Ek); return await hostService.GetHostWithAppsByEkAsync(host.Ek);
} }
private async Task<WorkGroup?> CreateWorkGroupIfNotExistAsync(string? workGroupName)
{
if (string.IsNullOrEmpty(workGroupName) || string.IsNullOrWhiteSpace(workGroupName)) return null;
var existWorkGroup = await workGroupService.GetByNameAsync(workGroupName);
if (existWorkGroup != null)
return existWorkGroup;
var workGroup = new WorkGroup
{
Id = Guid.NewGuid(),
Name = workGroupName.Trim(),
};
if (!await workGroupService.CreateAsync(workGroup) || !await workGroupService.CommitAsync())
logger.LogError($"Не удалось создать запись в таблице WorkGroups: {workGroupName}, {workGroup.ToJson()}");
else
logger.LogInformation($"Создана запись а таблице WorkGroups: {workGroupName}, {workGroup.ToJson()}");
return await workGroupService.GetAsync(workGroup.Id); ;
}
private async Task SyncHostFieldsAsync(Host host, AihitDataMq objFromQuery) private async Task SyncHostFieldsAsync(Host host, AihitDataMq objFromQuery)
{ {
@@ -114,11 +142,20 @@ namespace PARR.AIHITSyncer.Services
host.EkStatusCode = ResolveCode(objFromQuery.Status); host.EkStatusCode = ResolveCode(objFromQuery.Status);
isChanged = true; isChanged = true;
} }
if (objFromQuery.WorkGroup != null && (host.WorkGroup == null || !host.WorkGroup!.Equals(objFromQuery.WorkGroup))) //TODO Удалить после перехода на самостоятельный объект WorkGroup
//if (objFromQuery.WorkGroup != null && (host.WorkGroup == null || !host.WorkGroup!.Equals(objFromQuery.WorkGroup)))
//{
// host.WorkGroup = objFromQuery.WorkGroup;
// isChanged = true;
//}
if (objFromQuery.WorkGroup != null && (host.WorkGroupItem == null || !host.WorkGroupItem!.Name.Equals(objFromQuery.WorkGroup)))
{ {
host.WorkGroup = objFromQuery.WorkGroup; host.WorkGroupItem = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup);
isChanged = true; isChanged = true;
} }
if (host.ResponseAreaCode != ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea))) if (host.ResponseAreaCode != ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea)))
{//TODO Возможно проще выгружать с помощью INCLUDE зону ответственности и сравнивать string {//TODO Возможно проще выгружать с помощью INCLUDE зону ответственности и сравнивать string
host.ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea)); host.ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea));
@@ -217,7 +254,7 @@ namespace PARR.AIHITSyncer.Services
{ {
var regex = new Regex("\\([^)]*\\)"); var regex = new Regex("\\([^)]*\\)");
if (regex.IsMatch(appStr)) if (regex.IsMatch(appStr))
foreach (var parenthesis in regex.Matches(appStr)) foreach (var parenthesis in regex.Matches(appStr))
{ {
if (!string.IsNullOrEmpty(parenthesis.ToString())) if (!string.IsNullOrEmpty(parenthesis.ToString()))
@@ -226,7 +263,7 @@ namespace PARR.AIHITSyncer.Services
appStr = appStr.Replace(parenthesis!.ToString()!, newParenthesis); appStr = appStr.Replace(parenthesis!.ToString()!, newParenthesis);
} }
} }
return appStr.Split(new char[] { ',', ';' }).Select(a => a.Replace("<|>", ",")).Distinct().ToList(); return appStr.Split(new char[] { ',', ';' }).Select(a => a.Replace("<|>", ",")).Distinct().ToList();
} }

View File

@@ -51,7 +51,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId"); b.HasIndex("TemplateId");
b.ToTable("AgentHistories"); b.ToTable("AgentHistories", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.AgentHistoryLevel", b => modelBuilder.Entity("PARR.DAL.Models.AgentHistoryLevel", b =>
@@ -72,7 +72,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("AgentHistoryLevels"); b.ToTable("AgentHistoryLevels", (string)null);
b.HasData( b.HasData(
new new
@@ -101,7 +101,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("WorkGroupId"); b.HasIndex("WorkGroupId");
b.ToTable("AppInWorkInWorkGroups"); b.ToTable("AppInWorkInWorkGroups", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.Application", b => modelBuilder.Entity("PARR.DAL.Models.Application", b =>
@@ -130,7 +130,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Name", "ApplicationTypeId") b.HasIndex("Name", "ApplicationTypeId")
.IsUnique(); .IsUnique();
b.ToTable("Applications"); b.ToTable("Applications", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b => modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b =>
@@ -157,7 +157,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("HostId"); b.HasIndex("HostId");
b.ToTable("ApplicationsInHost"); b.ToTable("ApplicationsInHost", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b => modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
@@ -181,7 +181,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("ApplicationTypes"); b.ToTable("ApplicationTypes", (string)null);
b.HasData( b.HasData(
new new
@@ -294,7 +294,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("WorkId", "ApplicationId") b.HasIndex("WorkId", "ApplicationId")
.IsUnique(); .IsUnique();
b.ToTable("ApplicationsInWorks"); b.ToTable("ApplicationsInWorks", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.EkStatus", b => modelBuilder.Entity("PARR.DAL.Models.EkStatus", b =>
@@ -311,7 +311,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code"); b.HasKey("Code");
b.ToTable("EkStatuses"); b.ToTable("EkStatuses", (string)null);
b.HasData( b.HasData(
new new
@@ -374,7 +374,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("EsppSchTypes"); b.ToTable("EsppSchTypes", (string)null);
b.HasData( b.HasData(
new new
@@ -443,7 +443,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeScheduleId", "TypeId") b.HasIndex("TypeScheduleId", "TypeId")
.IsUnique(); .IsUnique();
b.ToTable("EsppSchTypeConfigs"); b.ToTable("EsppSchTypeConfigs", (string)null);
b.HasData( b.HasData(
new new
@@ -546,7 +546,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("EsppSchTypeSchedules"); b.ToTable("EsppSchTypeSchedules", (string)null);
b.HasData( b.HasData(
new new
@@ -614,7 +614,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeId"); b.HasIndex("TypeId");
b.ToTable("EsppSchTypeValues"); b.ToTable("EsppSchTypeValues", (string)null);
b.HasData( b.HasData(
new new
@@ -1383,7 +1383,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeValueId"); b.HasIndex("TypeValueId");
b.ToTable("EsppSchValues"); b.ToTable("EsppSchValues", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.Host", b => modelBuilder.Entity("PARR.DAL.Models.Host", b =>
@@ -1430,7 +1430,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Ek", "IP"); b.HasIndex("Ek", "IP");
b.ToTable("Hosts"); b.ToTable("Hosts", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.Order", b => modelBuilder.Entity("PARR.DAL.Models.Order", b =>
@@ -1482,7 +1482,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId"); b.HasIndex("TemplateId");
b.ToTable("Orders"); b.ToTable("Orders", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.OrderStatus", b => modelBuilder.Entity("PARR.DAL.Models.OrderStatus", b =>
@@ -1503,7 +1503,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code"); b.HasKey("Code");
b.ToTable("OrderStatuses"); b.ToTable("OrderStatuses", (string)null);
b.HasData( b.HasData(
new new
@@ -1562,7 +1562,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("EsppId") b.HasIndex("EsppId")
.IsUnique(); .IsUnique();
b.ToTable("Processes"); b.ToTable("Processes", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.ResponseArea", b => modelBuilder.Entity("PARR.DAL.Models.ResponseArea", b =>
@@ -1579,7 +1579,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code"); b.HasKey("Code");
b.ToTable("ResponseAreas"); b.ToTable("ResponseAreas", (string)null);
b.HasData( b.HasData(
new new
@@ -1690,7 +1690,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Name") b.HasIndex("Name")
.IsUnique(); .IsUnique();
b.ToTable("Robots"); b.ToTable("Robots", (string)null);
b.HasData( b.HasData(
new new
@@ -1745,7 +1745,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId", "RobotCode") b.HasIndex("TemplateId", "RobotCode")
.IsUnique(); .IsUnique();
b.ToTable("RobotConfigurations"); b.ToTable("RobotConfigurations", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.RobotHistory", b => modelBuilder.Entity("PARR.DAL.Models.RobotHistory", b =>
@@ -1780,7 +1780,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TaskStatusCode"); b.HasIndex("TaskStatusCode");
b.ToTable("RobotHistories"); b.ToTable("RobotHistories", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b => modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b =>
@@ -1801,7 +1801,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Level"); b.HasKey("Level");
b.ToTable("RobotHistoryLevels"); b.ToTable("RobotHistoryLevels", (string)null);
b.HasData( b.HasData(
new new
@@ -1848,7 +1848,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code"); b.HasKey("Code");
b.ToTable("RobotStatuses"); b.ToTable("RobotStatuses", (string)null);
b.HasData( b.HasData(
new new
@@ -1896,7 +1896,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("Roles"); b.ToTable("Roles", (string)null);
b.HasData( b.HasData(
new new
@@ -1930,7 +1930,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Name"); b.HasKey("Name");
b.ToTable("Settings"); b.ToTable("Settings", (string)null);
b.HasData( b.HasData(
new new
@@ -2024,7 +2024,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("ProcessId"); b.HasIndex("ProcessId");
b.ToTable("Subprocesses"); b.ToTable("Subprocesses", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.TaskStatus", b => modelBuilder.Entity("PARR.DAL.Models.TaskStatus", b =>
@@ -2045,7 +2045,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code"); b.HasKey("Code");
b.ToTable("TaskStatuses"); b.ToTable("TaskStatuses", (string)null);
b.HasData( b.HasData(
new new
@@ -2108,7 +2108,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Name") b.HasIndex("Name")
.IsUnique(); .IsUnique();
b.ToTable("Templates"); b.ToTable("Templates", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.Tnk", b => modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
@@ -2140,7 +2140,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("SubprocessId"); b.HasIndex("SubprocessId");
b.ToTable("Tnks"); b.ToTable("Tnks", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.User", b => modelBuilder.Entity("PARR.DAL.Models.User", b =>
@@ -2171,7 +2171,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Ip") b.HasIndex("Ip")
.IsUnique(); .IsUnique();
b.ToTable("Users"); b.ToTable("Users", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.UsersInRole", b => modelBuilder.Entity("PARR.DAL.Models.UsersInRole", b =>
@@ -2186,7 +2186,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("UserId"); b.HasIndex("UserId");
b.ToTable("UsersInRoles"); b.ToTable("UsersInRoles", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.Work", b => modelBuilder.Entity("PARR.DAL.Models.Work", b =>
@@ -2218,7 +2218,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TnkId"); b.HasIndex("TnkId");
b.ToTable("Works"); b.ToTable("Works", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.WorkGroup", b => modelBuilder.Entity("PARR.DAL.Models.WorkGroup", b =>
@@ -2236,7 +2236,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("WorkGroups"); b.ToTable("WorkGroups", (string)null);
}); });
modelBuilder.Entity("PARR.DAL.Models.AgentHistory", b => modelBuilder.Entity("PARR.DAL.Models.AgentHistory", b =>

View File

@@ -16,7 +16,7 @@ namespace PARR.DAL.Models
public DateTimeOffset? DateModified { get; set; } public DateTimeOffset? DateModified { get; set; }
public string Ek { get; set; } public required string Ek { get; set; }
public int EkStatusCode { get; set; } public int EkStatusCode { get; set; }