diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java index 4f2a61a04..6a68bef1e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java @@ -36,6 +36,7 @@ import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose; import ru.spcex.platform.enumeration.TradingClearingRegistryType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; @@ -250,7 +251,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); Company company = companyImdg.getSingleObjectByID(req.getCompanyId()); - Long seqId = companySequenceNextId(req.getCompanyId()); + Long seqId = companySequenceNextId(req.getCompanyId(), registryPurpose, tradingRegistryType); String code = makeCode(company.getClearingCode(), registryPurpose, tradingRegistryType, seqId); log.debug("For new TCR.id={} of companyId={} next sequence={}; code={}", id, req.getCompanyId(), seqId, code); tradingClearingRegistry.setCode(code); @@ -329,7 +330,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); Company company = companyImdg.getSingleObjectByID(req.getCompanyId()); - Long seqId = companySequenceNextId(req.getCompanyId()); + Long seqId = companySequenceNextId(req.getCompanyId(), registryPurpose, tradingRegistryType); String code = makeCode(company.getClearingCode(), registryPurpose, tradingRegistryType, seqId); log.debug("For new TCR.id={} of companyId={} next sequence={}; code={}", id, req.getCompanyId(), seqId, code); tradingClearingRegistry.setCode(code); @@ -348,10 +349,15 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini return null; } - protected Long companySequenceNextId(Long companyId) { - Collection existTCR = tradingClearingRegistryImdg.getCollectionObjectsByFieldValues(Map.of( - "companyId", companyId - )); + protected Long companySequenceNextId(Long companyId, TradingClearingRegistryPurpose registryPurpose, String tradingRegistryType) { + ImdgPredicateBuilder pb = tradingClearingRegistryImdg.predicateBuilder(); + Collection existTCR = tradingClearingRegistryImdg.getCollectionObjectsByPredicate( + pb.and( + pb.equals("companyId", companyId), + pb.equals("tradingClearingRegistryPurpose", registryPurpose.getKey()), + pb.equals("tradingClearingRegistryType", tradingRegistryType) + ) + ); if (existTCR.isEmpty()) { log.trace("For company id={} not found exist TCR.", companyId); return 1L;