Add export data provider nsi item executor
This commit is contained in:
@ -13,5 +13,13 @@ namespace Hcs.Broker.Mock.Api
|
|||||||
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="INsiApi"/>
|
||||||
|
public async Task<string> RequestExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
await Task.Delay(3000, token);
|
||||||
|
|
||||||
|
return Guid.NewGuid().ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,5 +12,13 @@ namespace Hcs.Broker.Api
|
|||||||
/// <param name="token">Токен отмены</param>
|
/// <param name="token">Токен отмены</param>
|
||||||
/// <returns>Данные справочника</returns>
|
/// <returns>Данные справочника</returns>
|
||||||
Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default);
|
Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запрашивает экспорт данных справочника поставщика информации
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="registryNumber">Реестровый номер справочника</param>
|
||||||
|
/// <param name="token">Токен отмены</param>
|
||||||
|
/// <returns>Идентификатор сообщения операции экспорта</returns>
|
||||||
|
Task<string> RequestExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,5 +20,12 @@ namespace Hcs.Broker.Api
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="INsiApi"/>
|
||||||
|
public async Task<string> RequestExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
var request = new ExportDataProviderNsiItemRequest(client);
|
||||||
|
return await request.SendAsync(registryNumber, token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,5 +23,22 @@ namespace Hcs.Broker.Api.Request.Nsi
|
|||||||
|
|
||||||
return result.Items.OfType<NsiItemType>();
|
return result.Items.OfType<NsiItemType>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal async Task<string> SendAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token)
|
||||||
|
{
|
||||||
|
// http://open-gkh.ru/Nsi/exportDataProviderNsiItemRequest.html
|
||||||
|
var request = new exportDataProviderNsiItemRequest
|
||||||
|
{
|
||||||
|
Id = Constants.SIGNED_XML_ELEMENT_ID,
|
||||||
|
version = "10.0.1.2",
|
||||||
|
RegistryNumber = registryNumber
|
||||||
|
};
|
||||||
|
|
||||||
|
return await SendAsync(request, async asyncClient =>
|
||||||
|
{
|
||||||
|
var response = await asyncClient.exportDataProviderNsiItemAsync(CreateRequestHeader(), request);
|
||||||
|
return response.AckRequest.Ack;
|
||||||
|
}, token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using Hcs.Broker;
|
using Hcs.Broker;
|
||||||
|
using Hcs.WebApp.BackgroundServices.OperationExecutors.Nsi;
|
||||||
using Hcs.WebApp.BackgroundServices.OperationExecutors.NsiCommon;
|
using Hcs.WebApp.BackgroundServices.OperationExecutors.NsiCommon;
|
||||||
using Hcs.WebApp.Data.Hcs;
|
using Hcs.WebApp.Data.Hcs;
|
||||||
|
|
||||||
@ -10,6 +11,9 @@ namespace Hcs.WebApp.BackgroundServices.OperationExecutors
|
|||||||
{
|
{
|
||||||
switch (operation.Type)
|
switch (operation.Type)
|
||||||
{
|
{
|
||||||
|
case Operation.OperationType.Nsi_ExportNsiItem_15_7_0_1:
|
||||||
|
return new ExportDataProviderNsiItemExecutor_15_7_0_1(client, scope, operation);
|
||||||
|
|
||||||
case Operation.OperationType.NsiCommon_ExportNsiItem_15_7_0_1:
|
case Operation.OperationType.NsiCommon_ExportNsiItem_15_7_0_1:
|
||||||
return new ExportNsiItemExecutor_15_7_0_1(client, scope, operation);
|
return new ExportNsiItemExecutor_15_7_0_1(client, scope, operation);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
using Hcs.Broker;
|
||||||
|
using Hcs.Service.Async.Nsi;
|
||||||
|
using Hcs.WebApp.Data.Hcs;
|
||||||
|
using Hcs.WebApp.Services;
|
||||||
|
|
||||||
|
namespace Hcs.WebApp.BackgroundServices.OperationExecutors.Nsi
|
||||||
|
{
|
||||||
|
public class ExportDataProviderNsiItemExecutor_15_7_0_1(IClient client, IServiceScope scope, Operation operation) : ExecutorBase(client, scope, operation)
|
||||||
|
{
|
||||||
|
public override async Task<string> ExecuteAsync(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var registryService = scope.ServiceProvider.GetRequiredService<RegistryService>();
|
||||||
|
var registry = await registryService.GetRegistryByOperationIdAsync(operation.Id);
|
||||||
|
var number = RegistryNumberFromInt(registry.Number);
|
||||||
|
return await client.Nsi.RequestExportDataProviderNsiItemAsync(number, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
private exportDataProviderNsiItemRequestRegistryNumber RegistryNumberFromInt(int number)
|
||||||
|
{
|
||||||
|
return number switch
|
||||||
|
{
|
||||||
|
1 => exportDataProviderNsiItemRequestRegistryNumber.Item1,
|
||||||
|
51 => exportDataProviderNsiItemRequestRegistryNumber.Item51,
|
||||||
|
59 => exportDataProviderNsiItemRequestRegistryNumber.Item59,
|
||||||
|
219 => exportDataProviderNsiItemRequestRegistryNumber.Item219,
|
||||||
|
272 => exportDataProviderNsiItemRequestRegistryNumber.Item272,
|
||||||
|
302 => exportDataProviderNsiItemRequestRegistryNumber.Item302,
|
||||||
|
337 => exportDataProviderNsiItemRequestRegistryNumber.Item337,
|
||||||
|
_ => throw new ArgumentException($"Не удалось получить номер справочника из значения {number}"),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user