Add field type conversion

This commit is contained in:
2025-08-14 12:23:01 +09:00
parent c6c1b31575
commit aec09fdbe0
6 changed files with 38 additions and 37 deletions

View File

@ -2,5 +2,7 @@
{ {
public class ГисПолеЭлементаСправочника public class ГисПолеЭлементаСправочника
{ {
public string наименование;
public string значение;
} }
} }

View File

@ -1,17 +1,11 @@
using Newtonsoft.Json; using System;
using System;
namespace Hcs.ClientApi.DataTypes namespace Hcs.ClientApi.DataTypes
{ {
public class ГисСправочник public class ГисСправочник
{ {
public string РеестровыйНомер; public string реестровыйНомер;
public DateTime ДатаФормирования; public DateTime датаФормирования;
public ГисЭлементСправочника[] Элементы; public ГисЭлементСправочника[] элементы;
public string ToJSON()
{
return JsonConvert.SerializeObject(this);
}
} }
} }

View File

@ -4,12 +4,10 @@ namespace Hcs.ClientApi.DataTypes
{ {
public class ГисЭлементСправочника public class ГисЭлементСправочника
{ {
public string Код; public string код;
public Guid Гуид; public Guid гуид;
public bool Актуальный; public bool актуальный;
// TODO: Добавить конвертацию типов public ГисПолеЭлементаСправочника[] поля;
//public ГисПолеЭлементаСправочника[] Поля; public ГисЭлементСправочника[] элементы;
public Hcs.Service.Async.Nsi.v15_7_0_1.NsiElementFieldType[] Поля;
public ГисЭлементСправочника[] Элементы;
} }
} }

View File

@ -74,9 +74,9 @@ namespace Hcs.ClientApi.NsiApi
{ {
var справочник = new ГисСправочник() var справочник = new ГисСправочник()
{ {
РеестровыйНомер = input.NsiItemRegistryNumber, реестровыйНомер = input.NsiItemRegistryNumber,
ДатаФормирования = input.Created, датаФормирования = input.Created,
Элементы = AdoptNsiElementTypes(input.NsiElement) элементы = AdoptNsiElementTypes(input.NsiElement)
}; };
return справочник; return справочник;
@ -87,21 +87,26 @@ namespace Hcs.ClientApi.NsiApi
var элементыСправочника = new List<ГисЭлементСправочника>(); var элементыСправочника = new List<ГисЭлементСправочника>();
foreach (var element in input) foreach (var element in input)
{ {
// TODO: Добавить конвертацию типов var поляЭлементаСправочника = new List<ГисПолеЭлементаСправочника>();
//var поляЭлементаСправочника = new List<ГисПолеЭлементаСправочника>(); foreach (var field in element.NsiElementField)
//foreach (var field in element.NsiElementField) {
//{ CallOnType<Nsi.NsiElementStringFieldType>(field, x =>
//} {
поляЭлементаСправочника.Add(new ГисПолеЭлементаСправочника()
{
наименование = x.Name,
значение = x.Value
});
});
}
элементыСправочника.Add(new ГисЭлементСправочника() элементыСправочника.Add(new ГисЭлементСправочника()
{ {
Код = element.Code, код = element.Code,
Гуид = ParseGuid(element.GUID), гуид = ParseGuid(element.GUID),
Актуальный = element.IsActual, актуальный = element.IsActual,
// TODO: Добавить конвертацию типов поля = [.. поляЭлементаСправочника],
//Поля = [.. поляЭлементаСправочника] элементы = element.ChildElement.Length > 0 ? AdoptNsiElementTypes(element.ChildElement) : null
Поля = element.NsiElementField,
Элементы = element.ChildElement.Length > 0 ? AdoptNsiElementTypes(element.ChildElement) : null
}); });
} }
return [.. элементыСправочника]; return [.. элементыСправочника];

View File

@ -1,5 +1,7 @@
using Hcs.ClientApi; using Hcs.ClientApi;
using Newtonsoft.Json;
using System; using System;
using System.Windows.Forms;
namespace Hcs.ClientDemo namespace Hcs.ClientDemo
{ {
@ -8,11 +10,10 @@ namespace Hcs.ClientDemo
public static void DemoExportNsiItem51(HcsClient client) public static void DemoExportNsiItem51(HcsClient client)
{ {
var result = client.Nsi.GetNsiItem(51).Result; var result = client.Nsi.GetNsiItem(51).Result;
Console.WriteLine($"Результат операции:\r\n"); var json = JsonConvert.SerializeObject(result);
foreach (var obj in result) Clipboard.SetText(json);
{
Console.WriteLine(obj.ToJSON()); Console.WriteLine($"Результат скопирован в буфер обмена!\r\n");
}
} }
} }
} }

View File

@ -65,6 +65,7 @@
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Windows.Forms" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ClientDemo\DebtRequestsDemo.cs" /> <Compile Include="ClientDemo\DebtRequestsDemo.cs" />