From 943ec5f762a18f95074f010b56d9f81505066e55 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 13 Nov 2023 16:51:36 +0300 Subject: [PATCH 1/2] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-585=20t?= =?UTF-8?q?odo=20=D1=83=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D1=82=D1=8C=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ClearingAccountService.java | 63 +++++++++++++++++-- .../account/service/SDFProcessService.java | 11 +++- .../enumeration/ClearingAccountType.java | 18 ++++++ 3 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingAccountType.java 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 bed4b8f49..89e1bd158 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 @@ -70,6 +70,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin private final Function clearingAccountUpdateRequestValidator; private final Imdg accountImdg; + private final Imdg clearingAccountImdg; private final Imdg companyImdg; private final Imdg relationImdg; private final Imdg clearingMemberCategoryImdg; @@ -103,6 +104,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin this.clearingAccountUpdateRequestValidator = clearingAccountUpdateRequestValidator; this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.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); this.clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); @@ -320,6 +322,48 @@ public class ClearingAccountService extends QueueConsumer implements Initializin return null; } + /** + * Логика похожа на SDF01 + * @param accountValue account + * @param companyId + * @param userRequestId для лога + * @return + */ + private Account createSdf52Account(String accountValue, Long companyId, Long userRequestId) { + Instant now = Instant.now(); + Account account = new Account(); + account.setAccount(accountValue); + account.setAccountType(AccountType.Clrn.getKey()); + account.setStatus(ServiceStatus.Active.getKey()); + account.setCompanyId(companyId); + account.setCreated(now); + account.setUpdated(now); + RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequestId, true); + if (requestInfoUpdate != null) { + log.warn("Error fill new account from relation. {}", /*account.getId(),*/ requestInfoUpdate.getMessage()); + return null; + } + + if (accountImdg.getFirstObjectBySQL("account = '%s'".formatted(accountValue)) != null) { + log.debug("Account {} already exists", accountValue); + return null; + } + + Long clearingAccountId = -1L; + Long accountId = -1L; + ClearingAccount clearingAccount = null; + accountId = accountImdg.insert(account); + + clearingAccount = new ClearingAccount(); + clearingAccount.setCompanyId(companyId); + clearingAccount.setAccountId(accountId); +// !!!! clearingAccount.setClearingAccountType(ClearingAccountType.?);//todo на уточнении ТЗ... + clearingAccountId = clearingAccountImdg.insert(clearingAccount); + log.debug("New account {}, clearingAccount {} was created.", accountId, clearingAccountId); + + return account; + } + public RequestInfoUpdate accountUpdateSdf52(BaseRequest systemRequest) { log.debug("accountUpdateSdf52 StatementRequest received, id={}", systemRequest.getId()); @@ -362,11 +406,20 @@ public class ClearingAccountService extends QueueConsumer implements Initializin ); Account account = sDf52.getAccount() == null ? null : accountImdg.getFirstObjectByFieldValues(accountQuery); if (account == null) { - String msg = messageResolver.resolve(new EnumMessage(AccountError.AccountNotFound, sDf52.getAccount())); - log.warn("By generationId={} s_df52[{}] (query: {}) error: {}", groupId, sDf52.getId(), accountQuery, msg); - toProcessSDF53.add(new MutableTriple<>(sDf52, null, - makeSdfErrorText(AccountError.AccountNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); - continue; + if (SDFProcessService.SDF52_STATUS_3Open.equals(sDf52.getStatus())) { + account = createSdf52Account(sDf52.getAccount(), company.getId(), systemRequest.getId()); + if (account == null) { + log.trace("Can not create account: \"{}\", companyId={}. Ignore SDF52.id={}", + sDf52.getAccount(), company.getId(), sDf52.getId()); + continue; + } + } else { + String msg = messageResolver.resolve(new EnumMessage(AccountError.AccountNotFound, sDf52.getAccount())); + log.warn("By generationId={} s_df52[{}] (query: {}) error: {}", groupId, sDf52.getId(), accountQuery, msg); + toProcessSDF53.add(new MutableTriple<>(sDf52, null, + makeSdfErrorText(AccountError.AccountNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); + continue; + } } toProcessSDF53.add(new MutableTriple<>(sDf52, account, SDFProcessService.SDF_STATUS_OK)); toUpdate.add(new Pair<>(sDf52, account)); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java index 612107078..ed5d3d1af 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java @@ -38,6 +38,11 @@ public class SDFProcessService { public static final String SDF_STATUS_ERROR_NO_TRADE = "4"; // (Ошибка. Торги не идут) public static final String SDF_STATUS_ERROR = "9"; // (Другие ошибки, выявленные в КС) - если получены другие ошибки (т.е. account НЕ обновлена по sDf52). + protected static final Long SDF52_STATUS_0Blocked = 0L; + protected static final Long SDF52_STATUS_1Unblocked = 1L; + protected static final Long SDF52_STATUS_2Closed = 2L; + protected static final Long SDF52_STATUS_3Open = 3L; + final protected Logger log = LoggerFactory.getLogger(getClass()); protected final Producer kafkaResponseQueue; @@ -129,12 +134,12 @@ public class SDFProcessService { * @return AccountStatus или null */ public AccountStatus parseSdf52Status(Long status) { - if (Long.valueOf(1L).equals(status) || Long.valueOf(3L).equals(status)) { + if (SDF52_STATUS_1Unblocked.equals(status) || SDF52_STATUS_3Open.equals(status)) { return AccountStatus.ACTIVE; - } else if (Long.valueOf(0L).equals(status)) { + } else if (SDF52_STATUS_0Blocked.equals(status)) { return AccountStatus.BLOCKED; } - if (Long.valueOf(2L).equals(status)) { + if (SDF52_STATUS_2Closed.equals(status)) { return AccountStatus.CLOSE; } return null; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingAccountType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingAccountType.java new file mode 100644 index 000000000..bdd083067 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingAccountType.java @@ -0,0 +1,18 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum ClearingAccountType implements IEnumKey { + A("A"), B("B"); + + private final String key; + + ClearingAccountType(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} From c8336ce8a4c7307802575e45bee083da4605beb7 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 15 Dec 2023 16:29:11 +0300 Subject: [PATCH 2/2] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-585=20?= =?UTF-8?q?=D1=83=D1=82=D0=BE=D1=87=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ClearingAccountService.java | 50 +------------------ 1 file changed, 2 insertions(+), 48 deletions(-) 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 89e1bd158..21767011c 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 @@ -322,48 +322,6 @@ public class ClearingAccountService extends QueueConsumer implements Initializin return null; } - /** - * Логика похожа на SDF01 - * @param accountValue account - * @param companyId - * @param userRequestId для лога - * @return - */ - private Account createSdf52Account(String accountValue, Long companyId, Long userRequestId) { - Instant now = Instant.now(); - Account account = new Account(); - account.setAccount(accountValue); - account.setAccountType(AccountType.Clrn.getKey()); - account.setStatus(ServiceStatus.Active.getKey()); - account.setCompanyId(companyId); - account.setCreated(now); - account.setUpdated(now); - RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequestId, true); - if (requestInfoUpdate != null) { - log.warn("Error fill new account from relation. {}", /*account.getId(),*/ requestInfoUpdate.getMessage()); - return null; - } - - if (accountImdg.getFirstObjectBySQL("account = '%s'".formatted(accountValue)) != null) { - log.debug("Account {} already exists", accountValue); - return null; - } - - Long clearingAccountId = -1L; - Long accountId = -1L; - ClearingAccount clearingAccount = null; - accountId = accountImdg.insert(account); - - clearingAccount = new ClearingAccount(); - clearingAccount.setCompanyId(companyId); - clearingAccount.setAccountId(accountId); -// !!!! clearingAccount.setClearingAccountType(ClearingAccountType.?);//todo на уточнении ТЗ... - clearingAccountId = clearingAccountImdg.insert(clearingAccount); - log.debug("New account {}, clearingAccount {} was created.", accountId, clearingAccountId); - - return account; - } - public RequestInfoUpdate accountUpdateSdf52(BaseRequest systemRequest) { log.debug("accountUpdateSdf52 StatementRequest received, id={}", systemRequest.getId()); @@ -407,12 +365,8 @@ public class ClearingAccountService extends QueueConsumer implements Initializin Account account = sDf52.getAccount() == null ? null : accountImdg.getFirstObjectByFieldValues(accountQuery); if (account == null) { if (SDFProcessService.SDF52_STATUS_3Open.equals(sDf52.getStatus())) { - account = createSdf52Account(sDf52.getAccount(), company.getId(), systemRequest.getId()); - if (account == null) { - log.trace("Can not create account: \"{}\", companyId={}. Ignore SDF52.id={}", - sDf52.getAccount(), company.getId(), sDf52.getId()); - continue; - } + log.debug("By generationId={} s_df52[{}].status={}, but account not found (query: {}). COntinuse with result OK for status 3", + groupId, sDf52.getId(), sDf52.getStatus(), accountQuery); } else { String msg = messageResolver.resolve(new EnumMessage(AccountError.AccountNotFound, sDf52.getAccount())); log.warn("By generationId={} s_df52[{}] (query: {}) error: {}", groupId, sDf52.getId(), accountQuery, msg);