diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java index 7e7b5f3e6..430c18e95 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java @@ -14,20 +14,29 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.ClearingAccount; +import ru.clearing.classes.statics.data.account.ClientCode; import ru.clearing.classes.statics.data.account.DepoAccount; import ru.clearing.classes.statics.data.account.InformationAccount; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.relation.Relation; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList; import ru.spcex.clearing.account.errors.AccountError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount; +import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccountsCheckRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.gateway.MoneyAccountMsg; +import ru.spcex.clearing.platform.messaging.domain.cud.gateway.SendTkrRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.gateway.Tkr; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.reports.NotificationRequest; @@ -38,6 +47,7 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.validation.common.ValidationHelper; +import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.enumeration.ServiceStatus; import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose; import ru.spcex.platform.enumeration.TradingClearingRegistryType; @@ -56,12 +66,15 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini private final ImdgProvider imdgProvider; private final Imdg tradingClearingRegistryImdg; + private final Imdg tradingClearingRegistryListImdg; private final Imdg depoAccountImdg; private final Imdg clearingAccountImdg; private final Imdg informationAccountImdg; private final Imdg accountImdg; private final Imdg companyImdg; + private final Imdg companySymbolsImdg; private final Imdg relationImdg; + private final Imdg clientCodeImdg; private final Function tradingClearingRegistryUpdateRequestValidator; private final RequestHelper requestHelper; @@ -82,11 +95,11 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini IMessageResolver messageResolver, RequestHelper requestHelper, @Qualifier("tradingClearingRegistryNewRequest") - Function tradingClearingRegistryNewRequestValidator, + Function tradingClearingRegistryNewRequestValidator, @Qualifier("tradingClearingRegistryUpdateRequest") - Function tradingClearingRegistryUpdateRequestValidator, + Function tradingClearingRegistryUpdateRequestValidator, @Qualifier("tradingClearingRegistryBlockRequest") - Function tradingClearingRegistryBlockRequestValidator) { + Function tradingClearingRegistryBlockRequestValidator) { super(kafkaQueue, kafkaProducer); this.kafkaProducer = kafkaProducer; this.kafkaSender = kafkaSender; @@ -95,12 +108,15 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini this.requestHelper = requestHelper; this.imdgProvider = imdgProvider; this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + this.tradingClearingRegistryListImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); this.depoAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class); this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class); this.informationAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + this.clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class); + this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); this.tradingClearingRegistryNewRequestValidator = tradingClearingRegistryNewRequestValidator; this.tradingClearingRegistryAutoNewRequestValidator = tradingClearingRegistryNewRequestValidator; // без relation. this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator; @@ -112,17 +128,20 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini public void afterPropertiesSet() throws Exception { imdgProvider.waitAvailable(); callback(TradingClearingRegistryNewRequest.class) // todo deprecated - unused. - .setFunction(this::tradingClearingRegistryAutoNew) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, callbacks::put); + .setFunction(this::tradingClearingRegistryAutoNew) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, callbacks::put); callback(TradingClearingRegistryNewRequest.class) - .setFunction(this::tradingClearingRegistryNew) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, callbacks::put); + .setFunction(this::tradingClearingRegistryNew) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, callbacks::put); callback(TradingClearingRegistryUpdateRequest.class) - .setFunction(this::tradingClearingRegistryUpdate) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, callbacks::put); + .setFunction(this::tradingClearingRegistryUpdate) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, callbacks::put); callback(CommonIdRequest.class) - .setFunction(this::tradingClearingRegistryBlock) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, callbacks::put); + .setFunction(this::tradingClearingRegistryBlock) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, callbacks::put); + callback(TkrAccountsCheckRequest.class) + .setFunction(this::tradingClearingRegistryCheck) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_CHECK, callbacks::put); init(); } @@ -162,10 +181,10 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini TradingClearingRegistry registryByCompany = tradingClearingRegistryImdg.getFirstObjectByFieldValues(Map.of("companyId", req.getCompanyId())); if (registryByCompany == null) { log.trace("Not found registry with companyId={}", - req.getCompanyId()); + req.getCompanyId()); return requestHelper.makeErrorResponse(userRequest, - AccountError.TradingClearingRegistryNotFound, - req.getCompanyId()); + AccountError.TradingClearingRegistryNotFound, + req.getCompanyId()); } } @@ -210,6 +229,10 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini targetExistTradingClearingRegistry.setUpdated(Instant.now()); tradingClearingRegistryImdg.update(targetExistTradingClearingRegistry); log.debug("successfully processed, id {}. Updated exist TradingClearingRegistry.id={}", id, targetExistTradingClearingRegistry.getId()); + SendTkrRequest sendTkrRequest = createRequestToGateway(tradingClearingRegistry); + if (!sendTkrRequest.getTkrs().isEmpty()) { + kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest); + } return null; } } @@ -293,8 +316,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini TradingClearingRegistry registryByCompany = tradingClearingRegistryImdg.getFirstObjectByFieldValues(Map.of("companyId", req.getCompanyId())); if (registryByCompany == null) { return requestHelper.makeErrorResponse(userRequest, - AccountError.TradingClearingRegistryNotFound, - "companyId=" + req.getCompanyId()); + AccountError.TradingClearingRegistryNotFound, + "companyId=" + req.getCompanyId()); } } @@ -344,6 +367,10 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistryImdg.insert(tradingClearingRegistry); log.info("New TCR.id={} was created.", tradingClearingRegistry.getId()); + SendTkrRequest sendTkrRequest = createRequestToGateway(tradingClearingRegistry); + if (!sendTkrRequest.getTkrs().isEmpty()) { + kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest); + } sendNotificationToReportSvc(tradingClearingRegistry); sendNotificationToClearingSvc(tradingClearingRegistry); @@ -355,11 +382,11 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini protected Long companySequenceNextId(Long companyId, TradingClearingRegistryPurpose registryPurpose, String tradingRegistryType) { ImdgPredicateBuilder pb = tradingClearingRegistryImdg.predicateBuilder(); Collection existTCR = tradingClearingRegistryImdg.getCollectionObjectsByPredicate( - pb.and( - pb.equals("companyId", companyId), - pb.equals("tradingClearingRegistryPurpose", registryPurpose.getKey()), - pb.equals("tradingClearingRegistryType", tradingRegistryType) - ) + pb.and( + pb.equals("companyId", companyId), + pb.equals("tradingClearingRegistryPurpose", registryPurpose.getKey()), + pb.equals("tradingClearingRegistryType", tradingRegistryType) + ) ); if (existTCR.isEmpty()) { log.trace("For company id={} not found exist TCR.", companyId); @@ -435,6 +462,10 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setUpdated(now); tradingClearingRegistry.setStatus(req.getStatus()); tradingClearingRegistryImdg.update(tradingClearingRegistry); + SendTkrRequest sendTkrRequest = createRequestToGateway(tradingClearingRegistry); + if (!sendTkrRequest.getTkrs().isEmpty()) { + kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest); + } log.debug("Update TCR.id={}.", tradingClearingRegistry.getId()); } else { log.debug("Nothing to update TCR.id={}.", tradingClearingRegistry.getId()); @@ -464,6 +495,87 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini return null; } + public RequestInfoUpdate tradingClearingRegistryCheck(BaseRequest gatewayRequest) { + log.debug("TradingClearingRegistryCheckRequest received"); + + TkrAccountsCheckRequest req = gatewayRequest.getRequestPayload(); + for (TkrAccount accountForCheck : req.getAccounts()) { + log.debug("Checking TKR with code: {}", accountForCheck.getTkrCode()); + TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByFieldValues( + Map.of("code", accountForCheck.getTkrCode()) + ); + SendTkrRequest sendTkrRequest = createRequestToGateway(tradingClearingRegistry); + sendTkrRequest.setRequestId(req.getRequestId()); + if (!sendTkrRequest.getTkrs().isEmpty()) { + kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest); + } + } + return null; + } + + private SendTkrRequest createRequestToGateway(TradingClearingRegistry tradingClearingRegistry){ + SendTkrRequest sendTkrRequest = new SendTkrRequest(); + if (tradingClearingRegistry != null) { + log.debug("Found TKR with id: {} and code: {}", tradingClearingRegistry.getId(), tradingClearingRegistry.getCode()); + Company company = companyImdg.getSingleObjectByID(tradingClearingRegistry.getCompanyId()); + CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectByFieldValues( + Map.of( + "companySymbol", CompanySymbol.UUID.getKey(), + "companyId", company.getId() + ) + ); + ClientCode clientCode = clientCodeImdg.getFirstObjectByFieldValues( + Map.of("tradingClearingRegistryId", tradingClearingRegistry.getId()) + ); + Tkr tkr = new Tkr(); + tkr.setCompanyId(companySymbols.getCompanySymbolValue()); + tkr.setTradingCode(Long.valueOf(company.getTradingCode())); + tkr.setTkrCode(tradingClearingRegistry.getCode()); + tkr.setTkrType(tradingClearingRegistry.getTradingClearingRegistryPurpose()); + String accountType; + if (clientCode == null) { + if (TradingClearingRegistryType.Client_B.equalsByKey( + tradingClearingRegistry.getTradingClearingRegistryType())) { + accountType = "Клиентский общий"; + } else { + accountType = "Общий"; + } + } else { + tkr.setClientCode(clientCode.getCode()); + accountType = "Клиентский обособленный"; + } + tkr.setAccountTypeName(accountType); + DepoAccount depoAccount = depoAccountImdg.getSingleObjectByID(tradingClearingRegistry.getDepoAccountId()); + Account account = null; + if (depoAccount != null) { + account = accountImdg.getSingleObjectByID(depoAccount.getAccountId()); + tkr.setDepoAccount(account.getAccount()); + } + { + Account moneyAccount = accountImdg.getSingleObjectByID(tradingClearingRegistry.getMoneyAccountId()); + MoneyAccountMsg moneyAccountMsg = new MoneyAccountMsg(); + moneyAccountMsg.setAccount(moneyAccount.getAccount()); + moneyAccountMsg.setCurrCode(StringUtils.hasText(moneyAccount.getCurrency()) ? moneyAccount.getCurrency() : "RUB"); + tkr.getMoneyAccounts().add(moneyAccountMsg); + } + { + Collection tradingClearingRegistries = tradingClearingRegistryListImdg.getCollectionObjectsByFieldValues( + Map.of( + "tradingClearingRegistryId", tradingClearingRegistry.getId() + ) + ); + for (TradingClearingRegistryList tkrList : tradingClearingRegistries) { + Account additionalAcc = accountImdg.getSingleObjectByID(tkrList.getAccountId()); + MoneyAccountMsg moneyAccountMsg = new MoneyAccountMsg(); + moneyAccountMsg.setAccount(additionalAcc.getAccount()); + moneyAccountMsg.setCurrCode(StringUtils.hasText(additionalAcc.getCurrency()) ? additionalAcc.getCurrency() : "RUB"); + tkr.getMoneyAccounts().add(moneyAccountMsg); + } + } + sendTkrRequest.getTkrs().add(tkr); + } + return sendTkrRequest; + } /** * company-service сообщение об успешном добавлении ТКР клиента с параметром tradingClearingRegistry.code diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 71ed89182..76ab66230 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -207,6 +207,7 @@ public interface Consts { String REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW = "registry-clear-member-register-change-new"; String REPORTS_TO_GATEWAY = "reports-to-gateway"; + String ACCOUNTS_TO_GATEWAY = "accounts-to-gateway"; String REGISTRY_NEW = "registry-new"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccount.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java similarity index 91% rename from platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccount.java rename to platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java index 10670728d..a83ad7e13 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccount.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java @@ -1,7 +1,8 @@ -package ru.spcex.clearing.platform.messaging.domain.cud.gateway; +package ru.spcex.clearing.platform.messaging.domain.cud.account; import java.util.List; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.clearing.platform.messaging.domain.cud.gateway.MoneyAccountMsg; public class TkrAccount { @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccountsCheckRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccountsCheckRequest.java new file mode 100644 index 000000000..c7a1d9fcf --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccountsCheckRequest.java @@ -0,0 +1,28 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.account; + +import java.util.List; +import java.util.UUID; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class TkrAccountsCheckRequest { + @JsonProperty + private UUID requestId; + @JsonProperty + private List accounts; + + public UUID getRequestId() { + return requestId; + } + + public void setRequestId(UUID requestId) { + this.requestId = requestId; + } + + public List getAccounts() { + return accounts; + } + + public void setAccounts(List accounts) { + this.accounts = accounts; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendTkrRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendTkrRequest.java index dda555468..ecec57639 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendTkrRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendTkrRequest.java @@ -1,28 +1,29 @@ package ru.spcex.clearing.platform.messaging.domain.cud.gateway; +import java.util.ArrayList; import java.util.List; +import java.util.UUID; import com.fasterxml.jackson.annotation.JsonProperty; public class SendTkrRequest { @JsonProperty - private List tkrs; + private UUID requestId; + @JsonProperty + private List tkrs = new ArrayList<>(); - public class Tkr { - @JsonProperty - private String companyId; - @JsonProperty - private Long tradingCode; - @JsonProperty - private String clientCode; - @JsonProperty - private String tkrCode; - @JsonProperty - private String tkrType; - @JsonProperty - private String accountTypeName; - @JsonProperty - private String depoAccount; - @JsonProperty - private List moneyAccounts; + public UUID getRequestId() { + return requestId; + } + + public void setRequestId(UUID requestId) { + this.requestId = requestId; + } + + public List getTkrs() { + return tkrs; + } + + public void setTkrs(List tkrs) { + this.tkrs = tkrs; } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/Tkr.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/Tkr.java new file mode 100644 index 000000000..fe265253c --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/Tkr.java @@ -0,0 +1,88 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.gateway; + +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Tkr { + @JsonProperty + private String companyId; + @JsonProperty + private Long tradingCode; + @JsonProperty + private String clientCode; + @JsonProperty + private String tkrCode; + @JsonProperty + private String tkrType; + @JsonProperty + private String accountTypeName; + @JsonProperty + private String depoAccount; + @JsonProperty + private List moneyAccounts = new ArrayList<>(); + + public String getCompanyId() { + return companyId; + } + + public void setCompanyId(String companyId) { + this.companyId = companyId; + } + + public Long getTradingCode() { + return tradingCode; + } + + public void setTradingCode(Long tradingCode) { + this.tradingCode = tradingCode; + } + + public String getClientCode() { + return clientCode; + } + + public void setClientCode(String clientCode) { + this.clientCode = clientCode; + } + + public String getTkrCode() { + return tkrCode; + } + + public void setTkrCode(String tkrCode) { + this.tkrCode = tkrCode; + } + + public String getTkrType() { + return tkrType; + } + + public void setTkrType(String tkrType) { + this.tkrType = tkrType; + } + + public String getAccountTypeName() { + return accountTypeName; + } + + public void setAccountTypeName(String accountTypeName) { + this.accountTypeName = accountTypeName; + } + + public String getDepoAccount() { + return depoAccount; + } + + public void setDepoAccount(String depoAccount) { + this.depoAccount = depoAccount; + } + + public List getMoneyAccounts() { + return moneyAccounts; + } + + public void setMoneyAccounts(List moneyAccounts) { + this.moneyAccounts = moneyAccounts; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccountsResponse.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccountsResponse.java deleted file mode 100644 index d557f429a..000000000 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/TkrAccountsResponse.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.spcex.clearing.platform.messaging.domain.cud.gateway; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class TkrAccountsResponse { - @JsonProperty - private List accounts; - - public List getAccounts() { - return accounts; - } - - public void setAccounts(List accounts) { - this.accounts = accounts; - } -}