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();