From 33e0bb50475216f1143c6ce22316ebe9e3c49f66 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 21 Jul 2025 16:09:40 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-883 [ClearingMemberCategory delete + cancel relation] bugfix --- .../company/service/RelationService.java | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java index 4d9056990..a518a6bca 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java @@ -1,5 +1,12 @@ package ru.spcex.clearing.company.service; +import java.time.Instant; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; @@ -25,30 +32,21 @@ import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.ClearingCategory; +import static ru.spcex.platform.enumeration.Service.FOND; +import static ru.spcex.platform.enumeration.Service.MKR; import ru.spcex.platform.enumeration.ServiceProduct; import ru.spcex.platform.enumeration.ServiceStatus; +import static ru.spcex.platform.enumeration.ServiceStatus.Closed; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.utils.enumeration.IEnumKey; +import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; import ru.spcex.platform.utils.error.ValidationException; import ru.spcex.platform.utils.validation.IValidator; -import java.time.Instant; -import java.util.Collection; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Function; -import java.util.stream.Collectors; - -import static ru.spcex.platform.enumeration.Service.FOND; -import static ru.spcex.platform.enumeration.Service.MKR; -import static ru.spcex.platform.enumeration.ServiceStatus.Closed; -import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; - @Service public class RelationService extends QueueConsumer implements InitializingBean { protected static final Long SPVB_ID = 1L; // СПВБ @@ -287,6 +285,19 @@ public class RelationService extends QueueConsumer implements InitializingBean { .collect(Collectors.toList()); } + Collection selectCompanyClearingMemberCategory(ImdgTransaction tx, Long companyId, Long deletedCmcId) { + Imdg cmcMap = tx == null ? clearingMemberCategoryImdg : tx.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + Collection companyCategory = cmcMap.getCollectionObjectsByFieldValues( + Map.of("companyId", companyId) + ); + return companyCategory.stream() + .filter(cmc -> !cmc.getId().equals(deletedCmcId)) + .map(ClearingMemberCategory::getClearingMemberCategory) + .filter(StringUtils::isNotEmpty) + .distinct() + .collect(Collectors.toList()); + } + /** * @param companyId * @param service @@ -611,7 +622,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { // serviceStatus = serviceForCMC(clearingCategory).getKey(); // } - Collection companyCMC = selectCompanyClearingMemberCategory(null, companyId); + Collection companyCMC = selectCompanyClearingMemberCategory(null, companyId, clearingMemberCategory.getId()); if (companyCMC.contains(clearingMemberCategory.getClearingMemberCategory())) { // never log.warn("ClearingMemberCategory \"{}\" already exist in set for company {}.", clearingMemberCategory.getClearingMemberCategory(), companyId);