http://jira.mfd.msk:8088/browse/CLS-497 KSRepTrades
This commit is contained in:
parent
4581592380
commit
939ea451a1
3 changed files with 50 additions and 42 deletions
|
|
@ -93,6 +93,49 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
executions.addAll(executionDeposits);
|
||||
executions.addAll(executionFonds);
|
||||
|
||||
Map<ExecutionKey, String> statusForExecution = new HashMap<>();
|
||||
executions.forEach(execution -> {
|
||||
if (Set.of("S", "SELL").contains(execution.getSide())) {
|
||||
String status = "";
|
||||
if (execution.getCoverageStatus() != null) {
|
||||
Long groupId = execution.getExchangeExecutionId();
|
||||
String coverageStatus = execution.getCoverageStatus().toUpperCase();
|
||||
CoverageStatus coverage = IEnumKey.getEnumByKey(CoverageStatus.class, coverageStatus);
|
||||
// Есть 2 пары Execution, SELL и BUY, статус определяем заранее по SELL и проставляем в BUY
|
||||
if (coverage == CoverageStatus.DEND) {
|
||||
if (execution instanceof ExecutionFond) {
|
||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
||||
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("groupId", groupId),
|
||||
pbRegistry.equals("companyId", execution.getCompanyId()),
|
||||
pbRegistry.in("registryStatus",
|
||||
RegistryStatus.NACC.getKey(),
|
||||
RegistryStatus.NACK.getKey(),
|
||||
RegistryStatus.FAIL.getKey(),
|
||||
RegistryStatus.UNCV.getKey()),
|
||||
pbRegistry.sql(registryPredicateStr)
|
||||
)
|
||||
);
|
||||
if (registryCollection.isEmpty()) {
|
||||
status = null;
|
||||
} else {
|
||||
Registry registry = registryCollection.iterator().next();
|
||||
RegistryStatus registryStatus = IEnumKey.getEnumByKey(RegistryStatus.class, registry.getRegistryStatus());
|
||||
if (registryStatus == RegistryStatus.NACK || registryStatus == RegistryStatus.UNCV) {
|
||||
status = "3";
|
||||
} else if (registryStatus == RegistryStatus.NACC || registryStatus == RegistryStatus.FAIL) {
|
||||
status = "2";
|
||||
}
|
||||
}
|
||||
}
|
||||
statusForExecution.put(new ExecutionKey(groupId, execution.getSessionId()), status);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
rows = new ArrayList<>(executions.size());
|
||||
for (ExecutionCommon execution : executions) {
|
||||
try {
|
||||
|
|
@ -226,37 +269,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
if (execution instanceof ExecutionDeposit) {
|
||||
status = "2";
|
||||
} else {
|
||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
||||
Long groupId = execution.getExchangeExecutionId();
|
||||
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("groupId", groupId),
|
||||
pbRegistry.equals("companyId", execution.getCompanyId()),
|
||||
pbRegistry.in("registryStatus",
|
||||
RegistryStatus.NACC.getKey(),
|
||||
RegistryStatus.NACC.getKey(),
|
||||
RegistryStatus.FAIL.getKey(),
|
||||
RegistryStatus.UNCV.getKey()),
|
||||
pbRegistry.sql(registryPredicateStr)
|
||||
)
|
||||
);
|
||||
if (registryCollection.isEmpty()) {
|
||||
status = statusForExecution.get(new ExecutionKey(groupId, execution.getSessionId()));
|
||||
if (status == null) {
|
||||
log.warn(
|
||||
"Broken execution (empty registries). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
||||
"Broken execution (can't define status). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
||||
groupId,
|
||||
execution.getCompanyId(),
|
||||
execution.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
Registry registry = registryCollection.iterator().next();
|
||||
RegistryStatus registryStatus = IEnumKey.getEnumByKey(RegistryStatus.class, registry.getRegistryStatus());
|
||||
if (registryStatus == RegistryStatus.NACK || registryStatus == RegistryStatus.UNCV) {
|
||||
status = "3";
|
||||
} else if (registryStatus == RegistryStatus.NACC || registryStatus == RegistryStatus.FAIL) {
|
||||
status = "2";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -272,21 +295,6 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
}
|
||||
}
|
||||
|
||||
private boolean checkRegistryStatus(Collection<Registry> registries, Collection<RegistryStatus> registryStatuses) {
|
||||
for (Registry registry : registries) {
|
||||
RegistryStatus registryStatus = IEnumKey.getEnumByKey(RegistryStatus.class, registry.getRegistryStatus());
|
||||
if (registryStatuses.contains(registryStatus)) continue;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean checkRegistryInstrumentType(Collection<Registry> registries, Collection<RegistryInstrumentType> RegistryInstrumentTypes) {
|
||||
for (Registry registry : registries) {
|
||||
RegistryInstrumentType RegistryInstrumentType = IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType());
|
||||
if (RegistryInstrumentTypes.contains(RegistryInstrumentType)) continue;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
private record ExecutionKey(Long groupId, Long sessionId) {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -642,7 +642,7 @@ public class ReportServiceTest_KS {
|
|||
executionFond.setQuantity(BigDecimal.valueOf(123.456789));
|
||||
executionFond.setExchangeExecutionId(222L);
|
||||
executionFond.setExchangeExecutionTime(Instant.ofEpochMilli(LocalDateTime.of(2022, 1, 1, 1, 1, 1).toEpochSecond(ZoneOffset.UTC)));
|
||||
executionFond.setCoverageStatus(CoverageStatus.ALWD.getKey());
|
||||
executionFond.setCoverageStatus(CoverageStatus.DEND.getKey());
|
||||
executionFondImdg.insert(executionFond);
|
||||
|
||||
Market market = new Market();
|
||||
|
|
@ -655,7 +655,7 @@ public class ReportServiceTest_KS {
|
|||
registry.setRegistryCode("_S_T");
|
||||
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||
registry.setRegistryUnit(RegistryUnit.T.getKey());
|
||||
registry.setGroupId(Long.parseLong("%s%d%d".formatted(dateFormatter_yyyyMMdd.format(LocalDate.now()), 222, marketId)));
|
||||
registry.setGroupId(222L);
|
||||
registry.setRegistryStatus(RegistryStatus.FAIL.getKey());
|
||||
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||
registryImdg.insert(registry);
|
||||
|
|
|
|||
|
|
@ -2,4 +2,4 @@
|
|||
"4","20.01.1970T07:09:07","222","CONTRACT","TRADING_CODE","TKR","","","8888.89","0","222","3333","20.01.1970T02:49:58","2"
|
||||
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","-8888.89","123","222","3333","20.01.1970T02:49:58","1"
|
||||
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","-8888.89","123","222","3333","20.01.1970T02:49:58","2"
|
||||
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","8888.89","-123","222","3333","20.01.1970T02:49:58","1"
|
||||
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","8888.89","-123","222","3333","20.01.1970T02:49:58","2"
|
||||
|
|
|
|||
|
Loading…
Add table
Reference in a new issue