registry-service fix, ImdgPredicateBuilder fix, RegistryCodeSqlBuilder fix dot
This commit is contained in:
parent
0dd5cec12e
commit
de9619376b
6 changed files with 36 additions and 44 deletions
|
|
@ -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.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Collection;
|
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);
|
log.debug("Select {} Registry history by query {}", registryHistories.size(), predicate);
|
||||||
preClearMap.preClearMap();
|
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");
|
log.debug("Successfully processed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -91,8 +95,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
||||||
private ImdgPredicate getPredicateForRegistries(Long companyId) {
|
private ImdgPredicate getPredicateForRegistries(Long companyId) {
|
||||||
Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS);
|
Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS);
|
||||||
ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder();
|
ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder();
|
||||||
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS_T)
|
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS_T).prefix("object");
|
||||||
.prefix("object.");
|
|
||||||
ImdgPredicate registryPredicate;
|
ImdgPredicate registryPredicate;
|
||||||
if (companyId == null) {
|
if (companyId == null) {
|
||||||
registryPredicate = pb.sql(codeSql.build());
|
registryPredicate = pb.sql(codeSql.build());
|
||||||
|
|
@ -104,7 +107,6 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
||||||
}
|
}
|
||||||
ImdgPredicate finalPredicate = pb.and(
|
ImdgPredicate finalPredicate = pb.and(
|
||||||
registryPredicate,
|
registryPredicate,
|
||||||
pb.zero("object.diffBalance"),
|
|
||||||
pb.notNull("object.tradingClearingRegistry"),
|
pb.notNull("object.tradingClearingRegistry"),
|
||||||
pb.and(
|
pb.and(
|
||||||
pb.greatEqual("eventTime", now),
|
pb.greatEqual("eventTime", now),
|
||||||
|
|
|
||||||
|
|
@ -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.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Collection;
|
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);
|
log.debug("Select {} Registry history by query {}", registryHistories.size(), predicate);
|
||||||
preClearMap.preClearMap();
|
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");
|
log.debug("successfully processed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,19 +104,18 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia
|
||||||
protected ImdgPredicate getSqlForRegistryHistory(Long companyId) {
|
protected ImdgPredicate getSqlForRegistryHistory(Long companyId) {
|
||||||
Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS);
|
Instant now = Instant.now().truncatedTo(ChronoUnit.DAYS);
|
||||||
ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder();
|
ImdgPredicateBuilder pb = registryHistoryMap.predicateBuilder();
|
||||||
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM_T);
|
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM_T).prefix("object");
|
||||||
ImdgPredicate registryPredicate;
|
ImdgPredicate registryPredicate = codeSql.buildPredicate(pb);
|
||||||
if (companyId == null) {
|
if (companyId == null) {
|
||||||
registryPredicate = pb.sql(codeSql.build("object."));
|
registryPredicate = pb.sql(codeSql.build());
|
||||||
} else {
|
} else {
|
||||||
registryPredicate = pb.and(
|
registryPredicate = pb.and(
|
||||||
pb.equals("object.companyId", companyId),
|
pb.equals("object.companyId", companyId),
|
||||||
pb.sql(codeSql.build("object."))
|
pb.sql(codeSql.build())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
ImdgPredicate finalPredicate = pb.and(
|
ImdgPredicate finalPredicate = pb.and(
|
||||||
registryPredicate,
|
registryPredicate,
|
||||||
pb.zero("object.diffBalance"),
|
|
||||||
pb.notNull("object.tradingClearingRegistry"),
|
pb.notNull("object.tradingClearingRegistry"),
|
||||||
pb.and(
|
pb.and(
|
||||||
pb.greatEqual("eventTime", now),
|
pb.greatEqual("eventTime", now),
|
||||||
|
|
|
||||||
|
|
@ -112,15 +112,4 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder {
|
||||||
public ImdgPredicate alwaysFalse() {
|
public ImdgPredicate alwaysFalse() {
|
||||||
return new ImdgPredicateHazelcast(Predicates.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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,4 @@ public interface ImdgPredicateBuilder {
|
||||||
|
|
||||||
ImdgPredicate alwaysTrue();
|
ImdgPredicate alwaysTrue();
|
||||||
ImdgPredicate alwaysFalse();
|
ImdgPredicate alwaysFalse();
|
||||||
|
|
||||||
ImdgPredicate zero(String key, int scale);
|
|
||||||
ImdgPredicate zero(String key);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import java.util.stream.Collectors;
|
||||||
public class RegistryCodeSqlBuilder {
|
public class RegistryCodeSqlBuilder {
|
||||||
|
|
||||||
private List<RegistryTradingParams> registryTradingParams;
|
private List<RegistryTradingParams> registryTradingParams;
|
||||||
private String prefix = "";
|
private String prefix = null;
|
||||||
|
|
||||||
public static RegistryCodeSqlBuilder getInstance(RegistryTradingParams... tradingParams) {
|
public static RegistryCodeSqlBuilder getInstance(RegistryTradingParams... tradingParams) {
|
||||||
return new RegistryCodeSqlBuilder(Arrays.asList(tradingParams));
|
return new RegistryCodeSqlBuilder(Arrays.asList(tradingParams));
|
||||||
|
|
@ -24,10 +24,16 @@ public class RegistryCodeSqlBuilder {
|
||||||
|
|
||||||
public String build() {
|
public String build() {
|
||||||
List<StringBuilder> conditions = new ArrayList<>();
|
List<StringBuilder> conditions = new ArrayList<>();
|
||||||
final String REGISTRY_DESIGNATION_FORMAT = prefix + "registryDesignation = '%s'";
|
String REGISTRY_DESIGNATION_FORMAT = "registryDesignation = '%s'";
|
||||||
final String REGISTRY_INSTRUMENT_TYPE_FORMAT = prefix + "registryInstrumentType = '%s'";
|
String REGISTRY_INSTRUMENT_TYPE_FORMAT = "registryInstrumentType = '%s'";
|
||||||
final String REGISTRY_CAPACITY_FORMAT = prefix + "registryCapacity = '%s'";
|
String REGISTRY_CAPACITY_FORMAT = "registryCapacity = '%s'";
|
||||||
final String REGISTRY_UNIT_FORMAT = prefix + "registryUnit = '%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) {
|
for (RegistryTradingParams tradingParams : this.registryTradingParams) {
|
||||||
StringBuilder condition = new StringBuilder();
|
StringBuilder condition = new StringBuilder();
|
||||||
boolean wasAddedCondition = false;
|
boolean wasAddedCondition = false;
|
||||||
|
|
@ -69,10 +75,16 @@ public class RegistryCodeSqlBuilder {
|
||||||
|
|
||||||
public ImdgPredicate buildPredicate(ImdgPredicateBuilder pb) {
|
public ImdgPredicate buildPredicate(ImdgPredicateBuilder pb) {
|
||||||
List<ImdgPredicate> conditionsOr = new ArrayList<>();
|
List<ImdgPredicate> conditionsOr = new ArrayList<>();
|
||||||
final String REGISTRY_DESIGNATION_FIELD = prefix + "registryDesignation";
|
String REGISTRY_DESIGNATION_FIELD = "registryDesignation";
|
||||||
final String REGISTRY_INSTRUMENT_TYPE_FIELD = prefix + "registryInstrumentType";
|
String REGISTRY_INSTRUMENT_TYPE_FIELD = "registryInstrumentType";
|
||||||
final String REGISTRY_CAPACITY_FIELD = prefix + "registryCapacity";
|
String REGISTRY_CAPACITY_FIELD = "registryCapacity";
|
||||||
final String REGISTRY_UNIT_FIELD = prefix + "registryUnit";
|
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) {
|
for (RegistryTradingParams tradingParams : this.registryTradingParams) {
|
||||||
List<ImdgPredicate> conditionsAnd = new ArrayList<>(4);
|
List<ImdgPredicate> conditionsAnd = new ArrayList<>(4);
|
||||||
if (tradingParams.registryDesignation() != null) {
|
if (tradingParams.registryDesignation() != null) {
|
||||||
|
|
|
||||||
|
|
@ -105,17 +105,6 @@ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder {
|
||||||
return sql("false");
|
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 {
|
static class SimpleSQLPredicate implements ImdgPredicate {
|
||||||
protected String sql;
|
protected String sql;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue