etreschenkov 2023-12-08 13:07:24 +03:00
parent 8fe43dee98
commit 1ec2b25714
2 changed files with 11 additions and 14 deletions

View file

@ -91,14 +91,15 @@ 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);
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS_T)
.prefix("object");
ImdgPredicate registryPredicate;
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(

View file

@ -12,6 +12,7 @@ import java.util.stream.Collectors;
public class RegistryCodeSqlBuilder {
private List<RegistryTradingParams> registryTradingParams;
private String prefix = "";
public static RegistryCodeSqlBuilder getInstance(RegistryTradingParams... tradingParams) {
return new RegistryCodeSqlBuilder(Arrays.asList(tradingParams));
@ -21,9 +22,9 @@ public class RegistryCodeSqlBuilder {
this.registryTradingParams = tradingParams;
}
public String build(String prefix) {
public String build() {
List<StringBuilder> conditions = new ArrayList<>();
final String REGISTRY_DESIGNATION_FORMAT = prefix + "registryDesignation = '%s'";
final String REGISTRY_DESIGNATION_FORMAT = "%s.registryDesignation = '%%s'".formatted(prefix);
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'";
@ -66,12 +67,7 @@ public class RegistryCodeSqlBuilder {
return conditions.stream().collect(Collectors.joining(") or (", "(", ")"));
}
public String build() {
return build("");
}
public ImdgPredicate buildPredicate(ImdgPredicateBuilder pb, String prefix) {
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";
@ -100,8 +96,8 @@ public class RegistryCodeSqlBuilder {
if (conditionsOr.size() == 1) return conditionsOr.get(0);
return pb.or(conditionsOr.toArray(new ImdgPredicate[conditionsOr.size()]));
}
public ImdgPredicate buildPredicate(ImdgPredicateBuilder pb) {
return buildPredicate(pb, "");
public RegistryCodeSqlBuilder prefix(String prefix) {
this.prefix = prefix;
return this;
}
}