registry-service fix, ImdgPredicateBuilder fix, RegistryCodeSqlBuilder fix dot

This commit is contained in:
akulikov 2023-12-08 13:53:12 +03:00
parent 0dd5cec12e
commit de9619376b
6 changed files with 36 additions and 44 deletions

View file

@ -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),

View file

@ -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),

View file

@ -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));
}
}

View file

@ -22,7 +22,4 @@ public interface ImdgPredicateBuilder {
ImdgPredicate alwaysTrue();
ImdgPredicate alwaysFalse();
ImdgPredicate zero(String key, int scale);
ImdgPredicate zero(String key);
}

View file

@ -12,7 +12,7 @@ import java.util.stream.Collectors;
public class RegistryCodeSqlBuilder {
private List<RegistryTradingParams> 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<StringBuilder> 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<ImdgPredicate> 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<ImdgPredicate> conditionsAnd = new ArrayList<>(4);
if (tradingParams.registryDesignation() != null) {

View file

@ -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;