После зачисления с 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.notification.NotificationSender;
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.CreateRegistryRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.*;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
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.integration.GatewayRequestCreator;
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
@ -42,12 +45,11 @@ import ru.spcex.platform.utils.validation.IValidator;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
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;
@Service
@ -66,6 +68,7 @@ public class RegistryService {
private final GatewayRequester gateway;
private final TradingTimeService trdTime;
private final NotificationSender notification;
private final KafkaSender kafkaSender;
private final IMessageResolver msgResolver;
private final RequestHelper reqHelp;
@ -81,7 +84,7 @@ public class RegistryService {
GatewayRequester gateway,
TradingTimeService tradingTimeService,
NotificationSender notification,
IMessageResolver msgResolver,
KafkaSender kafkaSender, IMessageResolver msgResolver,
RequestHelper reqHelp,
UserRoleVerification rights,
AssetTBFProcessing assets) {
@ -97,6 +100,7 @@ public class RegistryService {
this.gateway = gateway;
this.trdTime = tradingTimeService;
this.notification = notification;
this.kafkaSender = kafkaSender;
this.assets = assets;
this.gateway.setName("RgsService|DM*V");
this.msgResolver = msgResolver;
@ -207,24 +211,24 @@ public class RegistryService {
return reqHelp.error(req.getId(), err.get());
}
Registry rgs = validator.getStored(Stored.PresentById);
Supplier<AssetOperationRequest> gtwBuilder = () -> GatewayRequestCreator.from(rgs);
Optional<Boolean> gatewayOk;
if (trdTime.isTradingTime()) {
gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder);
} else {
log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId());
gatewayOk = Optional.of(true);
}
if (gatewayOk.isEmpty() || !gatewayOk.get()) {
String gtwErr = msgResolver.resolve(mapError(gatewayOk));
log.error("{}.id={} {}",
rgs.getRegistryCode(),
rgs.getId(),
gtwErr);
notification.sendNotification(ObjectType.rgst,
"Отметка о получении выписки: %s".formatted(gtwErr),
Priority.HIGH);
}
//Supplier<AssetOperationRequest> gtwBuilder = () -> GatewayRequestCreator.from(rgs, InOutDirection.in);
//Optional<Boolean> gatewayOk;
//if (trdTime.isTradingTime()) {
// gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder);
//} else {
// log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId());
// gatewayOk = Optional.of(true);
//}
//if (gatewayOk.isEmpty() || !gatewayOk.get()) {
// String gtwErr = msgResolver.resolve(mapError(gatewayOk));
// log.error("{}.id={} {}",
// rgs.getRegistryCode(),
// rgs.getId(),
// gtwErr);
// notification.sendNotification(ObjectType.rgst,
// "Отметка о получении выписки: %s".formatted(gtwErr),
// Priority.HIGH);
//}
rgs.setRegistryStatus(payload.getRegistryStatus());
log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus());
registryImdg.update(rgs);
@ -281,22 +285,19 @@ public class RegistryService {
.build();
pmt.setTransactionStatus(TransactionStatus.ok.getKey());
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(asts.a__t());
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={}",
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());
}
@ -516,4 +517,16 @@ public class RegistryService {
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) {
return from(rgs, InOutDirection.out);
}
public static AssetOperationRequest from(Registry rgs, InOutDirection dir) {
return from(rgs.getId(),
null,
BigDecimalUtil.safeBD(rgs.getBalance()).abs(),
InOutDirection.out,
dir,
rgs.getTradingCode(),
rgs.getTradingClearingRegistry());
}