From 9af1337075f6f03211b253106d70a5450de5a74e Mon Sep 17 00:00:00 2001 From: ypermitin Date: Fri, 17 Nov 2023 22:36:29 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Исправлены опечатки в сообщениях об ошибках. - Добавлена возможность не указывать явно список регионов для загрукзи в файле конфигурации. Тогда будут загружены все регионы. - Улучшена обработка ошибки, если по регион нет данных в архиве дистрибутива ФИАС. Загрузка данных продолжится по другим регионам. --- .../FIASDistributionLoader.cs | 2 +- .../JobItems/InstallAndUpdateFIASJob.cs | 43 ++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs b/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs index b37297d..3105271 100644 --- a/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs +++ b/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs @@ -199,7 +199,7 @@ public string ExtractDataForRegion(Region region) if (regionItem == null) { throw new RegionNotFoundException( - $"Не найден регион с кодом \"{region}\" среди достпных регионов в дистрибутиве ФИАС.", + $"Не найден регион с кодом \"{region.Code}\" среди доступных регионов в дистрибутиве ФИАС.", region.ToString()); } diff --git a/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs b/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs index f21707a..8c6d683 100644 --- a/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs +++ b/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs @@ -4,6 +4,7 @@ using Quartz; using YPermitin.FIASToolSet.DistributionBrowser.Models; using YPermitin.FIASToolSet.DistributionLoader; +using YPermitin.FIASToolSet.DistributionLoader.Exceptions; namespace YPermitin.FIASToolSet.Jobs.JobItems; @@ -32,14 +33,22 @@ public InstallAndUpdateFIASJob( _configuration = configuration; _workingDirectory = _configuration.GetValue("FIASToolSet:WorkingDirectory", string.Empty); - - _availableRegions = _configuration + + var availableRegionsAsStrings = _configuration .GetSection("FIASToolSet:Regions") - .Get>() - .DefaultIfEmpty() - .Where(e => int.TryParse(e, out _)) - .Select(int.Parse) - .ToList(); + .Get>(); + if (availableRegionsAsStrings == null || availableRegionsAsStrings.Count == 0) + { + _availableRegions = new List(); + } + else + { + _availableRegions = availableRegionsAsStrings + .DefaultIfEmpty() + .Where(e => int.TryParse(e, out _)) + .Select(int.Parse) + .ToList(); + } _removeArchiveDistributionFiles = _configuration.GetValue("FIASToolSet:ClearTempDistributionFiles:RemoveArchiveDistributionFiles", false); @@ -129,11 +138,25 @@ await loader.DownloadAndExtractDistribution(args => await loader.LoadNormativeDocKinds(); await loader.LoadNormativeDocTypes(); - var availableRegions = loader.GetAvailableRegions() - .Where(e => _availableRegions.Contains(e.Code)); + var availableRegions = loader.GetAvailableRegions(); + if (_availableRegions.Count > 0) + { + availableRegions = availableRegions + .Where(e => _availableRegions.Contains(e.Code)) + .ToList(); + } + foreach (var availableRegion in availableRegions) { - loader.ExtractDataForRegion(availableRegion); + try + { + loader.ExtractDataForRegion(availableRegion); + } + catch (RegionNotFoundException) + { + _logger.LogError($"Не найден регион с кодом ${availableRegion.Code} среди доступных регионов в дистрибутиве ФИАС. Загрузка пропущена."); + continue; + } await loader.LoadNormativeDocuments(availableRegion); await loader.LoadAddressObjects(availableRegion);