Add export from nsi service
This commit is contained in:
@ -0,0 +1,6 @@
|
|||||||
|
namespace Hcs.ClientApi.DataTypes
|
||||||
|
{
|
||||||
|
public class ГисПолеЭлементаСправочника
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
17
Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs
Normal file
17
Hcs.Client/ClientApi/DataTypes/ГисСправочник.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Hcs.ClientApi.DataTypes
|
||||||
|
{
|
||||||
|
public class ГисСправочник
|
||||||
|
{
|
||||||
|
public string РеестровыйНомер;
|
||||||
|
public DateTime ДатаФормирования;
|
||||||
|
public ГисЭлементСправочника[] Элементы;
|
||||||
|
|
||||||
|
public string ToJSON()
|
||||||
|
{
|
||||||
|
return JsonConvert.SerializeObject(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs
Normal file
15
Hcs.Client/ClientApi/DataTypes/ГисЭлементСправочника.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
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 ГисЭлементСправочника[] Элементы;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,8 @@
|
|||||||
using System.Threading;
|
using Hcs.ClientApi.DataTypes;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Nsi = Hcs.Service.Async.Nsi.v15_7_0_1;
|
using Nsi = Hcs.Service.Async.Nsi.v15_7_0_1;
|
||||||
@ -19,12 +23,15 @@ namespace Hcs.ClientApi.NsiApi
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Возвращает данные справочников поставщика информации
|
/// Возвращает данные справочников поставщика информации
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<object[]> GetNsiItem(int regNum, CancellationToken token)
|
/// <param name="regNum">Реестровый номер справочника</param>
|
||||||
|
/// <param name="token">Токен отмены</param>
|
||||||
|
/// <returns>Список справочников</returns>
|
||||||
|
public async Task<IEnumerable<ГисСправочник>> GetNsiItem(int regNum, CancellationToken token)
|
||||||
{
|
{
|
||||||
var request = new Nsi.exportDataProviderNsiItemRequest
|
var request = new Nsi.exportDataProviderNsiItemRequest
|
||||||
{
|
{
|
||||||
Id = HcsConstants.SignedXmlElementId,
|
Id = HcsConstants.SignedXmlElementId,
|
||||||
RegistryNumber = (Nsi.exportDataProviderNsiItemRequestRegistryNumber)regNum,
|
RegistryNumber = GetRegNumFromInt(regNum),
|
||||||
// http://open-gkh.ru/Nsi/exportDataProviderNsiItemRequest.html
|
// http://open-gkh.ru/Nsi/exportDataProviderNsiItemRequest.html
|
||||||
version = "10.0.1.2"
|
version = "10.0.1.2"
|
||||||
};
|
};
|
||||||
@ -35,7 +42,69 @@ namespace Hcs.ClientApi.NsiApi
|
|||||||
return response.AckRequest.Ack;
|
return response.AckRequest.Ack;
|
||||||
}, token);
|
}, token);
|
||||||
|
|
||||||
return stateResult.Items;
|
return stateResult.Items
|
||||||
|
.OfType<Nsi.NsiItemType>()
|
||||||
|
.Select(x => AdoptNsiItemType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Nsi.exportDataProviderNsiItemRequestRegistryNumber GetRegNumFromInt(int regNum)
|
||||||
|
{
|
||||||
|
switch (regNum)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item1;
|
||||||
|
case 51:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item51;
|
||||||
|
case 59:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item59;
|
||||||
|
case 219:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item219;
|
||||||
|
case 272:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item272;
|
||||||
|
case 302:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item302;
|
||||||
|
case 337:
|
||||||
|
return Nsi.exportDataProviderNsiItemRequestRegistryNumber.Item337;
|
||||||
|
default:
|
||||||
|
throw new NotImplementedException($"Cannot convert {regNum} to {typeof(Nsi.exportDataProviderNsiItemRequestRegistryNumber)}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ГисСправочник AdoptNsiItemType(Nsi.NsiItemType input)
|
||||||
|
{
|
||||||
|
var справочник = new ГисСправочник()
|
||||||
|
{
|
||||||
|
РеестровыйНомер = input.NsiItemRegistryNumber,
|
||||||
|
ДатаФормирования = input.Created,
|
||||||
|
Элементы = AdoptNsiElementTypes(input.NsiElement)
|
||||||
|
};
|
||||||
|
|
||||||
|
return справочник;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ГисЭлементСправочника[] AdoptNsiElementTypes(Nsi.NsiElementType[] input)
|
||||||
|
{
|
||||||
|
var элементыСправочника = new List<ГисЭлементСправочника>();
|
||||||
|
foreach (var element in input)
|
||||||
|
{
|
||||||
|
// TODO: Добавить конвертацию типов
|
||||||
|
//var поляЭлементаСправочника = new List<ГисПолеЭлементаСправочника>();
|
||||||
|
//foreach (var field in element.NsiElementField)
|
||||||
|
//{
|
||||||
|
//}
|
||||||
|
|
||||||
|
элементыСправочника.Add(new ГисЭлементСправочника()
|
||||||
|
{
|
||||||
|
Код = element.Code,
|
||||||
|
Гуид = ParseGuid(element.GUID),
|
||||||
|
Актуальный = element.IsActual,
|
||||||
|
// TODO: Добавить конвертацию типов
|
||||||
|
//Поля = [.. поляЭлементаСправочника]
|
||||||
|
Поля = element.NsiElementField,
|
||||||
|
Элементы = element.ChildElement.Length > 0 ? AdoptNsiElementTypes(element.ChildElement) : null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return [.. элементыСправочника];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
using System.Threading;
|
using Hcs.ClientApi.DataTypes;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Hcs.ClientApi.NsiApi
|
namespace Hcs.ClientApi.NsiApi
|
||||||
@ -12,7 +14,13 @@ namespace Hcs.ClientApi.NsiApi
|
|||||||
Config = config;
|
Config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<object[]> GetNsiItem(int regNum, CancellationToken token = default)
|
/// <summary>
|
||||||
|
/// Возвращает данные справочников поставщика информации
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regNum">Реестровый номер справочника</param>
|
||||||
|
/// <param name="token">Токен отмены</param>
|
||||||
|
/// <returns>Список справочников</returns>
|
||||||
|
public async Task<IEnumerable<ГисСправочник>> GetNsiItem(int regNum, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@ -73,8 +73,11 @@
|
|||||||
<Compile Include="ClientApi\DataTypes\ГисЛицевойСчет.cs" />
|
<Compile Include="ClientApi\DataTypes\ГисЛицевойСчет.cs" />
|
||||||
<Compile Include="ClientApi\DataTypes\ГисОрганизация.cs" />
|
<Compile Include="ClientApi\DataTypes\ГисОрганизация.cs" />
|
||||||
<Compile Include="ClientApi\DataTypes\ГисПоказания.cs" />
|
<Compile Include="ClientApi\DataTypes\ГисПоказания.cs" />
|
||||||
|
<Compile Include="ClientApi\DataTypes\ГисПолеЭлементаСправочника.cs" />
|
||||||
<Compile Include="ClientApi\DataTypes\ГисПомещение.cs" />
|
<Compile Include="ClientApi\DataTypes\ГисПомещение.cs" />
|
||||||
<Compile Include="ClientApi\DataTypes\ГисПриборУчета.cs" />
|
<Compile Include="ClientApi\DataTypes\ГисПриборУчета.cs" />
|
||||||
|
<Compile Include="ClientApi\DataTypes\ГисСправочник.cs" />
|
||||||
|
<Compile Include="ClientApi\DataTypes\ГисЭлементСправочника.cs" />
|
||||||
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringApi.cs" />
|
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringApi.cs" />
|
||||||
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringMethod.cs" />
|
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringMethod.cs" />
|
||||||
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringUtil.cs" />
|
<Compile Include="ClientApi\DeviceMeteringApi\HcsDeviceMeteringUtil.cs" />
|
||||||
|
|||||||
@ -5,13 +5,13 @@ namespace Hcs.ClientDemo
|
|||||||
{
|
{
|
||||||
public class NsiDemo
|
public class NsiDemo
|
||||||
{
|
{
|
||||||
public static void DemoExportNsiItem(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");
|
Console.WriteLine($"Результат операции:\r\n");
|
||||||
foreach (var obj in result)
|
foreach (var obj in result)
|
||||||
{
|
{
|
||||||
Console.WriteLine(obj?.ToString());
|
Console.WriteLine(obj.ToJSON());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,7 +67,7 @@ namespace Hcs.ClientDemo
|
|||||||
if (false) FileStoreDemo.DemoGetFileLength(client);
|
if (false) FileStoreDemo.DemoGetFileLength(client);
|
||||||
if (false) FileStoreDemo.DemoGostHash(client);
|
if (false) FileStoreDemo.DemoGostHash(client);
|
||||||
|
|
||||||
if (true) NsiDemo.DemoExportNsiItem(client);
|
if (true) NsiDemo.DemoExportNsiItem51(client);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user