diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrecSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrecSessionStateMachineConfig.java index 048e331e1..9697317c3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrecSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrecSessionStateMachineConfig.java @@ -120,7 +120,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda ); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.inspectionObligationsV2Action.setClearingMemberCategoryFilter( - category -> category == null || !ClearingCategory.P.equalsByKey(category) + ctgrs -> ctgrs.stream().noneMatch(ClearingCategory.P::equalsByKey) ); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrpcSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrpcSessionStateMachineConfig.java index adcc48be9..3e3bed74c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrpcSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrpcSessionStateMachineConfig.java @@ -120,7 +120,7 @@ public class PrpcSessionStateMachineConfig extends EnumStateMachineConfigurerAda ); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.inspectionObligationsV2Action.setClearingMemberCategoryFilter( - ctgr -> ctgr != null && ClearingCategory.P.equalsByKey(ctgr) + ctgrs -> ctgrs.stream().anyMatch(ClearingCategory.P::equalsByKey) ); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsPrecAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsPrecAction.java index eb94a1239..0e7ad2b1d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsPrecAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsPrecAction.java @@ -10,6 +10,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; @@ -63,7 +64,7 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action { private final Imdg cmcImdg; private final ImdgId idGen; private final IMessageResolver msgResolver = new SimpleMessageResolver(); - private Function cmcFilter; + private Function, Boolean> cmcFilter; private SessionType sessionType; private Long sessionId; @@ -75,7 +76,7 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action { this.idGen = imdgProvider.getImdgIdGenerator(); } - public void setClearingMemberCategoryFilter(Function cmcFilter) { + public void setClearingMemberCategoryFilter(Function, Boolean> cmcFilter) { this.cmcFilter = cmcFilter; } @@ -174,10 +175,14 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action { ImdgPredicate cmcPrdct = new CategoryByCompanyIdCashingPredicate( rgs.getCompanyId() ).cashed(cmcImdg.predicateBuilder(), cmcCash); - ClearingMemberCategory cmc = cmcImdg.getSingleObjectByPredicate(cmcPrdct); - if (!cmcFilter.apply(cmc != null ? cmc.getClearingMemberCategory() : null)) { - log.debug("group.id={}, rgs.id={}, company.id={}: category {}, skipping", - entry.getKey().groupId(), rgs.getId(), rgs.getCompanyId(), cmc != null ? cmc.getClearingMemberCategory() : "null"); + Collection cmcList = cmcImdg.getCollectionObjectsByPredicate(cmcPrdct); + List categories = cmcList.stream() + .filter(Objects::nonNull) + .map(ClearingMemberCategory::getClearingMemberCategory) + .toList(); + if (!cmcFilter.apply(categories)) { + log.debug("group.id={}, rgs.id={}, company.id={}: category size {}, skipping", + entry.getKey().groupId(), rgs.getId(), rgs.getCompanyId(), cmcList.size()); continue; } ImdgPredicate am_bPrdct = AssetByTcrCompanyAccountCashedPredicate