feat(dal, aihitSyncer, aihitLoader): добавлена ЗО для РГ. Обновлён список ЗО. Обновлена синхронизация из АИХИТ.
This commit is contained in:
@@ -84,6 +84,9 @@ namespace PARR.AIHITSyncer.Services
|
||||
{
|
||||
var id = Guid.NewGuid();
|
||||
|
||||
int responseAreaCode = GetResponseAreaCodeFromStr(objFromQuery.ResponseArea) ?? 0;
|
||||
if (responseAreaCode == 0)
|
||||
return null;
|
||||
|
||||
var host = new Host
|
||||
{
|
||||
@@ -92,8 +95,9 @@ namespace PARR.AIHITSyncer.Services
|
||||
IP = objFromQuery.IP,
|
||||
EkStatusCode = ResolveCode(objFromQuery.Status),
|
||||
//WorkGroup = objFromQuery.WorkGroup,
|
||||
WorkGroup = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup),
|
||||
ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea))
|
||||
WorkGroup = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup, objFromQuery.WorkGroupResponseArea),
|
||||
// ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea))
|
||||
ResponseAreaCode = responseAreaCode
|
||||
};
|
||||
|
||||
if (!await hostService.CreateAsync(host) || !await hostService.CommitAsync())
|
||||
@@ -106,18 +110,41 @@ namespace PARR.AIHITSyncer.Services
|
||||
return await hostService.GetHostWithAppsByEkAsync(host.Ek);
|
||||
}
|
||||
|
||||
private async Task<WorkGroup?> CreateWorkGroupIfNotExistAsync(string? workGroupName)
|
||||
private async Task<WorkGroup?> CreateWorkGroupIfNotExistAsync(string? workGroupName, string wgResponseArea)
|
||||
{
|
||||
if (string.IsNullOrEmpty(workGroupName) || string.IsNullOrWhiteSpace(workGroupName)) return null;
|
||||
if (string.IsNullOrEmpty(workGroupName) || string.IsNullOrWhiteSpace(workGroupName))
|
||||
return null;
|
||||
|
||||
if (string.IsNullOrEmpty(wgResponseArea) || string.IsNullOrWhiteSpace(wgResponseArea))
|
||||
return null;
|
||||
|
||||
int wgCode = GetResponseAreaCodeFromStr(wgResponseArea) ?? 0;
|
||||
if (wgCode == 0)
|
||||
return null;
|
||||
|
||||
var existWorkGroup = await workGroupService.GetByNameAsync(workGroupName);
|
||||
if (existWorkGroup != null)
|
||||
{
|
||||
//проверяем, соответствует ли рабочая группа
|
||||
if (existWorkGroup.ResponseAreaCode != wgCode)
|
||||
{
|
||||
logger.LogDebug($"У рабочей группы {existWorkGroup.Name} не совпадают ЗО, обновляем, текущее значение: {existWorkGroup.ResponseAreaCode}, новое: {wgCode}");
|
||||
existWorkGroup.ResponseAreaCode = wgCode;
|
||||
if (!await workGroupService.CommitAsync())
|
||||
{
|
||||
logger.LogError($"Ошибка при обновлении ЗО рабочей группы {existWorkGroup.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
return existWorkGroup;
|
||||
}
|
||||
|
||||
|
||||
var workGroup = new WorkGroup
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workGroupName.Trim(),
|
||||
ResponseAreaCode = wgCode
|
||||
};
|
||||
|
||||
if (!await workGroupService.CreateAsync(workGroup) || !await workGroupService.CommitAsync())
|
||||
@@ -151,14 +178,21 @@ namespace PARR.AIHITSyncer.Services
|
||||
|
||||
if (objFromQuery.WorkGroup != null && (host.WorkGroup == null || !host.WorkGroup!.Name.Equals(objFromQuery.WorkGroup)))
|
||||
{
|
||||
host.WorkGroup = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup);
|
||||
host.WorkGroup = await CreateWorkGroupIfNotExistAsync(objFromQuery.WorkGroup, objFromQuery.WorkGroupResponseArea);
|
||||
isChanged = true;
|
||||
}
|
||||
|
||||
int responseAreaCode = GetResponseAreaCodeFromStr(objFromQuery.ResponseArea) ?? 0;
|
||||
if (responseAreaCode == 0) {
|
||||
logger.LogWarning($"Ошибка при получении ЗО хоста: {objFromQuery.EK}, ЗО: {objFromQuery.ResponseArea}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (host.ResponseAreaCode != ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea)))
|
||||
//if (host.ResponseAreaCode != ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea)))
|
||||
if (host.ResponseAreaCode != responseAreaCode)
|
||||
{//TODO Возможно проще выгружать с помощью INCLUDE зону ответственности и сравнивать string
|
||||
host.ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea));
|
||||
//host.ResponseAreaCode = ((ResolveCode(objFromQuery.ResponseArea) == 0) ? 99 : ResolveCode(objFromQuery.ResponseArea));
|
||||
host.ResponseAreaCode = responseAreaCode;
|
||||
isChanged = true;
|
||||
}
|
||||
if (isChanged)
|
||||
@@ -389,6 +423,23 @@ namespace PARR.AIHITSyncer.Services
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private int? GetResponseAreaCodeFromStr(string responseAreaStr)
|
||||
{
|
||||
if (string.IsNullOrEmpty(responseAreaStr) || string.IsNullOrWhiteSpace(responseAreaStr))
|
||||
return null;
|
||||
|
||||
if (responseAreaStr.ToUpper().Trim() == "ОБЩЕЕ")
|
||||
return (int)ResponseAreaEnum.general;
|
||||
|
||||
if (responseAreaStr.ToUpper().Trim() == "00-ГВЦ")
|
||||
return (int)ResponseAreaEnum.gvc;
|
||||
|
||||
return ResolveCode(responseAreaStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private async Task GetAppTypesAsync()
|
||||
{
|
||||
if (AppTypes == null || AppTypes.Count == 0)
|
||||
|
||||
Reference in New Issue
Block a user