После зачисления с DMAU должно быть обращение в ТС

При DM_V поменять направление, затем закоментировать отправку в ТС.
This commit is contained in:
ialbert 2023-09-28 17:59:05 +03:00
parent caeece00f3
commit 11f6ea0b84
2 changed files with 50 additions and 33 deletions

View file

@ -12,11 +12,14 @@ import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.notification.NotificationSender; import ru.spcex.clearing.notification.NotificationSender;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationListRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.*; import ru.spcex.clearing.platform.messaging.domain.cud.registry.*;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.builder.PaymentInstructionBuilderV2; import ru.spcex.clearing.service.builder.PaymentInstructionBuilderV2;
import ru.spcex.clearing.service.integration.GatewayRequestCreator; import ru.spcex.clearing.service.integration.GatewayRequestCreator;
import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.registry.AssetTBFProcessing;
@ -42,12 +45,11 @@ import ru.spcex.platform.utils.validation.IValidator;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant; import java.time.Instant;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier;
import static ru.spcex.clearing.session.stage.impl.GatewayRequester.mapError;
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
@Service @Service
@ -66,6 +68,7 @@ public class RegistryService {
private final GatewayRequester gateway; private final GatewayRequester gateway;
private final TradingTimeService trdTime; private final TradingTimeService trdTime;
private final NotificationSender notification; private final NotificationSender notification;
private final KafkaSender kafkaSender;
private final IMessageResolver msgResolver; private final IMessageResolver msgResolver;
private final RequestHelper reqHelp; private final RequestHelper reqHelp;
@ -81,7 +84,7 @@ public class RegistryService {
GatewayRequester gateway, GatewayRequester gateway,
TradingTimeService tradingTimeService, TradingTimeService tradingTimeService,
NotificationSender notification, NotificationSender notification,
IMessageResolver msgResolver, KafkaSender kafkaSender, IMessageResolver msgResolver,
RequestHelper reqHelp, RequestHelper reqHelp,
UserRoleVerification rights, UserRoleVerification rights,
AssetTBFProcessing assets) { AssetTBFProcessing assets) {
@ -97,6 +100,7 @@ public class RegistryService {
this.gateway = gateway; this.gateway = gateway;
this.trdTime = tradingTimeService; this.trdTime = tradingTimeService;
this.notification = notification; this.notification = notification;
this.kafkaSender = kafkaSender;
this.assets = assets; this.assets = assets;
this.gateway.setName("RgsService|DM*V"); this.gateway.setName("RgsService|DM*V");
this.msgResolver = msgResolver; this.msgResolver = msgResolver;
@ -207,24 +211,24 @@ public class RegistryService {
return reqHelp.error(req.getId(), err.get()); return reqHelp.error(req.getId(), err.get());
} }
Registry rgs = validator.getStored(Stored.PresentById); Registry rgs = validator.getStored(Stored.PresentById);
Supplier<AssetOperationRequest> gtwBuilder = () -> GatewayRequestCreator.from(rgs); //Supplier<AssetOperationRequest> gtwBuilder = () -> GatewayRequestCreator.from(rgs, InOutDirection.in);
Optional<Boolean> gatewayOk; //Optional<Boolean> gatewayOk;
if (trdTime.isTradingTime()) { //if (trdTime.isTradingTime()) {
gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder); // gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder);
} else { //} else {
log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId()); // log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId());
gatewayOk = Optional.of(true); // gatewayOk = Optional.of(true);
} //}
if (gatewayOk.isEmpty() || !gatewayOk.get()) { //if (gatewayOk.isEmpty() || !gatewayOk.get()) {
String gtwErr = msgResolver.resolve(mapError(gatewayOk)); // String gtwErr = msgResolver.resolve(mapError(gatewayOk));
log.error("{}.id={} {}", // log.error("{}.id={} {}",
rgs.getRegistryCode(), // rgs.getRegistryCode(),
rgs.getId(), // rgs.getId(),
gtwErr); // gtwErr);
notification.sendNotification(ObjectType.rgst, // notification.sendNotification(ObjectType.rgst,
"Отметка о получении выписки: %s".formatted(gtwErr), // "Отметка о получении выписки: %s".formatted(gtwErr),
Priority.HIGH); // Priority.HIGH);
} //}
rgs.setRegistryStatus(payload.getRegistryStatus()); rgs.setRegistryStatus(payload.getRegistryStatus());
log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus()); log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus());
registryImdg.update(rgs); registryImdg.update(rgs);
@ -281,22 +285,19 @@ public class RegistryService {
.build(); .build();
pmt.setTransactionStatus(TransactionStatus.ok.getKey()); pmt.setTransactionStatus(TransactionStatus.ok.getKey());
pmtImdg.insert(pmt); pmtImdg.insert(pmt);
//BankAccount bnkAcc = bnkAccImdg.getFirstObjectBySQL("accountId = %d".formatted(accDeb.getId()));
// if (bnkAcc != null) {
// pmt.setAddresseeBankName(bnkAcc.getBankIdentificationCode());
// pmt.setDebit_csAccount(bnkAcc.getCorrespondentAccount());
// }
// Currency currency = currImdg.getFirstObjectBySQL("currencyCode = '%s'".formatted(CurrencyCode.RUB.getKey()));
// if (currency != null) {
// pmt.setCreditLeg_securityId(currency.getId());
// pmt.setDebitLeg_securityId(currency.getId());
// }
// pmt.setTransactionStatus(TransactionStatus.stld.getKey());
registryImdg.update(dmau); registryImdg.update(dmau);
registryImdg.update(asts.a__t()); registryImdg.update(asts.a__t());
assets.process(asts.a__b(), asts.a__t(), asts.a__f(), BigDecimal.ZERO); assets.process(asts.a__b(), asts.a__t(), asts.a__f(), BigDecimal.ZERO);
log.debug("IdentificationFundsRequest.id={} dmau.id={} am*t.id={} payment_instruction.id={}", log.debug("IdentificationFundsRequest.id={} dmau.id={} am*t.id={} payment_instruction.id={}",
req.getId(), dmau.getId(), asts.a__t().getId(), pmt.getId()); req.getId(), dmau.getId(), asts.a__t().getId(), pmt.getId());
if (trdTime.isTradingTime()) {
log.trace("sending gateway request for IdentificationFundsRequest.id={} dmau.id={}",
req.getId(), dmau.getId());
kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION,
gatewayRequest(dmau, payload.getBalance(),
accCompTcr.getCompany().getTradingCode(),
asts.a__t().getTradingClearingRegistry()));
}
return reqHelp.success(req.getId()); return reqHelp.success(req.getId());
} }
@ -516,4 +517,16 @@ public class RegistryService {
return new RequestInfoUpdate(req.getId(), Status.Success, null); return new RequestInfoUpdate(req.getId(), Status.Success, null);
} }
private AssetOperationListRequest gatewayRequest(Registry dmau, BigDecimal balance, String tradingCode, String tcrCode) {
AssetOperationListRequest gatewayRequest = new AssetOperationListRequest();
AssetOperationRequest req = GatewayRequestCreator.from(
dmau.getId(),
null,
balance,
InOutDirection.in,
tradingCode,
tcrCode);
gatewayRequest.setAssetOperationRequests(List.of(req));
return gatewayRequest;
}
} }

View file

@ -23,10 +23,14 @@ public class GatewayRequestCreator {
} }
public static AssetOperationRequest from(Registry rgs) { public static AssetOperationRequest from(Registry rgs) {
return from(rgs, InOutDirection.out);
}
public static AssetOperationRequest from(Registry rgs, InOutDirection dir) {
return from(rgs.getId(), return from(rgs.getId(),
null, null,
BigDecimalUtil.safeBD(rgs.getBalance()).abs(), BigDecimalUtil.safeBD(rgs.getBalance()).abs(),
InOutDirection.out, dir,
rgs.getTradingCode(), rgs.getTradingCode(),
rgs.getTradingClearingRegistry()); rgs.getTradingClearingRegistry());
} }