diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java index acff505a5..7e045a167 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java @@ -23,6 +23,7 @@ import ru.clearing.classes.statics.data.account.ClearingAccount; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.clearing.classes.statics.data.misc.Currency; import ru.clearing.classes.statics.data.misc.Notification; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.sdf.SDf52; @@ -65,6 +66,7 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IErrorEnumId; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.validation.IValidator; @@ -82,6 +84,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin private final Function clearingAccountUpdateRequestValidator; private final Imdg accountImdg; + private final Imdg currImdg; private final Imdg clearingAccountImdg; private final Imdg companyImdg; private final Imdg relationImdg; @@ -116,6 +119,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin this.clearingAccountUpdateRequestValidator = clearingAccountUpdateRequestValidator; this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); + this.currImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class); this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); @@ -275,6 +279,17 @@ public class ClearingAccountService extends QueueConsumer implements Initializin account.setAccountType(AccountType.Clrn.getKey()); account.setStatus(ServiceStatus.Active.getKey()); account.setCompanyId(accountReq.getCompanyId()); + if (!TextUtil.isEmpty(accountReq.getAccount()) && accountReq.getAccount().length() >= 7) { + try { + Long currencyId = Long.valueOf(accountReq.getAccount().substring(5, 8)); + Currency currency = currImdg.getSingleObjectByID(currencyId); + account.setCurrency(currency.getCurrencyCode()); + } catch (Throwable e) { + } + } + if (TextUtil.isEmpty(account.getCurrency())) { + log.warn("Sdf52: Wrong accountValue=\"{}\" - can not parse for get currency", accountReq.getAccount()); + } account.setCreated(now); account.setUpdated(now); RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); @@ -359,9 +374,13 @@ public class ClearingAccountService extends QueueConsumer implements Initializin account.setAccount(accountValue); account.setStatus(ServiceStatus.Active.getKey()); if (accountValue.length() >= 7) { - String currency = accountValue.substring(5, 8); - account.setCurrency(currency); - } else { + try { + Long currencyId = Long.valueOf(accountValue.substring(5, 8)); + Currency currency = currImdg.getSingleObjectByID(currencyId); + account.setCurrency(currency.getCurrencyCode()); + } catch (Throwable e) {} + } + if (TextUtil.isEmpty(account.getCurrency())) { log.warn("Sdf52: Wrong accountValue=\"{}\" - can not parse for get currency", accountValue); } account.setCompanyId(companyId);