identification funds AM*T search bigfix

This commit is contained in:
ialbert 2024-05-06 16:45:52 +03:00
parent d636a6b0ce
commit f2f94ca3e2
2 changed files with 19 additions and 4 deletions

View file

@ -371,9 +371,16 @@ public class RegistryService {
IValidator validator = identificationFundsVal.apply(payload);
Optional<EnumMessage> err = validator.tillFirstError();
if (err.isPresent()) {
log.error("IdentificationFundsRequest.id={} validation error: {}",
req.getId(),
msgResolver.resolve(err.get()));
log.error("IdentificationFundsRequest.id={} " +
"balance={} " +
"tradingClearingRegistryId={} " +
"companyId={} " +
"validation error: {}",
req.getId(),
payload != null ? payload.getBalance() : null,
payload != null ? payload.getTradingClearingRegistryId() : null,
payload != null ? payload.getCompanyId() : null,
msgResolver.resolve(err.get()));
return reqHelp.error(req.getId(), err.get());
}
Registry dmau = validator.getStored(Stored.PresentById);

View file

@ -18,6 +18,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.service.AssetTrio;
import ru.spcex.clearing.session.stage.util.RegistryUtil;
import ru.spcex.platform.enumeration.BalanceDimension;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.enumeration.RegistryInstrumentType;
import ru.spcex.platform.enumeration.RegistryStatus;
@ -30,6 +31,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
import ru.spcex.platform.utils.text.TextUtil;
@Service
public class AssetTBFProcessing {
@ -282,12 +284,18 @@ public class AssetTBFProcessing {
log.error("company.id={}, account.id={} - account not found", companyId, accountId);
return Optional.empty();
}
String currency;
if (TextUtil.isEmpty(account.getCurrency())) {
currency = CurrencyCode.RUB.getKey();
} else {
currency = account.getCurrency();
}
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
Function<RegistryTradingParams, ImdgPredicate> prdct = rgsCode -> pb.and(
pb.sql(RegistryCodeSqlBuilder.getInstance(rgsCode).build()),
pb.equals("companyId", companyId),
pb.equals("accountId", accountId),
pb.equals("securitySymbol", account.getCurrency())
pb.equals("securitySymbol", currency)
);
Registry amf = rgsImdg.getFirstObjectByPredicate(prdct.apply(AM_F));
Registry amb = rgsImdg.getFirstObjectByPredicate(prdct.apply(AM_B));