diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java index 2ff369d6e..9872262a4 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java @@ -24,6 +24,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.utils.enumeration.IEnumKey; +import java.math.BigDecimal; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Collection; @@ -67,7 +68,10 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial } log.debug("Select {} Registry history by query {}", registryHistories.size(), predicate); preClearMap.preClearMap(); - registryHistories.forEach(this::insertDepoBalanceRegister); + for (RegistryHistory registryHistory : registryHistories) { + if (BigDecimal.ZERO.compareTo(registryHistory.getObject().getDiffBalance()) != 0) continue; + insertDepoBalanceRegister(registryHistory); + } log.debug("Successfully processed"); } @@ -91,8 +95,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial private ImdgPredicate getPredicateForRegistries(Long companyId) { Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS); ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder(); - RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS_T) - .prefix("object."); + RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS_T).prefix("object"); ImdgPredicate registryPredicate; if (companyId == null) { registryPredicate = pb.sql(codeSql.build()); @@ -104,7 +107,6 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial } ImdgPredicate finalPredicate = pb.and( registryPredicate, - pb.zero("object.diffBalance"), pb.notNull("object.tradingClearingRegistry"), pb.and( pb.greatEqual("eventTime", now), diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java index 3abac632a..d5edcc41b 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java @@ -25,6 +25,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.utils.enumeration.IEnumKey; +import java.math.BigDecimal; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Collection; @@ -70,7 +71,10 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia } log.debug("Select {} Registry history by query {}", registryHistories.size(), predicate); preClearMap.preClearMap(); - registryHistories.forEach((this::insertMoneyBalanceRegister)); + for (RegistryHistory registryHistory : registryHistories) { + if (BigDecimal.ZERO.compareTo(registryHistory.getObject().getDiffBalance()) != 0) continue; + insertMoneyBalanceRegister(registryHistory); + } log.debug("successfully processed"); } @@ -100,19 +104,18 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia protected ImdgPredicate getSqlForRegistryHistory(Long companyId) { Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS); ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder(); - RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM_T); - ImdgPredicate registryPredicate; + RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM_T).prefix("object"); + ImdgPredicate registryPredicate = codeSql.buildPredicate(pb); if (companyId == null) { - registryPredicate = pb.sql(codeSql.build("object.")); + registryPredicate = pb.sql(codeSql.build()); } else { registryPredicate = pb.and( pb.equals("object.companyId", companyId), - pb.sql(codeSql.build("object.")) + pb.sql(codeSql.build()) ); } ImdgPredicate finalPredicate = pb.and( registryPredicate, - pb.zero("object.diffBalance"), pb.notNull("object.tradingClearingRegistry"), pb.and( pb.greatEqual("eventTime", now), diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java index a58a7ef98..fef559a7f 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java @@ -112,15 +112,4 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder { public ImdgPredicate alwaysFalse() { return new ImdgPredicateHazelcast(Predicates.alwaysFalse()); } - - @Override - public ImdgPredicate zero(String key) { - return zero(key, 10); - } - - @Override - public ImdgPredicate zero(String key, int scale) { - double zeros = Math.pow(0.1, scale); - return new ImdgPredicateHazelcast(Predicates.between(key, -zeros, +zeros)); - } } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java index 54376cb64..bee080b38 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java @@ -22,7 +22,4 @@ public interface ImdgPredicateBuilder { ImdgPredicate alwaysTrue(); ImdgPredicate alwaysFalse(); - - ImdgPredicate zero(String key, int scale); - ImdgPredicate zero(String key); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryCodeSqlBuilder.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryCodeSqlBuilder.java index 6f9a73e36..9e055e907 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryCodeSqlBuilder.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryCodeSqlBuilder.java @@ -12,7 +12,7 @@ import java.util.stream.Collectors; public class RegistryCodeSqlBuilder { private List registryTradingParams; - private String prefix = ""; + private String prefix = null; public static RegistryCodeSqlBuilder getInstance(RegistryTradingParams... tradingParams) { return new RegistryCodeSqlBuilder(Arrays.asList(tradingParams)); @@ -24,10 +24,16 @@ public class RegistryCodeSqlBuilder { public String build() { List conditions = new ArrayList<>(); - final String REGISTRY_DESIGNATION_FORMAT = prefix + "registryDesignation = '%s'"; - final String REGISTRY_INSTRUMENT_TYPE_FORMAT = prefix + "registryInstrumentType = '%s'"; - final String REGISTRY_CAPACITY_FORMAT = prefix + "registryCapacity = '%s'"; - final String REGISTRY_UNIT_FORMAT = prefix + "registryUnit = '%s'"; + String REGISTRY_DESIGNATION_FORMAT = "registryDesignation = '%s'"; + String REGISTRY_INSTRUMENT_TYPE_FORMAT = "registryInstrumentType = '%s'"; + String REGISTRY_CAPACITY_FORMAT = "registryCapacity = '%s'"; + String REGISTRY_UNIT_FORMAT = "registryUnit = '%s'"; + if (prefix != null) { + REGISTRY_DESIGNATION_FORMAT = "%s.%s".formatted(prefix, REGISTRY_DESIGNATION_FORMAT); + REGISTRY_INSTRUMENT_TYPE_FORMAT = "%s.%s".formatted(prefix, REGISTRY_INSTRUMENT_TYPE_FORMAT); + REGISTRY_CAPACITY_FORMAT = "%s.%s".formatted(prefix, REGISTRY_CAPACITY_FORMAT); + REGISTRY_UNIT_FORMAT = "%s.%s".formatted(prefix, REGISTRY_UNIT_FORMAT); + } for (RegistryTradingParams tradingParams : this.registryTradingParams) { StringBuilder condition = new StringBuilder(); boolean wasAddedCondition = false; @@ -69,10 +75,16 @@ public class RegistryCodeSqlBuilder { public ImdgPredicate buildPredicate(ImdgPredicateBuilder pb) { List conditionsOr = new ArrayList<>(); - final String REGISTRY_DESIGNATION_FIELD = prefix + "registryDesignation"; - final String REGISTRY_INSTRUMENT_TYPE_FIELD = prefix + "registryInstrumentType"; - final String REGISTRY_CAPACITY_FIELD = prefix + "registryCapacity"; - final String REGISTRY_UNIT_FIELD = prefix + "registryUnit"; + String REGISTRY_DESIGNATION_FIELD = "registryDesignation"; + String REGISTRY_INSTRUMENT_TYPE_FIELD = "registryInstrumentType"; + String REGISTRY_CAPACITY_FIELD = "registryCapacity"; + String REGISTRY_UNIT_FIELD = "registryUnit"; + if (prefix != null) { + REGISTRY_DESIGNATION_FIELD = "%s.%s".formatted(prefix, REGISTRY_DESIGNATION_FIELD); + REGISTRY_INSTRUMENT_TYPE_FIELD = "%s.%s".formatted(prefix, REGISTRY_INSTRUMENT_TYPE_FIELD); + REGISTRY_CAPACITY_FIELD = "%s.%s".formatted(prefix, REGISTRY_CAPACITY_FIELD); + REGISTRY_UNIT_FIELD = "%s.%s".formatted(prefix, REGISTRY_UNIT_FIELD); + } for (RegistryTradingParams tradingParams : this.registryTradingParams) { List conditionsAnd = new ArrayList<>(4); if (tradingParams.registryDesignation() != null) { diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java index 5e23280e7..5f7d50716 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java @@ -105,17 +105,6 @@ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder { return sql("false"); } - @Override - public ImdgPredicate zero(String key) { - return zero(key, 10); - } - - @Override - public ImdgPredicate zero(String key, int scale) { - String zeros = "0." + "0".repeat(scale) + "1"; - return sql("%s > -%s and %s < %s".formatted(key, zeros, key, zeros)); - } - static class SimpleSQLPredicate implements ImdgPredicate { protected String sql;