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..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 @@ -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); @@ -362,11 +364,16 @@ 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())) { + 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); + 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; + } +}