From a9cc2752d00cff80039d11d131ea98162ad1e16f Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 8 Feb 2023 12:48:23 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-188 operation B/S BUY SELL --- .../service/ExecutionDepositComponent.java | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java index 80e8e1bcc..1655d46a9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java @@ -26,6 +26,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.Market; +import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -154,10 +155,40 @@ public class ExecutionDepositComponent { } for (STrade trade : sTrades) { - log.trace("Check s_trade[{}].tradeNum={} on date {}", trade.getId(), trade.getTradeNum(), today); - boolean existsEDeposit = existTradeNumsOfExecutionDeposit.contains(trade.getTradeNum()); + log.trace("Check s_trade[{}].tradeNum={} operation={} on date {}", trade.getId(), trade.getTradeNum(), trade.getOperation(), today); + boolean existEDeposit; + { + ImdgPredicateBuilder pb = executionDepositImdg.predicateBuilder(); - if (!existsEDeposit) { + ImdgPredicate predicateOperation = pb.equals("side", trade.getOperation()); + if ("B".equalsIgnoreCase(trade.getOperation())) { + predicateOperation = pb.or(predicateOperation, pb.equals("side", MoneyFlowSide.BUY.getKey())); + } +// if ("BUY".equalsIgnoreCase(trade.getOperation())) { +// predicateOperation = pb.or(predicateOperation, pb.equals("side", "B")); +// } + if ("S".equalsIgnoreCase(trade.getOperation())) { + predicateOperation = pb.or(predicateOperation, pb.equals("side", MoneyFlowSide.SELL.getKey())); + } +// if ("SELL".equalsIgnoreCase(trade.getOperation())) { +// predicateOperation = pb.or(predicateOperation, pb.equals("side", "S")); +// } + + ImdgPredicate predicate = pb.and( + pb.equals("exchangeExecutionId", trade.getTradeNum()), + pb.equals("clearingDate", today), + predicateOperation + ); + Collection existsEDeposit = executionDepositImdg.getCollectionObjectsByPredicate(predicate); +// Collection existsEDeposit=executionDepositImdg.getCollectionObjectsByFieldValues(Map.of( +// "exchangeExecutionId", trade.getTradeNum(), +// "clearingDate", today +// )); + existEDeposit = !existsEDeposit.isEmpty(); + log.trace("Check exist, SQL \"{}\", found {}, exist {}", predicate, existsEDeposit.size(), existEDeposit); + } + + if (!existEDeposit) { log.trace("S_TRADE[{}] new", trade.getId()); // Проверка secCode @@ -270,7 +301,14 @@ public class ExecutionDepositComponent { eDeposit.setFirstLegAmount(sTrade.getValue()); eDeposit.setSecondLegAmount(sTrade.getValue()); //eDeposit.setInterestAmount(null); - eDeposit.setSide(sTrade.getOperation());//Символьный код по справочнику moneyFlowSide), соответствующий значению из s_trade.operation (sTrade.getOperation()) + String operation = sTrade.getOperation(); //Символьный код по справочнику moneyFlowSide), соответствующий значению из s_trade.operation (sTrade.getOperation()) + if ("B".equalsIgnoreCase(operation)) { + operation = MoneyFlowSide.BUY.getKey(); + } + if ("S".equalsIgnoreCase(operation)) { + operation = MoneyFlowSide.SELL.getKey(); + } + eDeposit.setSide(operation); eDeposit.setSettlementCurrency("RUB"); // (справочник currencyCode) eDeposit.setCompanyId(company.getId()); eDeposit.setDuration(sTrade.getDaysToMatDate());