--- добавил (обновление или добавление) registerExecution по итогам сделки ввел проверку на дубликат при генерации всего реестра
This commit is contained in:
parent
26145a7587
commit
478b711dee
4 changed files with 500 additions and 5 deletions
|
|
@ -14,6 +14,8 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
|||
import ru.clearing.classes.statics.data.register.ExecutionRegister;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.ExecutionRegisterOnSaveRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
|
|
@ -31,7 +33,7 @@ import static ru.spcex.clearing.imdg.IMDGDistributedNames.*;
|
|||
import static ru.spcex.platform.enumeration.Task.createRegistry_ECNR;
|
||||
|
||||
@Service
|
||||
public class ExecutionRegisterService extends QueueConsumer implements InitializingBean {
|
||||
public class ExecutionRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<ExecutionCommon> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final Imdg<ExecutionRegister> executionRegisterMap;
|
||||
|
|
@ -58,6 +60,9 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
callback(LauncherCommandRequest.class)
|
||||
.setConsumer(this::executionRegisterNew)
|
||||
.forDestination(createRegistry_ECNR.topic(), callbacks::put);
|
||||
callback(ExecutionRegisterOnSaveRequest.class)
|
||||
.setConsumer(this::executionRegisterOnSavingOfTrade)
|
||||
.forDestination(Consts.REGISTRY_EXECUTION_REGISTER_ON_SAVE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
|
|
@ -66,11 +71,41 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
log.debug("ExecutionRegisterNewRequest received");
|
||||
Collection<ExecutionFond> collectionFond = executionFondMap.getCollectionObjectsByFieldValues(Map.of("clearingDate", localDateNow));
|
||||
Collection<ExecutionDeposit> collectionDeposit = executionDepositMap.getCollectionObjectsByFieldValues(Map.of("clearingDate", localDateNow));
|
||||
collectionFond.forEach(x -> insertExecutionRegister(true, x));
|
||||
collectionDeposit.forEach(x -> insertExecutionRegister(false, x));
|
||||
collectionFond.forEach(x -> {
|
||||
if (!isDuplicateInMap(x)) {
|
||||
insertExecutionRegister(true, x);
|
||||
}
|
||||
});
|
||||
collectionDeposit.forEach(x -> {
|
||||
if (!isDuplicateInMap(x)) {
|
||||
insertExecutionRegister(false, x);
|
||||
}
|
||||
});
|
||||
log.debug("successfully processed...");
|
||||
}
|
||||
|
||||
public void executionRegisterOnSavingOfTrade(BaseRequest<ExecutionRegisterOnSaveRequest> userRequest) {
|
||||
ExecutionRegisterOnSaveRequest request = userRequest.getRequestPayload();
|
||||
ExecutionCommon common = setUpExecutionCommon(request);
|
||||
boolean isFond = request.isExecutionFond();
|
||||
if (!isDuplicateInMap(common)) {
|
||||
insertExecutionRegister(isFond, common);
|
||||
} else {
|
||||
updateExecutionRegister(isFond, common);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateExecutionRegister(boolean isFond, ExecutionCommon common) {
|
||||
log.trace("Started updating ExecutionRegister entity...");
|
||||
ExecutionRegister registerToUpdate = getDuplicate(common);
|
||||
registerToUpdate.setSecurityId(common.getSecurityId());
|
||||
registerToUpdate.setExchangeExecutionTime(common.getExchangeExecutionTime());
|
||||
registerToUpdate.setAmount(isFond ? ((ExecutionFond) common).getSettlementAmount() : ((ExecutionDeposit) common).getFirstLegAmount());
|
||||
registerToUpdate.setQuantity(isFond ? common.getQuantity() : null);
|
||||
registerToUpdate.setUpdated(Instant.now());
|
||||
executionRegisterMap.update(registerToUpdate);
|
||||
log.debug("Updated successfully ExecutionRegister entity with id: {}", registerToUpdate.getId());
|
||||
}
|
||||
|
||||
private void insertExecutionRegister(Boolean isFond, ExecutionCommon common) {
|
||||
log.trace("Started generating ExecutionRegister entity...");
|
||||
|
|
@ -164,7 +199,55 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
executionRegister.setClearingDate(common.getClearingDate());
|
||||
executionRegister.setCreated(Instant.now());
|
||||
executionRegisterMap.insert(executionRegister);
|
||||
log.debug("inserted successfully LiabilitiesRegister entity with id: {}", executionRegister.getId());
|
||||
log.debug("inserted successfully ExecutionRegister entity with id: {}", executionRegister.getId());
|
||||
}
|
||||
|
||||
private ExecutionCommon setUpExecutionCommon(ExecutionRegisterOnSaveRequest request) {
|
||||
ExecutionFond fond = null;
|
||||
ExecutionDeposit deposit = null;
|
||||
if (request.isExecutionFond()) {
|
||||
fond = new ExecutionFond();
|
||||
fond.setExchangeOrderId(request.getExchangeOrderId());
|
||||
fond.setSettlementAmount(request.getSettlementAmount());
|
||||
fond.setComment(request.getComment());
|
||||
fond.setClientCodeId(request.getClientCodeId());
|
||||
fond.setSettlementCode(request.getSettlementCode());
|
||||
fond.setSettlementDate(request.getSettlementDate());
|
||||
fond.setExchangeExecutionMicroseconds(request.getExchangeExecutionMicroseconds());
|
||||
} else {
|
||||
deposit = new ExecutionDeposit();
|
||||
deposit.setFirstLegAmount(request.getFirstLegAmount());
|
||||
deposit.setSecondLegAmount(request.getSecondLegAmount());
|
||||
deposit.setFirstLegSettlementDate(request.getFirstLegSettlementDate());
|
||||
deposit.setSecondLegSettlementDate(request.getSecondLegSettlementDate());
|
||||
deposit.setFirstLegSettlementCode(request.getFirstLegSettlementCode());
|
||||
deposit.setSecondLegSettlementCode(request.getSecondLegSettlementCode());
|
||||
deposit.setContract(request.getContract());
|
||||
deposit.setSecurityCode(request.getSecurityCode());
|
||||
}
|
||||
boolean isFond = fond != null;
|
||||
ExecutionCommon common = isFond ? fond : deposit;
|
||||
common.setExchangeExecutionId(request.getExchangeExecutionId());
|
||||
common.setExchangeExecutionTime(request.getExchangeExecutionTime());
|
||||
common.setTradingDate(request.getTradingDate());
|
||||
common.setTradingClearingRegistryId(request.getTradingClearingRegistryId());
|
||||
common.setMarket(request.getMarket());
|
||||
common.setPrice(request.getPrice());
|
||||
common.setLots(request.getLots());
|
||||
common.setQuantity(request.getQuantity());
|
||||
common.setInterestAmount(request.getInterestAmount());
|
||||
common.setSide(request.getSide());
|
||||
common.setSettlementCurrency(request.getSettlementCurrency());
|
||||
common.setCompanyId(request.getCompanyId());
|
||||
common.setDuration(request.getDuration());
|
||||
common.setSecurityFullName(request.getSecurityFullName());
|
||||
common.setSecuritySymbol(request.getSecuritySymbol());
|
||||
common.setSecurityId(request.getSecurityId());
|
||||
common.setCounterPartyId(request.getCounterPartyId());
|
||||
common.setCoverageStatus(request.getCoverageStatus());
|
||||
common.setSessionId(request.getSessionId());
|
||||
common.setClearingDate(request.getClearingDate());
|
||||
return common;
|
||||
}
|
||||
|
||||
private Optional<CompanySymbols> getCompanySymbolsByCompanyIdAndCompanySymbol(String companySymbol, Long companyId) {
|
||||
|
|
@ -190,4 +273,18 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getFirstObjectByFieldValues(fieldValues);
|
||||
return Optional.ofNullable(tradingClearingRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDuplicateInMap(ExecutionCommon entity) {
|
||||
Map<String, ? extends Comparable<?>> map = Map.of("exchangeExecutionId", entity.getExchangeExecutionId(),
|
||||
"tradingDate", LocalDate.now()); //clarify timezone
|
||||
return !executionRegisterMap.getCollectionObjectsByFieldValues(map).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
public ExecutionRegister getDuplicate(ExecutionCommon entity) {
|
||||
Map<String, ? extends Comparable<?>> map = Map.of("exchangeExecutionId", entity.getExchangeExecutionId(),
|
||||
"tradingDate", LocalDate.now()); //clarify timezone
|
||||
return executionRegisterMap.getSingleObjectByFieldValues(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package ru.spcex.clearing.registry.service;
|
||||
|
||||
public interface ICheckDuplicate<T> {
|
||||
/**
|
||||
* @return true - если есть дубликат в реестре, false - если дубликатов нет
|
||||
* */
|
||||
boolean isDuplicateInMap(T entity);
|
||||
}
|
||||
|
|
@ -171,7 +171,7 @@ public interface Consts {
|
|||
String REGISTRY_DEPO_PAYMENT_INSTRUCTION_REGISTER_NEW = "registry-depo-payment-instruction-register-new";
|
||||
String REGISTRY_EXCLUDE_LIABILITIES_REGISTER_NEW = "registry-exclude-liabilities-register-new";
|
||||
String REGISTRY_LIABILITIES_REGISTER_NEW = "registry-liabilities-register-new";
|
||||
String REGISTRY_EXECUTION_REGISTER_NEW = "registry-execution-register-new";
|
||||
String REGISTRY_EXECUTION_REGISTER_ON_SAVE = "registry-execution-register-on-save";
|
||||
String REGISTRY_EXECUTION_REGISTER_UPDATE = "registry-execution-register-update";
|
||||
|
||||
//TODO IS IT NEEDED RIGHT HERE?
|
||||
|
|
|
|||
|
|
@ -0,0 +1,390 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class ExecutionRegisterOnSaveRequest {
|
||||
@JsonProperty
|
||||
private Long exchangeExecutionId;
|
||||
@JsonSerialize(using = InstantSerializer.class)
|
||||
@JsonDeserialize(using = InstantDeserializer.class)
|
||||
@JsonProperty
|
||||
private Instant exchangeExecutionTime;
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
@JsonProperty
|
||||
private LocalDate tradingDate;
|
||||
@JsonProperty
|
||||
private Long tradingClearingRegistryId;
|
||||
@JsonProperty
|
||||
private String market;
|
||||
@JsonProperty
|
||||
private BigDecimal price;
|
||||
@JsonProperty
|
||||
private BigDecimal lots;
|
||||
@JsonProperty
|
||||
private BigDecimal quantity;
|
||||
@JsonProperty
|
||||
private BigDecimal interestAmount;
|
||||
@JsonProperty
|
||||
private String side;
|
||||
@JsonProperty
|
||||
private String settlementCurrency;
|
||||
@JsonProperty
|
||||
private Long companyId;
|
||||
@JsonProperty
|
||||
private Long duration;
|
||||
@JsonProperty
|
||||
private String securityFullName;
|
||||
@JsonProperty
|
||||
private String securitySymbol;
|
||||
@JsonProperty
|
||||
private Long securityId;
|
||||
@JsonProperty
|
||||
private Long counterPartyId;
|
||||
@JsonProperty
|
||||
private String coverageStatus;
|
||||
@JsonProperty
|
||||
private Long sessionId;
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
@JsonProperty
|
||||
private LocalDate clearingDate;
|
||||
|
||||
//execution fond
|
||||
@JsonProperty
|
||||
private BigDecimal firstLegAmount;
|
||||
@JsonProperty
|
||||
private BigDecimal secondLegAmount;
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
@JsonProperty
|
||||
private LocalDate firstLegSettlementDate;
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
@JsonProperty
|
||||
private LocalDate secondLegSettlementDate;
|
||||
@JsonProperty
|
||||
private String firstLegSettlementCode;
|
||||
@JsonProperty
|
||||
private String secondLegSettlementCode;
|
||||
@JsonProperty
|
||||
private String contract;
|
||||
@JsonProperty
|
||||
private String securityCode;
|
||||
|
||||
//execution deposit
|
||||
@JsonProperty
|
||||
private Long exchangeOrderId;
|
||||
@JsonProperty
|
||||
private BigDecimal settlementAmount;
|
||||
@JsonProperty
|
||||
private String comment;
|
||||
@JsonProperty
|
||||
private Long clientCodeId;
|
||||
@JsonProperty
|
||||
private String settlementCode;
|
||||
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
@JsonProperty
|
||||
private LocalDate settlementDate;
|
||||
@JsonSerialize(using = InstantSerializer.class)
|
||||
@JsonDeserialize(using = InstantDeserializer.class)
|
||||
@JsonProperty
|
||||
private Instant exchangeExecutionMicroseconds;
|
||||
|
||||
public boolean isExecutionFond() {
|
||||
return exchangeOrderId != null || settlementAmount != null || comment != null || clientCodeId != null || settlementCode != null || settlementDate != null || exchangeExecutionMicroseconds != null;
|
||||
}
|
||||
|
||||
public Long getExchangeExecutionId() {
|
||||
return exchangeExecutionId;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionId(Long exchangeExecutionId) {
|
||||
this.exchangeExecutionId = exchangeExecutionId;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionTime() {
|
||||
return exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionTime(Instant exchangeExecutionTime) {
|
||||
this.exchangeExecutionTime = exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public LocalDate getTradingDate() {
|
||||
return tradingDate;
|
||||
}
|
||||
|
||||
public void setTradingDate(LocalDate tradingDate) {
|
||||
this.tradingDate = tradingDate;
|
||||
}
|
||||
|
||||
public Long getTradingClearingRegistryId() {
|
||||
return tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
|
||||
this.tradingClearingRegistryId = tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public String getMarket() {
|
||||
return market;
|
||||
}
|
||||
|
||||
public void setMarket(String market) {
|
||||
this.market = market;
|
||||
}
|
||||
|
||||
public BigDecimal getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(BigDecimal price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
public BigDecimal getLots() {
|
||||
return lots;
|
||||
}
|
||||
|
||||
public void setLots(BigDecimal lots) {
|
||||
this.lots = lots;
|
||||
}
|
||||
|
||||
public BigDecimal getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(BigDecimal quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestAmount() {
|
||||
return interestAmount;
|
||||
}
|
||||
|
||||
public void setInterestAmount(BigDecimal interestAmount) {
|
||||
this.interestAmount = interestAmount;
|
||||
}
|
||||
|
||||
public String getSide() {
|
||||
return side;
|
||||
}
|
||||
|
||||
public void setSide(String side) {
|
||||
this.side = side;
|
||||
}
|
||||
|
||||
public String getSettlementCurrency() {
|
||||
return settlementCurrency;
|
||||
}
|
||||
|
||||
public void setSettlementCurrency(String settlementCurrency) {
|
||||
this.settlementCurrency = settlementCurrency;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Long duration) {
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public String getSecurityFullName() {
|
||||
return securityFullName;
|
||||
}
|
||||
|
||||
public void setSecurityFullName(String securityFullName) {
|
||||
this.securityFullName = securityFullName;
|
||||
}
|
||||
|
||||
public String getSecuritySymbol() {
|
||||
return securitySymbol;
|
||||
}
|
||||
|
||||
public void setSecuritySymbol(String securitySymbol) {
|
||||
this.securitySymbol = securitySymbol;
|
||||
}
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
||||
public void setSecurityId(Long securityId) {
|
||||
this.securityId = securityId;
|
||||
}
|
||||
|
||||
public Long getCounterPartyId() {
|
||||
return counterPartyId;
|
||||
}
|
||||
|
||||
public void setCounterPartyId(Long counterPartyId) {
|
||||
this.counterPartyId = counterPartyId;
|
||||
}
|
||||
|
||||
public String getCoverageStatus() {
|
||||
return coverageStatus;
|
||||
}
|
||||
|
||||
public void setCoverageStatus(String coverageStatus) {
|
||||
this.coverageStatus = coverageStatus;
|
||||
}
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(Long sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
public LocalDate getClearingDate() {
|
||||
return clearingDate;
|
||||
}
|
||||
|
||||
public void setClearingDate(LocalDate clearingDate) {
|
||||
this.clearingDate = clearingDate;
|
||||
}
|
||||
|
||||
public BigDecimal getFirstLegAmount() {
|
||||
return firstLegAmount;
|
||||
}
|
||||
|
||||
public void setFirstLegAmount(BigDecimal firstLegAmount) {
|
||||
this.firstLegAmount = firstLegAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getSecondLegAmount() {
|
||||
return secondLegAmount;
|
||||
}
|
||||
|
||||
public void setSecondLegAmount(BigDecimal secondLegAmount) {
|
||||
this.secondLegAmount = secondLegAmount;
|
||||
}
|
||||
|
||||
public LocalDate getFirstLegSettlementDate() {
|
||||
return firstLegSettlementDate;
|
||||
}
|
||||
|
||||
public void setFirstLegSettlementDate(LocalDate firstLegSettlementDate) {
|
||||
this.firstLegSettlementDate = firstLegSettlementDate;
|
||||
}
|
||||
|
||||
public LocalDate getSecondLegSettlementDate() {
|
||||
return secondLegSettlementDate;
|
||||
}
|
||||
|
||||
public void setSecondLegSettlementDate(LocalDate secondLegSettlementDate) {
|
||||
this.secondLegSettlementDate = secondLegSettlementDate;
|
||||
}
|
||||
|
||||
public String getFirstLegSettlementCode() {
|
||||
return firstLegSettlementCode;
|
||||
}
|
||||
|
||||
public void setFirstLegSettlementCode(String firstLegSettlementCode) {
|
||||
this.firstLegSettlementCode = firstLegSettlementCode;
|
||||
}
|
||||
|
||||
public String getSecondLegSettlementCode() {
|
||||
return secondLegSettlementCode;
|
||||
}
|
||||
|
||||
public void setSecondLegSettlementCode(String secondLegSettlementCode) {
|
||||
this.secondLegSettlementCode = secondLegSettlementCode;
|
||||
}
|
||||
|
||||
public String getContract() {
|
||||
return contract;
|
||||
}
|
||||
|
||||
public void setContract(String contract) {
|
||||
this.contract = contract;
|
||||
}
|
||||
|
||||
public String getSecurityCode() {
|
||||
return securityCode;
|
||||
}
|
||||
|
||||
public void setSecurityCode(String securityCode) {
|
||||
this.securityCode = securityCode;
|
||||
}
|
||||
|
||||
public Long getExchangeOrderId() {
|
||||
return exchangeOrderId;
|
||||
}
|
||||
|
||||
public void setExchangeOrderId(Long exchangeOrderId) {
|
||||
this.exchangeOrderId = exchangeOrderId;
|
||||
}
|
||||
|
||||
public BigDecimal getSettlementAmount() {
|
||||
return settlementAmount;
|
||||
}
|
||||
|
||||
public void setSettlementAmount(BigDecimal settlementAmount) {
|
||||
this.settlementAmount = settlementAmount;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public Long getClientCodeId() {
|
||||
return clientCodeId;
|
||||
}
|
||||
|
||||
public void setClientCodeId(Long clientCodeId) {
|
||||
this.clientCodeId = clientCodeId;
|
||||
}
|
||||
|
||||
public String getSettlementCode() {
|
||||
return settlementCode;
|
||||
}
|
||||
|
||||
public void setSettlementCode(String settlementCode) {
|
||||
this.settlementCode = settlementCode;
|
||||
}
|
||||
|
||||
public LocalDate getSettlementDate() {
|
||||
return settlementDate;
|
||||
}
|
||||
|
||||
public void setSettlementDate(LocalDate settlementDate) {
|
||||
this.settlementDate = settlementDate;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionMicroseconds() {
|
||||
return exchangeExecutionMicroseconds;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionMicroseconds(Instant exchangeExecutionMicroseconds) {
|
||||
this.exchangeExecutionMicroseconds = exchangeExecutionMicroseconds;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Reference in a new issue