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.RequestInfoUpdate;
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
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.schedule.TradingTimeService;
|
import ru.spcex.clearing.service.schedule.TradingTimeService;
|
||||||
import ru.spcex.clearing.service.validation.ValidationStored;
|
import ru.spcex.clearing.service.validation.ValidationStored;
|
||||||
import ru.spcex.clearing.session.stage.impl.GatewayRequester;
|
import ru.spcex.clearing.session.stage.impl.GatewayRequester;
|
||||||
|
|
@ -66,6 +67,7 @@ public class RegistryService {
|
||||||
private final IMessageResolver msgResolver;
|
private final IMessageResolver msgResolver;
|
||||||
private final RequestHelper reqHelp;
|
private final RequestHelper reqHelp;
|
||||||
private final UserRoleVerification rights;
|
private final UserRoleVerification rights;
|
||||||
|
private final AssetTBFProcessing assets;
|
||||||
|
|
||||||
public RegistryService(ImdgProvider imdgProvider,
|
public RegistryService(ImdgProvider imdgProvider,
|
||||||
@Qualifier("returnDepositValidator") Function<RegistryReturnDepositRequest, IValidator> returnDepositVal,
|
@Qualifier("returnDepositValidator") Function<RegistryReturnDepositRequest, IValidator> returnDepositVal,
|
||||||
|
|
@ -73,7 +75,7 @@ public class RegistryService {
|
||||||
@Qualifier("splitDepositValidator") Function<RegistrySplitDepositActionRequest, IValidator> splitDepositActionVal,
|
@Qualifier("splitDepositValidator") Function<RegistrySplitDepositActionRequest, IValidator> splitDepositActionVal,
|
||||||
@Qualifier("statusExtractValidator") Function<RegistryChangeStatusExtractRequest, IValidator> statusExtractVal,
|
@Qualifier("statusExtractValidator") Function<RegistryChangeStatusExtractRequest, IValidator> statusExtractVal,
|
||||||
GatewayRequester gateway, TradingTimeService tradingTimeService, NotificationSender notification, IMessageResolver msgResolver,
|
GatewayRequester gateway, TradingTimeService tradingTimeService, NotificationSender notification, IMessageResolver msgResolver,
|
||||||
RequestHelper reqHelp, UserRoleVerification rights) {
|
RequestHelper reqHelp, UserRoleVerification rights, AssetTBFProcessing assets) {
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
|
@ -84,6 +86,7 @@ public class RegistryService {
|
||||||
this.gateway = gateway;
|
this.gateway = gateway;
|
||||||
this.trdTime = tradingTimeService;
|
this.trdTime = tradingTimeService;
|
||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
|
this.assets = assets;
|
||||||
this.gateway.setName("RgsService|DM*V");
|
this.gateway.setName("RgsService|DM*V");
|
||||||
this.msgResolver = msgResolver;
|
this.msgResolver = msgResolver;
|
||||||
this.reqHelp = reqHelp;
|
this.reqHelp = reqHelp;
|
||||||
|
|
@ -214,6 +217,13 @@ public class RegistryService {
|
||||||
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);
|
||||||
|
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());
|
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.balance.StatementRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationListRequest;
|
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.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.clearing.service.AnltSearcher;
|
import ru.spcex.clearing.service.AnltSearcher;
|
||||||
import ru.spcex.clearing.service.AssetTrio;
|
import ru.spcex.clearing.service.AssetTrio;
|
||||||
|
|
@ -57,6 +58,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
@ -160,6 +162,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||||
result.setChildGenerationId(generationIdForGroup);
|
result.setChildGenerationId(generationIdForGroup);
|
||||||
log.info("SDF57 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null));
|
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) {
|
for (SDf57 sdf57 : sdf) {
|
||||||
IValidator validator = sDf57Validator.apply(sdf57);
|
IValidator validator = sDf57Validator.apply(sdf57);
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
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
|
//1. у stmt accountId 3021, addresseId 2610034, contract DT1000S001U/280623/8/7
|
||||||
//
|
//
|
||||||
Optional<Registry> dm__Found = RegistrySearch.builder(registryImdg)
|
Optional<Registry> dm__Found = RegistrySearch.builder(registryImdg)
|
||||||
.rgsCode(RegistryTradingParams.DM__)
|
.rgsCode(RegistryTradingParams.DM_T)
|
||||||
.companyId(company.getId())
|
.companyId(company.getId())
|
||||||
.accountId(account.getId())
|
.accountId(account.getId())
|
||||||
.contract(stmt.getContract())
|
.contract(stmt.getContract())
|
||||||
|
|
@ -314,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
sdf57.getSpecif(),
|
sdf57.getSpecif(),
|
||||||
om_t.getId(),
|
om_t.getId(),
|
||||||
registryD.getId());
|
registryD.getId());
|
||||||
|
sessionIsNeededFlag.set(true);
|
||||||
} else if (tm_tFound.isPresent()) {
|
} else if (tm_tFound.isPresent()) {
|
||||||
Registry tm_t = tm_tFound.get();
|
Registry tm_t = tm_tFound.get();
|
||||||
Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X);
|
Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X);
|
||||||
|
|
@ -323,6 +327,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
sdf57.getSpecif(),
|
sdf57.getSpecif(),
|
||||||
tm_t.getId(),
|
tm_t.getId(),
|
||||||
registryD.getId());
|
registryD.getId());
|
||||||
|
sessionIsNeededFlag.set(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
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);
|
statementDeb.map(stmt -> new StmtCmpAcc(stmt, companyDeb, accountDeb)).ifPresent(registersUpdate);
|
||||||
statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue