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(executionDeposits);
|
||||||
executions.addAll(executionFonds);
|
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());
|
rows = new ArrayList<>(executions.size());
|
||||||
for (ExecutionCommon execution : executions) {
|
for (ExecutionCommon execution : executions) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -226,37 +269,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
if (execution instanceof ExecutionDeposit) {
|
if (execution instanceof ExecutionDeposit) {
|
||||||
status = "2";
|
status = "2";
|
||||||
} else {
|
} else {
|
||||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
|
||||||
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
|
||||||
Long groupId = execution.getExchangeExecutionId();
|
Long groupId = execution.getExchangeExecutionId();
|
||||||
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
status = statusForExecution.get(new ExecutionKey(groupId, execution.getSessionId()));
|
||||||
pbRegistry.and(
|
if (status == null) {
|
||||||
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()) {
|
|
||||||
log.warn(
|
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,
|
groupId,
|
||||||
execution.getCompanyId(),
|
execution.getCompanyId(),
|
||||||
execution.getId()
|
execution.getId()
|
||||||
);
|
);
|
||||||
continue;
|
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) {
|
private record ExecutionKey(Long groupId, Long sessionId) {
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -642,7 +642,7 @@ public class ReportServiceTest_KS {
|
||||||
executionFond.setQuantity(BigDecimal.valueOf(123.456789));
|
executionFond.setQuantity(BigDecimal.valueOf(123.456789));
|
||||||
executionFond.setExchangeExecutionId(222L);
|
executionFond.setExchangeExecutionId(222L);
|
||||||
executionFond.setExchangeExecutionTime(Instant.ofEpochMilli(LocalDateTime.of(2022, 1, 1, 1, 1, 1).toEpochSecond(ZoneOffset.UTC)));
|
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);
|
executionFondImdg.insert(executionFond);
|
||||||
|
|
||||||
Market market = new Market();
|
Market market = new Market();
|
||||||
|
|
@ -655,7 +655,7 @@ public class ReportServiceTest_KS {
|
||||||
registry.setRegistryCode("_S_T");
|
registry.setRegistryCode("_S_T");
|
||||||
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||||
registry.setRegistryUnit(RegistryUnit.T.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.setRegistryStatus(RegistryStatus.FAIL.getKey());
|
||||||
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||||
registryImdg.insert(registry);
|
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"
|
"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","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","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