From aec09fdbe0d240c593a3b19df55973de33306d29 Mon Sep 17 00:00:00 2001 From: "HOME-LAPTOP\\kshkulev" Date: Thu, 14 Aug 2025 12:23:01 +0900 Subject: [PATCH] Add field type conversion --- .../DataTypes/ГисПолеЭлементаСправочника.cs | 2 ++ .../ClientApi/DataTypes/ГисСправочник.cs | 14 +++----- .../DataTypes/ГисЭлементСправочника.cs | 12 +++---- .../ClientApi/NsiApi/HcsMethodExportNsi.cs | 35 +++++++++++-------- Hcs.TestApp/ClientDemo/NsiDemo.cs | 11 +++--- Hcs.TestApp/Hcs.TestApp.csproj | 1 + 6 files changed, 38 insertions(+), 37 deletions(-) diff --git a/Hcs.Client/ClientApi/DataTypes/ГисПолеЭлементаСправочника.cs b/Hcs.Client/ClientApi/DataTypes/ГисПолеЭлементаСправочника.cs index 9e8af23..e57471b 100644 --- a/Hcs.Client/ClientApi/DataTypes/ГисПолеЭлементаСправочника.cs +++ b/Hcs.Client/ClientApi/DataTypes/ГисПолеЭлементаСправочника.cs @@ -2,5 +2,7 @@ { public class ГисПолеЭлементаСправочника { + public string наименование; + public string значение; } } diff --git a/Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs b/Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs index 88274f5..66c1813 100644 --- a/Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs +++ b/Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs @@ -1,17 +1,11 @@ -using Newtonsoft.Json; -using System; +using System; namespace Hcs.ClientApi.DataTypes { public class ГисСправочник { - public string РеестровыйНомер; - public DateTime ДатаФормирования; - public ГисЭлементСправочника[] Элементы; - - public string ToJSON() - { - return JsonConvert.SerializeObject(this); - } + public string реестровыйНомер; + public DateTime датаФормирования; + public ГисЭлементСправочника[] элементы; } } diff --git a/Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs b/Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs index 54a8b6d..b7a0992 100644 --- a/Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs +++ b/Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs @@ -4,12 +4,10 @@ namespace Hcs.ClientApi.DataTypes { public class ГисЭлементСправочника { - public string Код; - public Guid Гуид; - public bool Актуальный; - // TODO: Добавить конвертацию типов - //public ГисПолеЭлементаСправочника[] Поля; - public Hcs.Service.Async.Nsi.v15_7_0_1.NsiElementFieldType[] Поля; - public ГисЭлементСправочника[] Элементы; + public string код; + public Guid гуид; + public bool актуальный; + public ГисПолеЭлементаСправочника[] поля; + public ГисЭлементСправочника[] элементы; } } diff --git a/Hcs.Client/ClientApi/NsiApi/HcsMethodExportNsi.cs b/Hcs.Client/ClientApi/NsiApi/HcsMethodExportNsi.cs index 26ab5b7..bd3c702 100644 --- a/Hcs.Client/ClientApi/NsiApi/HcsMethodExportNsi.cs +++ b/Hcs.Client/ClientApi/NsiApi/HcsMethodExportNsi.cs @@ -74,9 +74,9 @@ namespace Hcs.ClientApi.NsiApi { var справочник = new ГисСправочник() { - РеестровыйНомер = input.NsiItemRegistryNumber, - ДатаФормирования = input.Created, - Элементы = AdoptNsiElementTypes(input.NsiElement) + реестровыйНомер = input.NsiItemRegistryNumber, + датаФормирования = input.Created, + элементы = AdoptNsiElementTypes(input.NsiElement) }; return справочник; @@ -87,21 +87,26 @@ namespace Hcs.ClientApi.NsiApi var элементыСправочника = new List<ГисЭлементСправочника>(); foreach (var element in input) { - // TODO: Добавить конвертацию типов - //var поляЭлементаСправочника = new List<ГисПолеЭлементаСправочника>(); - //foreach (var field in element.NsiElementField) - //{ - //} + var поляЭлементаСправочника = new List<ГисПолеЭлементаСправочника>(); + foreach (var field in element.NsiElementField) + { + CallOnType(field, x => + { + поляЭлементаСправочника.Add(new ГисПолеЭлементаСправочника() + { + наименование = x.Name, + значение = x.Value + }); + }); + } элементыСправочника.Add(new ГисЭлементСправочника() { - Код = element.Code, - Гуид = ParseGuid(element.GUID), - Актуальный = element.IsActual, - // TODO: Добавить конвертацию типов - //Поля = [.. поляЭлементаСправочника] - Поля = element.NsiElementField, - Элементы = element.ChildElement.Length > 0 ? AdoptNsiElementTypes(element.ChildElement) : null + код = element.Code, + гуид = ParseGuid(element.GUID), + актуальный = element.IsActual, + поля = [.. поляЭлементаСправочника], + элементы = element.ChildElement.Length > 0 ? AdoptNsiElementTypes(element.ChildElement) : null }); } return [.. элементыСправочника]; diff --git a/Hcs.TestApp/ClientDemo/NsiDemo.cs b/Hcs.TestApp/ClientDemo/NsiDemo.cs index 64bd95f..c86bc5f 100644 --- a/Hcs.TestApp/ClientDemo/NsiDemo.cs +++ b/Hcs.TestApp/ClientDemo/NsiDemo.cs @@ -1,5 +1,7 @@ using Hcs.ClientApi; +using Newtonsoft.Json; using System; +using System.Windows.Forms; namespace Hcs.ClientDemo { @@ -8,11 +10,10 @@ namespace Hcs.ClientDemo public static void DemoExportNsiItem51(HcsClient client) { var result = client.Nsi.GetNsiItem(51).Result; - Console.WriteLine($"Результат операции:\r\n"); - foreach (var obj in result) - { - Console.WriteLine(obj.ToJSON()); - } + var json = JsonConvert.SerializeObject(result); + Clipboard.SetText(json); + + Console.WriteLine($"Результат скопирован в буфер обмена!\r\n"); } } } diff --git a/Hcs.TestApp/Hcs.TestApp.csproj b/Hcs.TestApp/Hcs.TestApp.csproj index 21a8f56..00880de 100644 --- a/Hcs.TestApp/Hcs.TestApp.csproj +++ b/Hcs.TestApp/Hcs.TestApp.csproj @@ -65,6 +65,7 @@ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll +