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) { 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");
ImdgPredicate registryPredicate; ImdgPredicate registryPredicate;
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(

View file

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