This commit is contained in:
parent
9ed6a75fe5
commit
40978a0017
3 changed files with 98 additions and 33 deletions
|
|
@ -15,7 +15,6 @@ 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;
|
||||
|
|
@ -73,9 +72,13 @@ 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);
|
||||
|
||||
|
||||
// TODO возможно deprecated
|
||||
// callback(ExecutionRegisterOnSaveRequest.class)
|
||||
// .setConsumer(this::executionRegisterOnSavingOfTrade)
|
||||
// .forDestination(Consts.REGISTRY_EXECUTION_REGISTER_ON_SAVE, callbacks::put);
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
|
|
@ -88,41 +91,14 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
collectionFond.size(), collectionDeposit.size(), localDateNow);
|
||||
preClearMap.preClearMap();
|
||||
collectionFond.forEach(x -> {
|
||||
if (isDuplicateInMap(x).isEmpty()) {
|
||||
insertExecutionRegister(true, x);
|
||||
}
|
||||
});
|
||||
collectionDeposit.forEach(x -> {
|
||||
if (isDuplicateInMap(x).isPresent()) {
|
||||
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();
|
||||
Optional<ExecutionRegister> optionalDuplicate = isDuplicateInMap(common);
|
||||
if (optionalDuplicate.isEmpty()) {
|
||||
insertExecutionRegister(isFond, common);
|
||||
} else {
|
||||
updateExecutionRegister(isFond, common, optionalDuplicate.get());
|
||||
}
|
||||
}
|
||||
|
||||
private void updateExecutionRegister(boolean isFond, ExecutionCommon common, ExecutionRegister registerToUpdate) {
|
||||
log.trace("Started updating ExecutionRegister entity...");
|
||||
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...");
|
||||
|
||||
|
|
@ -249,6 +225,34 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
log.debug("inserted successfully ExecutionRegister entity with id: {}", executionRegister.getId());
|
||||
}
|
||||
|
||||
|
||||
// TODO возможно deprecated
|
||||
public void executionRegisterOnSavingOfTrade(BaseRequest<ExecutionRegisterOnSaveRequest> userRequest) {
|
||||
ExecutionRegisterOnSaveRequest request = userRequest.getRequestPayload();
|
||||
ExecutionCommon common = setUpExecutionCommon(request);
|
||||
boolean isFond = request.isExecutionFond();
|
||||
Optional<ExecutionRegister> optionalDuplicate = isDuplicateInMap(common);
|
||||
if (optionalDuplicate.isEmpty()) {
|
||||
insertExecutionRegister(isFond, common);
|
||||
} else {
|
||||
updateExecutionRegister(isFond, common, optionalDuplicate.get());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO возможно deprecated
|
||||
private void updateExecutionRegister(boolean isFond, ExecutionCommon common, ExecutionRegister registerToUpdate) {
|
||||
log.trace("Started updating ExecutionRegister entity...");
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
// todo возможно deprecated
|
||||
private ExecutionCommon setUpExecutionCommon(ExecutionRegisterOnSaveRequest request) {
|
||||
ExecutionFond fond = null;
|
||||
ExecutionDeposit deposit = null;
|
||||
|
|
@ -297,6 +301,7 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ
|
|||
return common;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public Optional<ExecutionRegister> isDuplicateInMap(ExecutionCommon entity) {
|
||||
return Optional.empty();
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import java.time.ZoneOffset;
|
|||
import java.util.Collection;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
|
|
@ -197,5 +198,62 @@ class ExecutionRegisterServiceTest {
|
|||
assertEquals(executionRegister.getAmount(), SETTLEMENT_AMOUNT);
|
||||
assertEquals(executionRegister.getQuantity(), QUANTITY);
|
||||
assertEquals(executionRegister.getClearingDate(), LocalDate.now());
|
||||
|
||||
executionFondImdg.delete(executionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(2)
|
||||
void executionRegisterNewFromRequest() {
|
||||
ExecutionDeposit executionDeposit = new ExecutionDeposit();
|
||||
executionDeposit.setClearingDate(LocalDate.now());
|
||||
executionDeposit.setTradingDate(TRADING_DATE);
|
||||
executionDeposit.setExchangeExecutionId(EXCHANGE_EXECUTION_ID);
|
||||
executionDeposit.setExchangeExecutionTime(EXCHANGE_EXECUTION_TIME);
|
||||
executionDeposit.setSecurityId(SECURITY_ID);
|
||||
executionDeposit.setFirstLegAmount(SETTLEMENT_AMOUNT);
|
||||
executionDeposit.setQuantity(QUANTITY);
|
||||
executionDeposit.setCounterPartyTradingClearingRegistryId(TKR_FOR_COUNTER_PARTY_TKR_ID);
|
||||
executionDeposit.setTradingClearingRegistryId(TKR_FOR_TKR_ID);
|
||||
executionDeposit.setCompanyId(COMPANY_ID);
|
||||
executionDeposit.setCounterPartyId(COUNTER_PARTY_ID);
|
||||
executionDeposit.setSide(Side.SELL.getKey());
|
||||
executionDeposit.setCounterPartyTradingClearingRegistry(COUNTER_PARTY_TKR);
|
||||
executionDeposit.setPartyTradingClearingRegistry(PARTY_TKR);
|
||||
executionDepositImdg.insert(executionDeposit);
|
||||
|
||||
LauncherCommandRequest launcherCommandRequest = new LauncherCommandRequest();
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(launcherCommandRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) executionRegisterService.getConsumer(),
|
||||
Task.createRegistry_ECNR.topic(),
|
||||
requestCount++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
Collection<ExecutionRegister> allValues = executionRegisterImdg.getAllValues();
|
||||
ExecutionRegister executionRegister = allValues.iterator().next();
|
||||
assertEquals(executionRegister.getTradingDate(), TRADING_DATE);
|
||||
assertEquals(executionRegister.getExchangeExecutionId(), EXCHANGE_EXECUTION_ID);
|
||||
assertEquals(executionRegister.getExchangeExecutionTime(), EXCHANGE_EXECUTION_TIME);
|
||||
assertEquals(executionRegister.getSecurityId(), SECURITY_ID);
|
||||
assertEquals(executionRegister.getSellerId(), COMPANY_ID);
|
||||
assertEquals(executionRegister.getSellerClearingCode(), COMPANY_SYMBOL_VALUE_FOR_COMPANY_ID);
|
||||
assertEquals(executionRegister.getSellerTradingClearingRegister(), PARTY_TKR);
|
||||
assertEquals(executionRegister.getSellerMoneyAccount(), MONEY_ACCOUNT_FOR_TKR);
|
||||
assertEquals(executionRegister.getSellerDepoAccount(), DEPO_ACCOUNT_FOR_TKR);
|
||||
assertEquals(executionRegister.getBuyerId(), COUNTER_PARTY_ID);
|
||||
assertEquals(executionRegister.getBuyerClearingCode(), COMPANY_SYMBOL_VALUE_FOR_COUNTER_PARTY_ID);
|
||||
assertEquals(executionRegister.getBuyerTradingClearingRegister(), COUNTER_PARTY_TKR);
|
||||
assertEquals(executionRegister.getBuyerMoneyAccount(), MONEY_ACCOUNT_FOR_COUNTER_PARTY_TKR);
|
||||
assertEquals(executionRegister.getBuyerDepoAccount(), DEPO_ACCOUNT_FOR_COUNTER_PARTY_TKR);
|
||||
assertEquals(executionRegister.getAmount(), SETTLEMENT_AMOUNT);
|
||||
assertNull(executionRegister.getQuantity());
|
||||
assertEquals(executionRegister.getClearingDate(), LocalDate.now());
|
||||
|
||||
executionDepositImdg.delete(executionDeposit);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
|
|
@ -103,6 +104,7 @@ public class ExecutionRegisterOnSaveRequest {
|
|||
@JsonProperty
|
||||
private Instant exchangeExecutionMicroseconds;
|
||||
|
||||
@JsonIgnore
|
||||
public boolean isExecutionFond() {
|
||||
return exchangeOrderId != null || settlementAmount != null || comment != null || clientCodeId != null || settlementCode != null || settlementDate != null || exchangeExecutionMicroseconds != null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue