From 065a1179efaea4a479610da57c8886a5d7e7128a Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 8 Sep 2023 13:13:14 +0300 Subject: [PATCH] account-service http://jira.mfd.msk:8088/browse/CLS-489 sdf52 --- .../service/ClearingAccountService.java | 21 +++++++++++++++++-- .../account/service/SDFProcessService.java | 2 +- 2 files changed, 20 insertions(+), 3 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 f1dd4d857..f26da2699 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 @@ -16,6 +16,8 @@ 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.sdf.SDf52; +import ru.clearing.platform.dictionary.AbstractDictionary; +import ru.clearing.platform.dictionary.ClearingCategoryDictionary; import ru.spcex.clearing.account.errors.AccountError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; @@ -48,6 +50,7 @@ import ru.spcex.platform.utils.validation.IValidator; import java.time.Instant; import java.util.*; import java.util.function.Function; +import java.util.stream.Collectors; @Service public class ClearingAccountService extends QueueConsumer implements InitializingBean { @@ -66,6 +69,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin private final Imdg companyImdg; private final Imdg relationImdg; private final Imdg clearingMemberCategoryImdg; + private final Imdg clearingCategoryImdg; @Autowired public ClearingAccountService(Consumer kafkaQueue, @@ -96,6 +100,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin 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); + this.clearingCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class); } @Override @@ -312,12 +317,23 @@ public class ClearingAccountService extends QueueConsumer implements Initializin serviceType = ru.spcex.platform.enumeration.Service.MKR.getKey(); } if (IEnumKey.contains(cmc.getClearingMemberCategory(), ClearingCategory.F, ClearingCategory.C)) { - serviceType = ru.spcex.platform.enumeration.Service.MKR.getKey(); + serviceType = ru.spcex.platform.enumeration.Service.FOND.getKey(); } } return serviceType; } + String selectExpectedCMCOfCompanyForRelation(Long companyId) { + Collection clearingCategorys = clearingCategoryImdg.getCollectionObjectsByPredicate( + clearingCategoryImdg.predicateBuilder().in("code", new String[]{ + ClearingCategory.B.getKey(), ClearingCategory.I.getKey(), ClearingCategory.V.getKey(), + ClearingCategory.F.getKey(), ClearingCategory.C.getKey() + }) + ); + String toText = clearingCategorys.stream().map(AbstractDictionary::getName).collect(Collectors.joining("/")); + return toText; + } + public RequestInfoUpdate accountUpdateSdf52(BaseRequest systemRequest) { log.debug("accountUpdateSdf52 StatementRequest received, id={}", systemRequest.getId()); @@ -359,7 +375,8 @@ public class ClearingAccountService extends QueueConsumer implements Initializin "service", serviceType )); if (relation == null) { - String msg = messageResolver.resolve(new EnumMessage(AccountError.ClearingCategoryNotFound, company.getTradingCode(), serviceType)); + String requiredClearingCategoryToMessage = selectExpectedCMCOfCompanyForRelation(company.getId()); + String msg = messageResolver.resolve(new EnumMessage(AccountError.ClearingCategoryNotFound, company.getTradingCode(), requiredClearingCategoryToMessage)); log.warn("By generationId={} s_df52[{}] error: {}", groupId, sDf52.getId(), msg); toProcessSDF53.add(new MutableTriple<>(sDf52, null, makeSdfErrorText(AccountError.ClearingCategoryNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); 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 49378d886..6f5abc994 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 @@ -122,7 +122,7 @@ public class SDFProcessService { * @return AccountStatus или null */ public AccountStatus parseSdf52Status(Long status) { - if (Long.valueOf(1L).equals(status)) { + if (Long.valueOf(1L).equals(status) || Long.valueOf(3L).equals(status)) { return AccountStatus.ACTIVE; } else if (Long.valueOf(0L).equals(status)) { return AccountStatus.BLOCKED;