From fc8d235fce6da8de449f95606042bda9adfdcee9 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 7 Aug 2024 11:30:41 +0300 Subject: [PATCH] execution uploading optimization --- .../execution/ExecutionCurrencyComponent.java | 24 ++++++++++++----- .../execution/ExecutionDepositComponent.java | 26 ++++++++++++++----- .../execution/ExecutionFondComponent.java | 24 ++++++++++++----- 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java index cdaf242b1..5382dffac 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java @@ -106,6 +106,9 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent { // } public void processNewTS(Long fromId) { + if (fromId == null) { + cash.clear(); + } LocalDate today = LocalDate.now(); log.debug("Start check new S_TRADE at {}, fromId={}", today, fromId); //выбираем STrades на сегодня с правильным section @@ -139,15 +142,22 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent { return true; } // MoneyFlowSide excDepSide = sTrdSide == Side.BUY ? MoneyFlowSide.BUY : MoneyFlowSide.SELL; - ExecUploadKey execCash = ExecUploadKey.cash(sTrd.getTradeDate(), + ExecUploadKey excKey = ExecUploadKey.cash(sTrd.getTradeDate(), sTrd.getTradeNum(), sTrdSide.getKey()); - return cash.contains(execCash); -// return executionCurrencyImdg.getFirstObjectByFieldValues( -// Map.of("tradingDate", sTrd.getTradeDate(), -// "exchangeExecutionId", sTrd.getTradeNum(), -// "side", sTrdSide.getKey())) != null; - + if (fromId != null) { + return cash.contains(excKey); + } else { + ExecutionCurrency exec = executionCurrencyImdg.getFirstObjectByFieldValues( + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", sTrdSide.getKey())); + if (exec != null) { + cash.add(excKey); + return true; + } + return false; + } }); log.info("{} strades left after already-added filtering", sTrades.size()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java index 15621f243..8ff718bb3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java @@ -105,6 +105,9 @@ public class ExecutionDepositComponent implements IExecutionUploadComponent { } public void processNewTS(Long fromId) { + if (fromId == null) { + cash.clear(); + } log.debug("Start check new S_TRADE after {}, fromId={}", tradingDay, fromId); //выбираем STrades на сегодня с правильным section Collection sTrades; @@ -137,13 +140,22 @@ public class ExecutionDepositComponent implements IExecutionUploadComponent { return true; } MoneyFlowSide excDepSide = sTrdSide.equals(Side.BUY) ? MoneyFlowSide.BUY : MoneyFlowSide.SELL; - return cash.contains( - ExecUploadKey.cash(sTrd.getTradeDate(), sTrd.getTradeNum(), excDepSide.getKey()) - ); - //return executionDepositImdg.getFirstObjectByFieldValues( - // Map.of("tradingDate", sTrd.getTradeDate(), - // "exchangeExecutionId", sTrd.getTradeNum(), - // "side", excDepSide.getKey())) != null; + ExecUploadKey excKey = ExecUploadKey.cash(sTrd.getTradeDate(), + sTrd.getTradeNum(), + excDepSide.getKey()); + if (fromId != null) { + return cash.contains(excKey); + } else { + ExecutionDeposit exec = executionDepositImdg.getFirstObjectByFieldValues( + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", excDepSide.getKey())); + if (exec != null) { + cash.add(excKey); + return true; + } + return false; + } }); log.info("{} strades left after already-added filtering", sTrades.size()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java index 99d3f5b61..6b7ab1527 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java @@ -124,6 +124,9 @@ public class ExecutionFondComponent implements IExecutionUploadComponent { } public void processNewTS(Long fromId) { + if (fromId == null) { + cash.clear(); + } log.debug("Start check new S_TRADE after {}, fromId={}", tradingDay, fromId); //выбираем STrades на сегодня с правильным section Collection sTrades; @@ -156,13 +159,20 @@ public class ExecutionFondComponent implements IExecutionUploadComponent { return true; } Side excDepSide = sTrdSide.equals(Side.BUY) ? Side.BUY : Side.SELL; - return cash.contains( - ExecUploadKey.cash(sTrd.getTradeDate(), sTrd.getTradeNum(), excDepSide.getKey()) - ); - //return executionFondImdg.getFirstObjectByFieldValues( - // Map.of("tradingDate", sTrd.getTradeDate(), - // "exchangeExecutionId", sTrd.getTradeNum(), - // "side", excDepSide.getKey())) != null; + ExecUploadKey excKey = ExecUploadKey.cash(sTrd.getTradeDate(), sTrd.getTradeNum(), excDepSide.getKey()); + if (fromId != null) { + return cash.contains(excKey); + } else { + ExecutionFond exec = executionFondImdg.getFirstObjectByFieldValues( + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", excDepSide.getKey())); + if (exec != null) { + cash.add(excKey); + return true; + } + return false; + } }); log.info("{} strades left after already-added filtering", sTrades.size());