добавил отправку команды на clearing-service по событиям tcr new/tcr new auto добавил поиск и обновление регистров на базе созданных ТКР
This commit is contained in:
parent
be55af4c5f
commit
2ad79bb683
5 changed files with 65 additions and 2 deletions
|
|
@ -31,7 +31,9 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
|||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.enumeration.ServiceStatus;
|
||||
import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose;
|
||||
import ru.spcex.platform.enumeration.TradingClearingRegistryType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
|
|
@ -265,6 +267,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
|||
// sendNotificationToCompanySvc(tradingClearingRegistry); при автосоздании ТКР в company-service не отправлять.
|
||||
// sendNotificationToClearingSvc(tradingClearingRegistry);
|
||||
sendNotificationToReportSvc(tradingClearingRegistry);
|
||||
sendNotificationToClearingSvc(tradingClearingRegistry);
|
||||
|
||||
log.debug("successfully processed, id {}", id);
|
||||
return null;
|
||||
|
|
@ -335,6 +338,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
|||
log.info("New TCR.id={} was created.", tradingClearingRegistry.getId());
|
||||
|
||||
sendNotificationToReportSvc(tradingClearingRegistry);
|
||||
sendNotificationToClearingSvc(tradingClearingRegistry);
|
||||
|
||||
log.debug("successfully processed, id {}", id);
|
||||
return null;
|
||||
|
|
@ -455,6 +459,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
|||
protected void sendNotificationToClearingSvc(TradingClearingRegistry tradingClearingRegistry) {
|
||||
CreateRegistryRequest request = new CreateRegistryRequest();
|
||||
request.setCompanyId(tradingClearingRegistry.getCompanyId());
|
||||
request.setTradingClearingRegistryId(tradingClearingRegistry.getId());
|
||||
log.debug("Send message to kafka \"{}\": {}", Consts.REGISTRY_NEW, LogFormatter.toStringWrapper(request));
|
||||
kafkaSender.sendRequestToQueue(Consts.REGISTRY_NEW, request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean {
|
|||
.setConsumer(event -> clearingService.executeSTrade())
|
||||
.forDestination(S_TRADES_IMPORTED, callbacks::put);
|
||||
callback(CreateRegistryRequest.class)
|
||||
.setConsumer(event -> registryService.createRegistry(event.getRequestPayload()))
|
||||
.setConsumer(event -> registryService.updateRegistryIfNeeded(event.getRequestPayload()))
|
||||
.forDestination(Consts.REGISTRY_NEW, callbacks::put);
|
||||
callback(LauncherCommandRequest.class)
|
||||
.setConsumer(event -> registryService.resetBalances())
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRe
|
|||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
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 ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -58,6 +61,41 @@ public class RegistryService {
|
|||
|
||||
}
|
||||
|
||||
public void updateRegistryIfNeeded(CreateRegistryRequest requestPayload) {
|
||||
TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(requestPayload.getTradingClearingRegistryId());
|
||||
if (tcr == null) {
|
||||
log.error("TradingClearingRegistry with id: {} not found", requestPayload.getTradingClearingRegistryId());
|
||||
return;
|
||||
}
|
||||
log.debug("TCR new event, TCR#id={}", tcr.getId());
|
||||
Long accountId = tcr.getMoneyAccountId() != null ? tcr.getMoneyAccountId() : tcr.getDepoAccountId();
|
||||
Collection<Registry> registries = findRegistry(tcr.getCompanyId(), accountId);
|
||||
log.debug("TCR#id={} registries for update found: {}", tcr.getId(), registries.size());
|
||||
registries.forEach(rgs -> {
|
||||
rgs.setTradingClearingRegistryId(tcr.getId());
|
||||
rgs.setTradingClearingRegistry(tcr.getCode());
|
||||
rgs.setRegistryCapacity(tcr.getTradingClearingRegistryType());
|
||||
rgs.setUpdated(Instant.now());
|
||||
registryImdg.update(rgs);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* находим все регистры AM__/AS__ по пришедшему ТКР
|
||||
*/
|
||||
private Collection<Registry> findRegistry(Long companyId, Long accountId) { //String account
|
||||
ImdgPredicateBuilder prdBldr = registryImdg.predicateBuilder();
|
||||
String rgsCodeSQL = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM__, RegistryTradingParams.AS__).build();
|
||||
ImdgPredicate rgsCodeSqlPredicate = prdBldr.and(
|
||||
prdBldr.sql(rgsCodeSQL),
|
||||
prdBldr.equals("companyId", companyId),
|
||||
prdBldr.equals("accountId", accountId),
|
||||
// prdBldr.equals("account", account),
|
||||
prdBldr.sql("tradingClearingRegistryId is null")
|
||||
);
|
||||
return registryImdg.getCollectionObjectsByPredicate(rgsCodeSqlPredicate);
|
||||
}
|
||||
|
||||
private RegistryTradingParams createRegistryInfoByType(String type) {
|
||||
TradingClearingRegistryType registryType = IEnumKey.getEnumByKey(TradingClearingRegistryType.class, type);
|
||||
RegistryTradingParams registryInfo = null;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
|||
public final static RegistryTradingParams LS_T;
|
||||
public final static RegistryTradingParams L__T;
|
||||
public final static RegistryTradingParams DM__;
|
||||
public final static RegistryTradingParams AM__;
|
||||
public final static RegistryTradingParams AS__;
|
||||
|
||||
static {
|
||||
OS_T = new RegistryTradingParams(RegistryDesignation.O,
|
||||
|
|
@ -107,6 +109,14 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
|||
RegistryInstrumentType.M,
|
||||
null,
|
||||
null);
|
||||
AM__ = new RegistryTradingParams(RegistryDesignation.A,
|
||||
RegistryInstrumentType.M,
|
||||
null,
|
||||
null);
|
||||
AS__ = new RegistryTradingParams(RegistryDesignation.A,
|
||||
RegistryInstrumentType.S,
|
||||
null,
|
||||
null);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||
public class CreateRegistryRequest {
|
||||
@JsonProperty
|
||||
private Long companyId;
|
||||
@JsonProperty
|
||||
private Long tradingClearingRegistryId;
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
|
|
@ -13,4 +15,12 @@ public class CreateRegistryRequest {
|
|||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getTradingClearingRegistryId() {
|
||||
return tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
|
||||
this.tradingClearingRegistryId = tradingClearingRegistryId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue