From 1775ababa1aa37139c5c551ed12e66f5ee004728 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 29 May 2023 18:17:13 +0300 Subject: [PATCH] =?UTF-8?q?account-service=20fillAccountFromRelation=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20AccountService=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20?= =?UTF-8?q?=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/AccountService.java | 51 +++++++++++-------- .../account/service/BankAccountService.java | 2 +- .../service/ClearingAccountService.java | 2 +- .../account/service/DepoAccountService.java | 2 +- .../service/InformationAccountService.java | 4 +- 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index 826555e3a..5f8e34be3 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -131,7 +131,7 @@ public class AccountService extends QueueConsumer implements InitializingBean { account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = fillAccountFromRelation(account, userRequest.getId(), false); if (requestInfoUpdate != null) return requestInfoUpdate; Long newId = accountMap.insert(account); @@ -230,31 +230,38 @@ public class AccountService extends QueueConsumer implements InitializingBean { * * @param requestId Идентификатор запроса для вывода лога */ - public RequestInfoUpdate fillAccountFromRelation(Account account, Long requestId) { + public RequestInfoUpdate fillAccountFromRelation(Account account, Long requestId, boolean checkClearingMemberCategory) { Long companyId = account.getCompanyId(); - ImdgPredicateBuilder clearingMemberCategoryPredicateBuilder = clearingMemberCategoryMap.predicateBuilder(); - ImdgPredicate companyIdEquals = clearingMemberCategoryPredicateBuilder.equals("companyId", companyId); - Collection clearingMemberCategories = clearingMemberCategoryMap.getCollectionObjectsByPredicate(companyIdEquals); - - if (clearingMemberCategories.isEmpty()) - return makeError(requestId, AccountError.ClearingCategoryNotFound, companyId, "(any)"); - if (clearingMemberCategories.size() > 1) - log.warn("ClearingMemberCategory for companyId {} contains multiply elements, use first", companyId); - ClearingMemberCategory clearingMemberCategory = clearingMemberCategories.iterator().next(); - + Collection relations; ImdgPredicateBuilder relationPredicateBuilder = relationMap.predicateBuilder(); - ImdgPredicate consumerIdPredicate = relationPredicateBuilder.equals("consumerId", companyId); - ImdgPredicate servicePredicate; - String clearingCategoryValue = clearingMemberCategory.getClearingMemberCategory(); - if (IEnumKey.contains(clearingCategoryValue, ClearingCategory.B, ClearingCategory.I, ClearingCategory.V)) { - servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.MKR.getKey()); - } else if (IEnumKey.contains(clearingCategoryValue, ClearingCategory.F, ClearingCategory.C)) { - servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.FOND.getKey()); + ImdgPredicate finalRelationPredicate; + if (checkClearingMemberCategory) { + ImdgPredicateBuilder clearingMemberCategoryPredicateBuilder = clearingMemberCategoryMap.predicateBuilder(); + ImdgPredicate companyIdEquals = clearingMemberCategoryPredicateBuilder.equals("companyId", companyId); + Collection clearingMemberCategories = clearingMemberCategoryMap.getCollectionObjectsByPredicate(companyIdEquals); + + if (clearingMemberCategories.isEmpty()) + return makeError(requestId, AccountError.ClearingCategoryNotFound, companyId, "(any)"); + if (clearingMemberCategories.size() > 1) + log.warn("ClearingMemberCategory for companyId {} contains multiply elements, use first", companyId); + ClearingMemberCategory clearingMemberCategory = clearingMemberCategories.iterator().next(); + + ImdgPredicate consumerIdPredicate = relationPredicateBuilder.equals("consumerId", companyId); + ImdgPredicate servicePredicate; + String clearingCategoryValue = clearingMemberCategory.getClearingMemberCategory(); + if (IEnumKey.contains(clearingCategoryValue, ClearingCategory.B, ClearingCategory.I, ClearingCategory.V)) { + servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.MKR.getKey()); + } else if (IEnumKey.contains(clearingCategoryValue, ClearingCategory.F, ClearingCategory.C)) { + servicePredicate = relationPredicateBuilder.equals("service", ru.spcex.platform.enumeration.Service.FOND.getKey()); + } else { + return makeError(requestId, AccountError.ClearingCategoryNotFound, companyId, clearingCategoryValue + " (case not implemented)"); + } + finalRelationPredicate = relationPredicateBuilder.and(consumerIdPredicate, servicePredicate); + relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate); } else { - return makeError(requestId, AccountError.ClearingCategoryNotFound, companyId, clearingCategoryValue + " (case not implemented)"); + finalRelationPredicate = relationPredicateBuilder.equals("consumerId", companyId); + relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate); } - ImdgPredicate finalRelationPredicate = relationPredicateBuilder.and(consumerIdPredicate, servicePredicate); - Collection relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate); if (relations.isEmpty()) return makeError(requestId, AccountError.WrongFieldValue, "companyId", finalRelationPredicate.toString()); if (relations.size() > 1) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java index 1069939db..757a7604f 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java @@ -105,7 +105,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea account.setCompanyId(req.getCompanyId()); account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), false); if (requestInfoUpdate != null) return requestInfoUpdate; Long bankAccountId = -1L; 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 2580fa1df..1ccdc5243 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 @@ -104,7 +104,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin account.setCompanyId(req.getCompanyId()); account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) return requestInfoUpdate; Long clearingAccountId = -1L; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java index d41f2d386..e9c050283 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java @@ -84,7 +84,7 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea account.setCompanyId(req.getCompanyId()); account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) return requestInfoUpdate; Long depoAccountId = -1L; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java index 61d80a88d..bf87465ad 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java @@ -130,7 +130,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali account.setCompanyId(userRequest.getRequestPayload().getCompanyId()); account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) return requestInfoUpdate; ImdgTransaction imdgTransaction = imdgProvider.newTransaction(); @@ -220,7 +220,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali account.setCompanyId(forCompanyId); account.setCreated(now); account.setUpdated(now); - requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId()); + requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) return requestInfoUpdate; ImdgTransaction imdgTransaction = imdgProvider.newTransaction();