Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
ialbert 2025-02-12 14:52:00 +03:00
commit d11e45c08c

View file

@ -190,7 +190,26 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
}
BigDecimal balance = omtRegistry.getBalance();
omtBalanceSum = omtBalanceSum.add(balance);
contracts.add(omtRegistry.getContract());
}
BigDecimal tmtBalanceSum = BigDecimal.ZERO;
for (Registry tmtRegistry : tmtRegistries) {
Long counterPartyId = tmtRegistry.getCounterPartyId();
if (counterPartyId != null) {
Collection<ClearingMemberCategory> clearingMemberCategory = clearingMemberCategoryImdg.getCollectionObjectsByPredicate(
clearingMemberCategoryImdg.predicateBuilder().equals("companyId", counterPartyId)
);
if (!clearingMemberCategory.isEmpty()) {
ClearingMemberCategory next = clearingMemberCategory.iterator().next();
ClearingCategory category = IEnumKey.getEnumByKey(ClearingCategory.class, next.getClearingMemberCategory());
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, tmtRegistry.getSessionType());
if (category == ClearingCategory.I && sessionType == SessionType.XDEP) {
continue;
}
}
}
BigDecimal balance = tmtRegistry.getBalance();
tmtBalanceSum = tmtBalanceSum.add(balance);
contracts.add(tmtRegistry.getContract());
}
ImdgPredicate dmxPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DM_X).buildPredicate(pb);
Collection<Registry> dmxRegistries = registryImdg.getCollectionObjectsByPredicate(
@ -204,24 +223,6 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
)
);
BigDecimal dmxBalanceSum = dmxRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal tmtBalanceSum = tmtRegistries.stream()
.filter(reg -> {
Long counterPartyId = reg.getCounterPartyId();
if (counterPartyId != null) {
Collection<ClearingMemberCategory> clearingMemberCategory = clearingMemberCategoryImdg.getCollectionObjectsByPredicate(
clearingMemberCategoryImdg.predicateBuilder().equals("companyId", counterPartyId)
);
if (!clearingMemberCategory.isEmpty()) {
ClearingMemberCategory next = clearingMemberCategory.iterator().next();
ClearingCategory category = IEnumKey.getEnumByKey(ClearingCategory.class, next.getClearingMemberCategory());
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, reg.getSessionType());
return category != ClearingCategory.I || sessionType != SessionType.XDEP;
}
}
return true;
})
.map(Registry::getBalance)
.reduce(BigDecimal.ZERO, BigDecimal::add);
ksRepCashRegistersReport.setChangeBalance(tmtBalanceSum.subtract(omtBalanceSum).subtract(dmxBalanceSum));