Add data provider nsi item result wait

This commit is contained in:
2025-11-05 09:41:52 +09:00
parent acbbc13fa8
commit 5a8b6c2303
9 changed files with 135 additions and 17 deletions

View File

@ -1,4 +1,5 @@
using Hcs.Service.Async.Nsi;
using Hcs.Broker.Api.Request;
using Hcs.Service.Async.Nsi;
namespace Hcs.Broker.Api
{
@ -20,5 +21,12 @@ namespace Hcs.Broker.Api
/// <param name="token">Токен отмены</param>
/// <returns>Идентификатор сообщения операции экспорта</returns>
Task<string> RequestExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default);
/// <summary>
/// Возвращает результат экспорта данных справочника поставщика информации
/// </summary>
/// <param name="messageGuid">Идентификатор сообщения операции экспорта</param>
/// <returns>Результат запроса</returns>
Task<RequestSingleResult<NsiItemType>> GetExportDataProviderNsiItemResultAsync(string messageGuid);
}
}

View File

@ -1,4 +1,5 @@
using Hcs.Broker.Api.Request.Exception;
using Hcs.Broker.Api.Request;
using Hcs.Broker.Api.Request.Exception;
using Hcs.Broker.Api.Request.Nsi;
using Hcs.Service.Async.Nsi;
@ -27,5 +28,12 @@ namespace Hcs.Broker.Api
var request = new ExportDataProviderNsiItemRequest(client);
return await request.SendAsync(registryNumber, token);
}
/// <inheritdoc cref="INsiApi"/>
public async Task<RequestSingleResult<NsiItemType>> GetExportDataProviderNsiItemResultAsync(string messageGuid)
{
var request = new ExportDataProviderNsiItemRequest(client);
return await request.GetResultAsync(messageGuid);
}
}
}

View File

@ -1,4 +1,5 @@
using Hcs.Broker.Internal;
using Hcs.Broker.Api.Request.Adapter;
using Hcs.Broker.Internal;
using Hcs.Service.Async.Nsi;
namespace Hcs.Broker.Api.Request.Nsi
@ -40,5 +41,25 @@ namespace Hcs.Broker.Api.Request.Nsi
return response.AckRequest.Ack;
}, token);
}
internal async Task<RequestSingleResult<NsiItemType>> GetResultAsync(string messageGuid)
{
var result = await ExecuteGetResultAsync(messageGuid);
if (result == null)
{
return RequestSingleResult<NsiItemType>.CreateNotReady();
}
var item = result.Items.FirstOrDefault();
if (item is NsiItemType nsiItem)
{
return RequestSingleResult<NsiItemType>.CreateSuccessful(nsiItem);
}
else if (item is IErrorMessage errorMessage)
{
return RequestSingleResult<NsiItemType>.CreateFailed(errorMessage);
}
return RequestSingleResult<NsiItemType>.CreateFailed(null);
}
}
}