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.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),
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,4 @@ public interface ImdgPredicateBuilder {
|
|||
|
||||
ImdgPredicate alwaysTrue();
|
||||
ImdgPredicate alwaysFalse();
|
||||
|
||||
ImdgPredicate zero(String key, int scale);
|
||||
ImdgPredicate zero(String key);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue