SDF57 DM*T/DM*X запускают сессию по возвратам депозитов
перерасчет ассетов при проставлении ОК DM*V
This commit is contained in:
parent
091dc2dc1d
commit
d9e2796185
2 changed files with 23 additions and 2 deletions
|
|
@ -19,6 +19,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistrySplitDep
|
|||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||
import ru.spcex.clearing.service.integration.GatewayRequestCreator;
|
||||
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
|
||||
import ru.spcex.clearing.service.schedule.TradingTimeService;
|
||||
import ru.spcex.clearing.service.validation.ValidationStored;
|
||||
import ru.spcex.clearing.session.stage.impl.GatewayRequester;
|
||||
|
|
@ -66,6 +67,7 @@ public class RegistryService {
|
|||
private final IMessageResolver msgResolver;
|
||||
private final RequestHelper reqHelp;
|
||||
private final UserRoleVerification rights;
|
||||
private final AssetTBFProcessing assets;
|
||||
|
||||
public RegistryService(ImdgProvider imdgProvider,
|
||||
@Qualifier("returnDepositValidator") Function<RegistryReturnDepositRequest, IValidator> returnDepositVal,
|
||||
|
|
@ -73,7 +75,7 @@ public class RegistryService {
|
|||
@Qualifier("splitDepositValidator") Function<RegistrySplitDepositActionRequest, IValidator> splitDepositActionVal,
|
||||
@Qualifier("statusExtractValidator") Function<RegistryChangeStatusExtractRequest, IValidator> statusExtractVal,
|
||||
GatewayRequester gateway, TradingTimeService tradingTimeService, NotificationSender notification, IMessageResolver msgResolver,
|
||||
RequestHelper reqHelp, UserRoleVerification rights) {
|
||||
RequestHelper reqHelp, UserRoleVerification rights, AssetTBFProcessing assets) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
|
|
@ -84,6 +86,7 @@ public class RegistryService {
|
|||
this.gateway = gateway;
|
||||
this.trdTime = tradingTimeService;
|
||||
this.notification = notification;
|
||||
this.assets = assets;
|
||||
this.gateway.setName("RgsService|DM*V");
|
||||
this.msgResolver = msgResolver;
|
||||
this.reqHelp = reqHelp;
|
||||
|
|
@ -214,6 +217,13 @@ public class RegistryService {
|
|||
rgs.setRegistryStatus(payload.getRegistryStatus());
|
||||
log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus());
|
||||
registryImdg.update(rgs);
|
||||
assets.searchMoneyByAccAndCompany(rgs.getCompanyId(), rgs.getAccountId())
|
||||
.ifPresentOrElse(
|
||||
astTrio -> assets.process(astTrio.a__b(),
|
||||
astTrio.a__t(),
|
||||
astTrio.a__f(),
|
||||
BigDecimal.ZERO),
|
||||
() -> log.error("RegistryChangeStatusExtractRequest rgs.id={} assets not found", rgs.getId()));
|
||||
return reqHelp.success(req.getId());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||
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.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||
import ru.spcex.clearing.service.AnltSearcher;
|
||||
import ru.spcex.clearing.service.AssetTrio;
|
||||
|
|
@ -57,6 +58,7 @@ import java.util.Collection;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -160,6 +162,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||
result.setChildGenerationId(generationIdForGroup);
|
||||
log.info("SDF57 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null));
|
||||
AtomicReference<Boolean> sessionIsNeededFlag = new AtomicReference<>(false);
|
||||
for (SDf57 sdf57 : sdf) {
|
||||
IValidator validator = sDf57Validator.apply(sdf57);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
|
|
@ -268,7 +271,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
//1. у stmt accountId 3021, addresseId 2610034, contract DT1000S001U/280623/8/7
|
||||
//
|
||||
Optional<Registry> dm__Found = RegistrySearch.builder(registryImdg)
|
||||
.rgsCode(RegistryTradingParams.DM__)
|
||||
.rgsCode(RegistryTradingParams.DM_T)
|
||||
.companyId(company.getId())
|
||||
.accountId(account.getId())
|
||||
.contract(stmt.getContract())
|
||||
|
|
@ -314,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
sdf57.getSpecif(),
|
||||
om_t.getId(),
|
||||
registryD.getId());
|
||||
sessionIsNeededFlag.set(true);
|
||||
} else if (tm_tFound.isPresent()) {
|
||||
Registry tm_t = tm_tFound.get();
|
||||
Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X);
|
||||
|
|
@ -323,6 +327,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
sdf57.getSpecif(),
|
||||
tm_t.getId(),
|
||||
registryD.getId());
|
||||
sessionIsNeededFlag.set(true);
|
||||
}
|
||||
}
|
||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
||||
|
|
@ -410,6 +415,12 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
statementDeb.map(stmt -> new StmtCmpAcc(stmt, companyDeb, accountDeb)).ifPresent(registersUpdate);
|
||||
statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate);
|
||||
}
|
||||
if (sessionIsNeededFlag.get()) {
|
||||
LauncherCommandRequest sessionTask = new LauncherCommandRequest();
|
||||
sessionTask.setSection(Section.MKR.getKey());
|
||||
sessionTask.setSessionType(SessionType.XDEP.getKey());
|
||||
kafka.sendRequestToQueue(Task.startOfClearing.topic(), sessionTask);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue