ialbert 2026-04-30 18:14:23 +03:00
parent feb9f5783c
commit 672a463cad
2 changed files with 27 additions and 5 deletions

View file

@ -504,6 +504,24 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
registryImdg.insert(newDmau);
log.debug("stmt.id={} created DMAU.id={}", stmt.getId(), newDmau.getId());
});
Optional<Registry> dmai = RegistrySearch.builder(registryImdg)
.rgsCode(RegistryTradingParams.DMAI)
.companyId(cmp.getId())
.accountId(acc.getId())
.accountType(AccountType.Anlt)
.find();
dmai.ifPresentOrElse(
r -> log.debug("stmt.id={} DMAI.id={} found", stmt.getId(), r.getId()),
() -> log.debug("stmt.id={} DMAI not found", stmt.getId()));
Optional<BigDecimal> dmaiBalanceO = dmai.map(dmiService::setOk);
if (dmaiBalanceO.isPresent() && asts.isPresent()) {
AssetTrio trio = asts.get();
BigDecimal dmiBalance = dmaiBalanceO.get();
BigDecimal planBalance = safeBD(trio.a__t().getPlanBalance());
trio.a__t().setPlanBalance(planBalance.add(dmiBalance));
registryImdg.update(trio.a__t());
assets.process(trio.a__b(), trio.a__t(), trio.a__f(), BigDecimal.ZERO);
}
//DMAU подразумевает увеличение остатка поля balance и credit registry.code=DMAU
String genTime = formatInstant(sdf57.getGenerationTime(), readableDateTime);
String ntfMsg = dmauNotificationText(direction, genTime, sdf57);

View file

@ -151,11 +151,7 @@ public class DmiService {
String contract) {
BigDecimal[] dmiBalance = {null};
findDmiByContract(tcrId, securitySymbol, contract).ifPresentOrElse(d__i -> {
d__i.setRegistryStatus(RegistryStatus.OK.getKey());
d__i.setUpdated(Instant.now());
log.trace("updating {} status to {}", d__i.getRegistryCode(), d__i.getRegistryStatus());
rgsImdg.update(d__i);
dmiBalance[0] = BigDecimalUtil.safeBD(d__i.getBalance());
dmiBalance[0] = setOk(d__i);
}, () -> {
log.trace("didn't find DM*I by tcr.id={} securitySymbol={} contract={}",
tcrId, securitySymbol, contract);
@ -163,6 +159,14 @@ public class DmiService {
return Optional.ofNullable(dmiBalance[0]);
}
public BigDecimal setOk(Registry d__i) {
d__i.setRegistryStatus(RegistryStatus.OK.getKey());
d__i.setUpdated(Instant.now());
log.trace("updating {} status to {}", d__i.getRegistryCode(), d__i.getRegistryStatus());
rgsImdg.update(d__i);
return BigDecimalUtil.safeBD(d__i.getBalance());
}
private Optional<Registry> findDmiByContract(Long tcrId, String securitySymbol, String contract) {
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
RegistryTradingParams rgsCde = RegistryTradingParams.D__I;