diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java index 8c21990cc..8d7936322 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java @@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvNumber; import java.math.BigDecimal; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; public class ExecutedDealReport { @CsvBindByName(column = "SECURITYID") @@ -26,7 +26,7 @@ public class ExecutedDealReport { @CsvBindByName(column = "TRADETIME") @CsvBindByPosition(position = 3) @CsvDate(value = "HH:mm:ss") - private Instant tradeTime; + private LocalDateTime tradeTime; @CsvBindByName(column = "SETTLEDATE") @CsvBindByPosition(position = 4) @@ -77,11 +77,11 @@ public class ExecutedDealReport { this.tradeDate = tradeDate; } - public Instant getTradeTime() { + public LocalDateTime getTradeTime() { return tradeTime; } - public void setTradeTime(Instant tradeTime) { + public void setTradeTime(LocalDateTime tradeTime) { this.tradeTime = tradeTime; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashNettoReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashNettoReport.java index 7eb605f6e..386d06a4f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashNettoReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashNettoReport.java @@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvNumber; import java.math.BigDecimal; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; public class KSRepCashNettoReport { @CsvBindByName(column = "FIRMID") @@ -21,7 +21,7 @@ public class KSRepCashNettoReport { @CsvBindByName(column = "SESSION_DATE") @CsvBindByPosition(position = 2) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant sessionDate; + private LocalDateTime sessionDate; @CsvBindByName(column = "ACCOUNT") @CsvBindByPosition(position = 3) @@ -54,11 +54,11 @@ public class KSRepCashNettoReport { this.sessionId = sessionId; } - public Instant getSessionDate() { + public LocalDateTime getSessionDate() { return sessionDate; } - public void setSessionDate(Instant sessionDate) { + public void setSessionDate(LocalDateTime sessionDate) { this.sessionDate = sessionDate; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoNettoReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoNettoReport.java index 404bef736..e0cd96de8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoNettoReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoNettoReport.java @@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvNumber; import java.math.BigDecimal; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; public class KSRepDepoNettoReport { @CsvBindByName(column = "FIRMID") @@ -21,7 +21,7 @@ public class KSRepDepoNettoReport { @CsvBindByName(column = "SESSION_DATE") @CsvBindByPosition(position = 2) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant sessionDate; + private LocalDateTime sessionDate; @CsvBindByName(column = "ACCOUNT") @CsvBindByPosition(position = 3) @@ -58,11 +58,11 @@ public class KSRepDepoNettoReport { this.sessionId = sessionId; } - public Instant getSessionDate() { + public LocalDateTime getSessionDate() { return sessionDate; } - public void setSessionDate(Instant sessionDate) { + public void setSessionDate(LocalDateTime sessionDate) { this.sessionDate = sessionDate; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java index cc856ae48..d01a851eb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java @@ -7,7 +7,7 @@ import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvNumber; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDateTime; public class KSRepTradesReport { @CsvBindByName(column = "SESSION_ID") @@ -17,7 +17,7 @@ public class KSRepTradesReport { @CsvBindByName(column = "SESSION_DATE") @CsvBindByPosition(position = 1) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant sessionDate; + private LocalDateTime sessionDate; @CsvBindByName(column = "TR_ID") @CsvBindByPosition(position = 2) @@ -52,7 +52,7 @@ public class KSRepTradesReport { @CsvBindByName(column = "TRADE_DATE") @CsvBindByPosition(position = 9) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant tradeDate; + private LocalDateTime tradeDate; @CsvBindByName(column = "STATUS") @CsvBindByPosition(position = 10) @@ -67,11 +67,11 @@ public class KSRepTradesReport { this.sessionId = sessionId; } - public Instant getSessionDate() { + public LocalDateTime getSessionDate() { return sessionDate; } - public void setSessionDate(Instant sessionDate) { + public void setSessionDate(LocalDateTime sessionDate) { this.sessionDate = sessionDate; } @@ -131,11 +131,11 @@ public class KSRepTradesReport { this.classCode = classCode; } - public Instant getTradeDate() { + public LocalDateTime getTradeDate() { return tradeDate; } - public void setTradeDate(Instant tradeDate) { + public void setTradeDate(LocalDateTime tradeDate) { this.tradeDate = tradeDate; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSSessionListReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSSessionListReport.java index fd5babde3..e79c1bdd4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSSessionListReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSSessionListReport.java @@ -4,7 +4,7 @@ import com.opencsv.bean.CsvBindByName; import com.opencsv.bean.CsvBindByPosition; import com.opencsv.bean.CsvDate; -import java.time.Instant; +import java.time.LocalDateTime; public class KSSessionListReport { @CsvBindByName(column = "ID") @@ -14,14 +14,14 @@ public class KSSessionListReport { @CsvBindByName(column = "CREATED_AT") @CsvBindByPosition(position = 1) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant createdAt; + private LocalDateTime createdAt; @CsvBindByName(column = "UPDATED_AT") @CsvBindByPosition(position = 2) @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") - private Instant updatedAt; + private LocalDateTime updatedAt; - @CsvBindByName(column = "SESSION_DATE") + @CsvBindByName(column = "SECTION") @CsvBindByPosition(position = 3) private String section; @@ -41,19 +41,19 @@ public class KSSessionListReport { this.id = id; } - public Instant getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Instant createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } - public Instant getUpdatedAt() { + public LocalDateTime getUpdatedAt() { return updatedAt; } - public void setUpdatedAt(Instant updatedAt) { + public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java index 0deb3a40e..7ae648cbd 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java @@ -13,12 +13,12 @@ import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.math.BigDecimal; -import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Objects; public abstract class ExecutedDealReportBuilderCommon

extends CSVReportBuilder { protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); @@ -77,18 +77,18 @@ public abstract class ExecutedDealReportBuilderCommon

extends CSVReportBuilde executedDealReport.setSecurityId(executionFond.getSecuritySymbol()); executedDealReport.setTradeNo(executionFond.getExchangeExecutionId()); executedDealReport.setTradeDate(executionFond.getTradingDate()); - executedDealReport.setTradeTime(executionFond.getExchangeExecutionTime()); + + if (executionFond.getExchangeExecutionTime() != null) + executedDealReport.setTradeTime(LocalDateTime.ofInstant(executionFond.getExchangeExecutionTime(), ZoneId.systemDefault())); + executedDealReport.setSettleDate(executionFond.getSettlementDate()); executedDealReport.setSettleCode(executionFond.getSettlementCode()); BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO; BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO; + BigDecimal price = executionFond.getPrice() != null ? executionFond.getPrice() : BigDecimal.ZERO; executedDealReport.setValue(settlementAmount); executedDealReport.setQuantity(quantity); - if (Objects.equals(quantity, BigDecimal.ZERO)) { - executedDealReport.setPrice(settlementAmount); - } else { - executedDealReport.setPrice(settlementAmount.divide(quantity, RoundingMode.HALF_UP)); - } + executedDealReport.setPrice(price); lines.add(executedDealReport); } catch (Throwable e) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java index efc4f1e79..272ac42ae 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild pb.and( pb.notNull("sessionId"), pb.less("tradingDate", LocalDate.now()), - pb.equals("settlementDate", LocalDate.now()) + pb.equals("settlementDate", LocalDate.now()), + pb.equals("side", Side.SELL.getKey()) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java index 7b4917075..ca795e318 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild pb.and( pb.notNull("sessionId"), pb.equals("tradingDate", LocalDate.now()), - pb.equals("settlementDate", LocalDate.now()) + pb.equals("settlementDate", LocalDate.now()), + pb.equals("side", Side.SELL.getKey()) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java index a4dd63137..ba5bfb406 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @@ -30,6 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuild @Override protected Collection getExecutionFondsForReport(SessionIdParam params) { ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); - return executionFondImdg.getCollectionObjectsByPredicate(pb.greater("settlementDate", LocalDate.now())); + return executionFondImdg.getCollectionObjectsByPredicate( + pb.and( + pb.greater("settlementDate", LocalDate.now()), + pb.equals("side", Side.SELL.getKey()) + ) + ); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java index e5f58fee1..c353ec60d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -5,6 +5,7 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild return executionFondImdg.getCollectionObjectsByPredicate( pb.and( pb.equals("coverageStatus", Allowed.DENIED.getKey()), - pb.equals("settlementDate", LocalDate.now()) + pb.equals("settlementDate", LocalDate.now()), + pb.equals("side", Side.SELL.getKey()) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java index 7c5fa19f3..876965151 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java @@ -9,10 +9,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.bean.UnfulfilledDealReport; -import ru.spcex.platform.enumeration.Allowed; -import ru.spcex.platform.enumeration.ReportBuilderType; -import ru.spcex.platform.enumeration.ReportKeys; -import ru.spcex.platform.enumeration.WorkflowStatus; +import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; @@ -68,7 +65,8 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java index bbcc27dc6..314e58bd8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java @@ -3,7 +3,7 @@ package ru.spcex.clearing.reports.reports.ks; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.misc.STrades; +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.CSVReportBuilder; @@ -32,7 +32,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder registryImdg; private final Imdg companyImdg; private final Imdg companySymbolsImdg; - private final Imdg sTradesImdg; + private final Imdg executionDepositImdg; private List rows = null; @@ -40,7 +40,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder sTradesList = sTradesImdg.getCollectionObjectsByPredicate( + pb = executionDepositImdg.predicateBuilder(); + Collection executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate( pb.and( - pb.equals("tradeNum", registry.getGroupId()), - pb.notNull("classCode") + pb.equals("exchangeExecutionId", registry.getGroupId()), + pb.notNull("market") ) ); - if (sTradesList.isEmpty()) { - log.warn("Not found STrades for registry (id = {}), tradeNum: {}. Registry skipped", registry.getId(), registry.getGroupId()); + if (executionDeposits.isEmpty()) { + log.warn("Not found ExecutionDeposit for registry (id = {}), groupId: {}. Registry skipped", registry.getId(), registry.getGroupId()); continue; } - if (sTradesList.size() > 1) log.warn("sTrades[tradeNum = {}].size > 1, use first", tradeNum); - STrades sTrades = sTradesList.iterator().next(); + if (executionDeposits.size() > 1) log.warn("ExecutionDeposit[exchangeExecutionId = {}].size > 1, use first", registry.getGroupId()); + ExecutionDeposit executionDeposit = executionDeposits.iterator().next(); KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport(); ksCommissionTradesReport.setFirmId(firmId); ksCommissionTradesReport.setFirmIdInitiator(firmIdInitiator); ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol()); - ksCommissionTradesReport.setClassCode(sTrades.getClassCode()); + ksCommissionTradesReport.setClassCode(executionDeposit.getMarket()); ksCommissionTradesReport.setAgreementNumber(agreementNumber); ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix); ksCommissionTradesReport.setAgreementDate(registry.getTradingDate()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java index eaae10b4c..9615a5ea1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java @@ -17,6 +17,8 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -131,7 +133,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder