FormingPaymentInstructionSecurities bugfix

This commit is contained in:
ialbert 2023-08-22 18:36:56 +03:00
parent e9636e8723
commit 7e0eda6fe3
2 changed files with 20 additions and 4 deletions

View file

@ -162,6 +162,21 @@ public class RegistryManager {
return Optional.ofNullable(rgsImdg.getSingleObjectByPredicate(prdct));
}
public Optional<Registry> findRelatedAssetTran(Long tcrId,
Long companyId,
String securitySymbol,
RegistryTradingParams rgsCode) {
ImdgPredicateBuilder rgsPrdBldr = rgsImdg.predicateBuilder();
RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(rgsCode);
ImdgPredicate prdct = rgsPrdBldr.and(
rgsPrdBldr.equals("tradingClearingRegistryId", tcrId),
rgsPrdBldr.equals("companyId", companyId),
rgsPrdBldr.equals("securitySymbol", securitySymbol),
rgsPrdBldr.equals("accountType", AccountType.Tran.getKey()),
rgsPrdBldr.sql(codeSql.build()));
return Optional.ofNullable(rgsImdg.getSingleObjectByPredicate(prdct));
}
public static void zeroState(Registry rgs) {
rgs.setBalance(BigDecimal.ZERO);
rgs.setDebit(BigDecimal.ZERO);

View file

@ -107,13 +107,14 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
}
private Collection<Registry> selectSecurityRegistries() {
private Collection<Registry> selectSecurityRegistries(Long sessionId) {
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
CS_T, LS_T
);
ImdgPredicate rgsCodePrdct = rgsPb.and(
rgsPb.sql(registryCodeSqlBuilder.build()),
rgsPb.equals("sessionId", sessionId),
rgsPb.equals("settlementDate", LocalDate.now()));
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
return registries.stream()
@ -143,7 +144,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
List<PaymentInstruction> paymentInstructionAll = new ArrayList<>();
Instant now = Instant.now();
{
Collection<Registry> registries = selectSecurityRegistries();
Collection<Registry> registries = selectSecurityRegistries(sessionId);
log.debug("found registries.size() = {}", registries.size());
//группируем регистры по groupId
Map<Long, List<Registry>> groups = registries
@ -264,7 +265,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
debitLegAccount = tranAcc;
creditLegAccount = counterAcc;
amount = registry.getBalance() == null ? null : registry.getBalance().abs();
Optional<Registry> payerAmtO = rgsMng.findRelatedAsset(
Optional<Registry> payerAmtO = rgsMng.findRelatedAssetTran(
registry.getTradingClearingRegistryId(),
registry.getCompanyId(),
registry.getSecuritySymbol(),
@ -279,7 +280,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
debitLegAccount = counterAcc;
creditLegAccount = tranAcc;
amount = registry.getBalance() == null ? null : registry.getBalance().abs();
Optional<Registry> payerAmtO = rgsMng.findRelatedAsset(
Optional<Registry> payerAmtO = rgsMng.findRelatedAssetTran(
registry.getTradingClearingRegistryId(),
registry.getCompanyId(),
registry.getSecuritySymbol(),