Add account data import
This commit is contained in:
@ -59,6 +59,19 @@ namespace Hcs.Client.Api
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Импорт лицевого счета
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="payload">Пейлоад лицевого счета</param>
|
||||||
|
/// <param name="token">Токен отмены</param>
|
||||||
|
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
|
||||||
|
public async Task<bool> ImportAccountDataAsync(ImportAccountDataPayload payload, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
var request = new ImportAccountDataRequest(client);
|
||||||
|
return await request.ExecuteAsync(payload, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Импорт новости для информирования граждан
|
/// Импорт новости для информирования граждан
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -0,0 +1,97 @@
|
|||||||
|
using Hcs.Service.Async.HouseManagement;
|
||||||
|
|
||||||
|
namespace Hcs.Client.Api.Payload.HouseManagement
|
||||||
|
{
|
||||||
|
// http://open-gkh.ru/HouseManagement/importAccountRequest/Account.html
|
||||||
|
public class ImportAccountDataPayload
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Тип лицевого счета
|
||||||
|
/// </summary>
|
||||||
|
public enum AccountType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет для оплаты за жилое помещение и коммунальные услуги
|
||||||
|
/// </summary>
|
||||||
|
UO,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет для оплаты за коммунальные услуги
|
||||||
|
/// </summary>
|
||||||
|
RSO,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет для оплаты капитального ремонта
|
||||||
|
/// </summary>
|
||||||
|
CR,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет РКЦ
|
||||||
|
/// </summary>
|
||||||
|
RC,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет ОГВ/ОМС
|
||||||
|
/// </summary>
|
||||||
|
OGVorOMS,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Лицевой счет ТКО
|
||||||
|
/// </summary>
|
||||||
|
TKO
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Номер лицевого счета или иной идентификатор плательщика. Максимум 30 символов.
|
||||||
|
/// </summary>
|
||||||
|
public string accountNumber;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Идентификатор ЛС в ГИС ЖКХ (при обновлении данных ЛС).
|
||||||
|
/// </summary>
|
||||||
|
public string accountGUID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Конкретизация оснований ЛС (договоров ресурсоснабжения, договоров социального найма,
|
||||||
|
/// договоров по обращению с ТКО).
|
||||||
|
/// </summary>
|
||||||
|
public AccountReasonsImportType accountReasons;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Тип лицевого счета
|
||||||
|
/// </summary>
|
||||||
|
public AccountType accountType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Количество проживающих, не больше 9999.
|
||||||
|
/// </summary>
|
||||||
|
public uint? livingPersonsNumber;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Общая площадь для ЛС. Не более 4 цифр после целой.
|
||||||
|
/// </summary>
|
||||||
|
public decimal? totalSquare;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Жилая площадь. Не более 4 цифр после целой.
|
||||||
|
/// </summary>
|
||||||
|
public decimal? residentialSquare;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Необязательное. Отапливаемая площадь. Не более 4 цифр после целой.
|
||||||
|
/// </summary>
|
||||||
|
public decimal? heatedArea;
|
||||||
|
|
||||||
|
// TODO: Добавить причину закрытия лицевого счета
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Помещения
|
||||||
|
/// </summary>
|
||||||
|
public AccountTypeAccommodation[] accomodations;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сведения о платильщике
|
||||||
|
/// </summary>
|
||||||
|
public AccountTypePayerInfo payerInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,108 @@
|
|||||||
|
using Hcs.Client.Api.Payload.HouseManagement;
|
||||||
|
using Hcs.Client.Api.Request.Exception;
|
||||||
|
using Hcs.Client.Internal;
|
||||||
|
using Hcs.Service.Async.HouseManagement;
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Hcs.Client.Api.Request.HouseManagement
|
||||||
|
{
|
||||||
|
internal class ImportAccountDataRequest(ClientBase client) : HouseManagementRequestBase(client)
|
||||||
|
{
|
||||||
|
protected override bool CanBeRestarted => false;
|
||||||
|
|
||||||
|
internal async Task<bool> ExecuteAsync(ImportAccountDataPayload payload, CancellationToken token)
|
||||||
|
{
|
||||||
|
// TODO: Добавить проверку пейлоада
|
||||||
|
|
||||||
|
// http://open-gkh.ru/HouseManagement/importAccountRequest.html
|
||||||
|
var request = new importAccountRequest
|
||||||
|
{
|
||||||
|
Id = Constants.SIGNED_XML_ELEMENT_ID,
|
||||||
|
version = "10.0.1.1",
|
||||||
|
Account = [GetAccountFromPayload(payload)]
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = await SendAndWaitResultAsync(request, async asyncClient =>
|
||||||
|
{
|
||||||
|
var response = await asyncClient.importAccountDataAsync(CreateRequestHeader(), request);
|
||||||
|
return response.AckRequest.Ack;
|
||||||
|
}, token);
|
||||||
|
|
||||||
|
result.Items.OfType<ErrorMessageType>().ToList().ForEach(error =>
|
||||||
|
{
|
||||||
|
throw RemoteException.CreateNew(error.ErrorCode, error.Description);
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private importAccountRequestAccount GetAccountFromPayload(ImportAccountDataPayload payload)
|
||||||
|
{
|
||||||
|
var account = new importAccountRequestAccount()
|
||||||
|
{
|
||||||
|
TransportGUID = Guid.NewGuid().ToString(),
|
||||||
|
AccountNumber = payload.accountNumber,
|
||||||
|
AccountGUID = payload.accountGUID,
|
||||||
|
AccountReasons = payload.accountReasons,
|
||||||
|
Item = true,
|
||||||
|
Accommodation = payload.accomodations,
|
||||||
|
PayerInfo = payload.payerInfo
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (payload.accountType)
|
||||||
|
{
|
||||||
|
case ImportAccountDataPayload.AccountType.UO:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isUOAccount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ImportAccountDataPayload.AccountType.RSO:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isRSOAccount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ImportAccountDataPayload.AccountType.CR:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isCRAccount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ImportAccountDataPayload.AccountType.RC:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isRCAccount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ImportAccountDataPayload.AccountType.OGVorOMS:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isOGVorOMSAccount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ImportAccountDataPayload.AccountType.TKO:
|
||||||
|
account.ItemElementName = ItemChoiceType8.isTKOAccount;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (payload.livingPersonsNumber.HasValue)
|
||||||
|
{
|
||||||
|
account.LivingPersonsNumber = payload.livingPersonsNumber.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (payload.totalSquare.HasValue)
|
||||||
|
{
|
||||||
|
account.TotalSquare = payload.totalSquare.Value;
|
||||||
|
account.TotalSquareSpecified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (payload.residentialSquare.HasValue)
|
||||||
|
{
|
||||||
|
account.ResidentialSquare = payload.residentialSquare.Value;
|
||||||
|
account.ResidentialSquareSpecified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (payload.heatedArea.HasValue)
|
||||||
|
{
|
||||||
|
account.HeatedArea = payload.heatedArea.Value;
|
||||||
|
account.HeatedAreaSpecified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -69,6 +69,7 @@
|
|||||||
<Compile Include="Client\Api\NsiApi.cs" />
|
<Compile Include="Client\Api\NsiApi.cs" />
|
||||||
<Compile Include="Client\Api\NsiCommonApi.cs" />
|
<Compile Include="Client\Api\NsiCommonApi.cs" />
|
||||||
<Compile Include="Client\Api\OrgRegistryCommonApi.cs" />
|
<Compile Include="Client\Api\OrgRegistryCommonApi.cs" />
|
||||||
|
<Compile Include="Client\Api\Payload\HouseManagement\ImportAccountDataPayload.cs" />
|
||||||
<Compile Include="Client\Api\Payload\HouseManagement\ImportNotificationDataPayload.cs" />
|
<Compile Include="Client\Api\Payload\HouseManagement\ImportNotificationDataPayload.cs" />
|
||||||
<Compile Include="Client\Api\Payload\HouseManagement\ImportSupplyResourceContractDataPayload.cs" />
|
<Compile Include="Client\Api\Payload\HouseManagement\ImportSupplyResourceContractDataPayload.cs" />
|
||||||
<Compile Include="Client\Api\Registry\Registry239.cs" />
|
<Compile Include="Client\Api\Registry\Registry239.cs" />
|
||||||
@ -90,6 +91,7 @@
|
|||||||
<Compile Include="Client\Api\Request\HouseManagement\ExportSupplyResourceContractDataRequest.cs" />
|
<Compile Include="Client\Api\Request\HouseManagement\ExportSupplyResourceContractDataRequest.cs" />
|
||||||
<Compile Include="Client\Api\Request\HouseManagement\ExportSupplyResourceContractObjectAddressDataRequest.cs" />
|
<Compile Include="Client\Api\Request\HouseManagement\ExportSupplyResourceContractObjectAddressDataRequest.cs" />
|
||||||
<Compile Include="Client\Api\Request\HouseManagement\HouseManagementRequestBase.cs" />
|
<Compile Include="Client\Api\Request\HouseManagement\HouseManagementRequestBase.cs" />
|
||||||
|
<Compile Include="Client\Api\Request\HouseManagement\ImportAccountDataRequest.cs" />
|
||||||
<Compile Include="Client\Api\Request\HouseManagement\ImportNotificationDataRequest.cs" />
|
<Compile Include="Client\Api\Request\HouseManagement\ImportNotificationDataRequest.cs" />
|
||||||
<Compile Include="Client\Api\Request\HouseManagement\ImportSupplyResourceContractDataRequest.cs" />
|
<Compile Include="Client\Api\Request\HouseManagement\ImportSupplyResourceContractDataRequest.cs" />
|
||||||
<Compile Include="Client\Api\Request\NsiCommon\ExportNsiItemRequest.cs" />
|
<Compile Include="Client\Api\Request\NsiCommon\ExportNsiItemRequest.cs" />
|
||||||
|
|||||||
@ -48,6 +48,8 @@ namespace Hcs.TestApp
|
|||||||
|
|
||||||
//houseManagementScenario.ExportSupplyResourceContractObjectAddressData();
|
//houseManagementScenario.ExportSupplyResourceContractObjectAddressData();
|
||||||
|
|
||||||
|
//houseManagementScenario.ImportAccountData();
|
||||||
|
|
||||||
//houseManagementScenario.ImportNotificationData();
|
//houseManagementScenario.ImportNotificationData();
|
||||||
|
|
||||||
//houseManagementScenario.ImportSupplyResourceContractData();
|
//houseManagementScenario.ImportSupplyResourceContractData();
|
||||||
|
|||||||
@ -3,7 +3,6 @@ using Hcs.Client.Api.Payload.HouseManagement;
|
|||||||
using Hcs.Client.Api.Registry;
|
using Hcs.Client.Api.Registry;
|
||||||
using Hcs.Service.Async.HouseManagement;
|
using Hcs.Service.Async.HouseManagement;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Hcs.TestApp.Scenario
|
namespace Hcs.TestApp.Scenario
|
||||||
{
|
{
|
||||||
@ -155,5 +154,51 @@ namespace Hcs.TestApp.Scenario
|
|||||||
var result = client.HouseManagement.ImportNotificationDataAsync(payload).Result;
|
var result = client.HouseManagement.ImportNotificationDataAsync(payload).Result;
|
||||||
Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
|
Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void ImportAccountData()
|
||||||
|
{
|
||||||
|
var payload = new ImportAccountDataPayload()
|
||||||
|
{
|
||||||
|
accountNumber = "385635479641",
|
||||||
|
accountReasons = new AccountReasonsImportType()
|
||||||
|
{
|
||||||
|
SupplyResourceContract =
|
||||||
|
[
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Items = ["0aca4ebc-8d5c-4a39-801c-e25f0867adc6"],
|
||||||
|
ItemsElementName = [ItemsChoiceType17.ContractGUID]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
accountType = ImportAccountDataPayload.AccountType.RC,
|
||||||
|
livingPersonsNumber = 1,
|
||||||
|
totalSquare = 29.3m,
|
||||||
|
residentialSquare = 29.3m,
|
||||||
|
heatedArea = 29.3m,
|
||||||
|
accomodations =
|
||||||
|
[
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Item = "db041c58-4a14-45ce-8ecc-d99727e9683f",
|
||||||
|
ItemElementName = ItemChoiceType9.FIASHouseGuid
|
||||||
|
}
|
||||||
|
],
|
||||||
|
payerInfo = new AccountTypePayerInfo()
|
||||||
|
{
|
||||||
|
IsRenter = true,
|
||||||
|
IsRenterSpecified = true,
|
||||||
|
Item = new AccountIndType()
|
||||||
|
{
|
||||||
|
Item = "62392021264",
|
||||||
|
FirstName = "Имя",
|
||||||
|
Surname = "Фамилия",
|
||||||
|
Patronymic = "Отчество"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var result = client.HouseManagement.ImportAccountDataAsync(payload).Result;
|
||||||
|
Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user