diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java index 472595456..37a06eba5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java @@ -1,13 +1,12 @@ package ru.spcex.clearing.reports.builders.bean; -import com.opencsv.bean.CsvBindByName; -import com.opencsv.bean.CsvBindByPosition; -import com.opencsv.bean.CsvDate; -import com.opencsv.bean.CsvNumber; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import com.opencsv.bean.CsvBindByName; +import com.opencsv.bean.CsvBindByPosition; +import com.opencsv.bean.CsvDate; +import com.opencsv.bean.CsvNumber; public class KSRepCashNettoReport { @CsvBindByName(column = "FIRMID") @@ -51,6 +50,10 @@ public class KSRepCashNettoReport { @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal reqValue; + @CsvBindByName(column = "LOT_CURRENCY") + @CsvBindByPosition(position = 9) + private String lotCurrency; + public String getFirmId() { return firmId; @@ -123,4 +126,12 @@ public class KSRepCashNettoReport { public void setReqValue(BigDecimal reqValue) { this.reqValue = reqValue; } + + public String getLotCurrency() { + return lotCurrency; + } + + public void setLotCurrency(String lotCurrency) { + this.lotCurrency = lotCurrency; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegisterSumsReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegisterSumsReport.java index 7cee42565..2a5421f51 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegisterSumsReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegisterSumsReport.java @@ -1,13 +1,12 @@ package ru.spcex.clearing.reports.builders.bean; -import com.opencsv.bean.CsvBindByName; -import com.opencsv.bean.CsvBindByPosition; -import com.opencsv.bean.CsvDate; -import com.opencsv.bean.CsvNumber; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalTime; +import com.opencsv.bean.CsvBindByName; +import com.opencsv.bean.CsvBindByPosition; +import com.opencsv.bean.CsvDate; +import com.opencsv.bean.CsvNumber; public class KSRepCashRegisterSumsReport { @CsvBindByName(column = "FIRMID") @@ -45,6 +44,10 @@ public class KSRepCashRegisterSumsReport { @CsvBindByPosition(position = 7) private String tradeNum; + @CsvBindByName(column = "OPER_TYPE") + @CsvBindByPosition(position = 8) + private String operType; + public String getFirmId() { return firmId; @@ -109,4 +112,12 @@ public class KSRepCashRegisterSumsReport { public void setTradeNum(String tradeNum) { this.tradeNum = tradeNum; } + + public String getOperType() { + return operType; + } + + public void setOperType(String operType) { + this.operType = operType; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegistersReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegistersReport.java index 98520f9ca..13f739060 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegistersReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashRegistersReport.java @@ -1,13 +1,12 @@ package ru.spcex.clearing.reports.builders.bean; +import java.math.BigDecimal; +import java.time.LocalDate; import com.opencsv.bean.CsvBindByName; import com.opencsv.bean.CsvBindByPosition; import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvNumber; -import java.math.BigDecimal; -import java.time.LocalDate; - public class KSRepCashRegistersReport { @CsvBindByName(column = "FIRMID") @CsvBindByPosition(position = 0) @@ -62,6 +61,9 @@ public class KSRepCashRegistersReport { @CsvBindByPosition(position = 11) private String tradeNum; + @CsvBindByName(column = "CURRENCY") + @CsvBindByPosition(position = 12) + private String currency; public String getFirmId() { return firmId; @@ -158,4 +160,12 @@ public class KSRepCashRegistersReport { public void setTradeNum(String tradeNum) { this.tradeNum = tradeNum; } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepDepoRegisterQuantitiesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepDepoRegisterQuantitiesReport.java index 792b55100..0d289e862 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepDepoRegisterQuantitiesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepDepoRegisterQuantitiesReport.java @@ -1,13 +1,12 @@ package ru.spcex.clearing.reports.builders.bean; -import com.opencsv.bean.CsvBindByName; -import com.opencsv.bean.CsvBindByPosition; -import com.opencsv.bean.CsvDate; -import com.opencsv.bean.CsvNumber; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalTime; +import com.opencsv.bean.CsvBindByName; +import com.opencsv.bean.CsvBindByPosition; +import com.opencsv.bean.CsvDate; +import com.opencsv.bean.CsvNumber; public class KSRepDepoRegisterQuantitiesReport { @CsvBindByName(column = "FIRMID") @@ -49,6 +48,10 @@ public class KSRepDepoRegisterQuantitiesReport { @CsvBindByPosition(position = 8) private String tradeNum; + @CsvBindByName(column = "LOT_CURRENCY") + @CsvBindByPosition(position = 8) + private String lotCurrency; + public String getFirmId() { return firmId; @@ -121,4 +124,13 @@ public class KSRepDepoRegisterQuantitiesReport { public void setTradeNum(String tradeNum) { this.tradeNum = tradeNum; } + + public String getLotCurrency() { + return lotCurrency; + } + + public void setLotCurrency(String lotCurrency) { + this.lotCurrency = lotCurrency; + } + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepTradesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepTradesReport.java index c19165fc5..f3deec0cb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepTradesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepTradesReport.java @@ -1,14 +1,13 @@ package ru.spcex.clearing.reports.builders.bean; -import com.opencsv.bean.CsvBindByName; -import com.opencsv.bean.CsvBindByPosition; -import com.opencsv.bean.CsvDate; -import com.opencsv.bean.CsvNumber; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import com.opencsv.bean.CsvBindByName; +import com.opencsv.bean.CsvBindByPosition; +import com.opencsv.bean.CsvDate; +import com.opencsv.bean.CsvNumber; public class KSRepTradesReport { @CsvBindByName(column = "SESSION_ID") @@ -76,6 +75,10 @@ public class KSRepTradesReport { @CsvDate(value = "dd.MM.yyyy") private LocalDate repaymDate; + @CsvBindByName(column = "LOT_CURRENCY") + @CsvBindByPosition(position = 15) + private String lotCurrency; + public Long getSessionId() { return sessionId; @@ -196,4 +199,12 @@ public class KSRepTradesReport { public void setRepaymDate(LocalDate repaymDate) { this.repaymDate = repaymDate; } + + public String getLotCurrency() { + return lotCurrency; + } + + public void setLotCurrency(String lotCurrency) { + this.lotCurrency = lotCurrency; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java index 2f74eb7d0..bd933ca64 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java @@ -1,15 +1,32 @@ package ru.spcex.clearing.reports.builders.ks; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.security.CurrencyPairSecurity; +import ru.clearing.platform.dictionary.CurrencyPairDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.builders.CSVReportBuilder; import ru.spcex.clearing.reports.builders.PairRegistryId; import ru.spcex.clearing.reports.builders.SessionIdParam; import ru.spcex.clearing.reports.builders.bean.KSRepCashNettoReport; -import ru.spcex.platform.enumeration.*; +import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.RegistryDesignation; +import ru.spcex.platform.enumeration.RegistryTradingParams; +import ru.spcex.platform.enumeration.ReportBuilderType; +import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.SessionType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; @@ -17,17 +34,13 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.utils.enumeration.IEnumKey; -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; - @Component public class KSRepCashNettoReportBuilder extends CSVReportBuilder { private final Imdg registryImdg; private final Imdg sessionImdg; private final Imdg accountImdg; + private final Imdg currencyPairDictionaryImdg; + private final Imdg currencyPairSecurityImdg; private List rows = null; @@ -35,6 +48,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder { @@ -129,6 +134,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder { private final Imdg registryImdg; @@ -230,6 +241,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder { private final Imdg registryImdg; private final Imdg companyImdg; private final Imdg accountSymbolsImdg; + private final Imdg currencyPairDictionaryImdg; + private final Imdg currencyPairSecurityImdg; private List rows = null; @@ -39,6 +47,8 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder { @@ -33,24 +48,30 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder executionDepositImdg; private final Imdg executionFondImdg; + private final Imdg executionCurrencyImdg; private final Imdg sessionImdg; private final Imdg registryImdg; private final Imdg companyImdg; private final Imdg tradingClearingRegistryImdg; private final Imdg accountImdg; private final Imdg accountSymbolsImdg; + private final Imdg currencyPairDictionaryImdg; + private final Imdg currencyPairSecurityImdg; private List rows = null; public KSRepTradesReportBuilder(ImdgProvider imdgProvider) { executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class); executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); + executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); accountSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class); + currencyPairDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, CurrencyPairDictionary.class); + currencyPairSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class); } @Override @@ -84,23 +105,32 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate( - pbExecutionDeposit.or( - pbExecutionDeposit.equals("tradingDate", nowDate), - pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate) - ) + pbExecutionDeposit.or( + pbExecutionDeposit.equals("tradingDate", nowDate), + pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate) + ) ); log.debug("Found {} ExecutionDeposit by tradingDate={}", executionDeposits.size(), nowDate); ImdgPredicateBuilder pbExecutionFond = executionFondImdg.predicateBuilder(); Collection executionFonds = executionFondImdg.getCollectionObjectsByPredicate( - pbExecutionFond.or( - pbExecutionFond.equals("tradingDate", nowDate), - pbExecutionFond.greatEqual("settlementDate", nowDate) - ) + pbExecutionFond.or( + pbExecutionFond.equals("tradingDate", nowDate), + pbExecutionFond.greatEqual("settlementDate", nowDate) + ) + ); + log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate); + ImdgPredicateBuilder pbExecutionCurrency = executionCurrencyImdg.predicateBuilder(); + Collection executionCurrencies = executionCurrencyImdg.getCollectionObjectsByPredicate( + pbExecutionCurrency.or( + pbExecutionCurrency.equals("tradingDate", nowDate), + pbExecutionCurrency.greatEqual("settlementDate", nowDate) + ) ); log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate); List executions = new ArrayList<>(); executions.addAll(executionDeposits); executions.addAll(executionFonds); + executions.addAll(executionCurrencies); Map statusForExecution = new HashMap<>(); executions.forEach(execution -> { @@ -116,16 +146,16 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder 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) - ) + 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; @@ -155,8 +185,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder 0) return ENR; + else if (compareResult < 0) return WD; + else return UNKNOWN; + } + + public String getCode() { + return code; + } +}