http://jira.mfd.msk:8088/browse/CLS-497 time fixes, rename session_date, executionDealReport fixes

This commit is contained in:
akulikov 2023-09-07 11:37:48 +03:00
parent 1ee7c5a985
commit 796f247fec
26 changed files with 105 additions and 78 deletions

View file

@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate;
import com.opencsv.bean.CsvNumber; import com.opencsv.bean.CsvNumber;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
public class ExecutedDealReport { public class ExecutedDealReport {
@CsvBindByName(column = "SECURITYID") @CsvBindByName(column = "SECURITYID")
@ -26,7 +26,7 @@ public class ExecutedDealReport {
@CsvBindByName(column = "TRADETIME") @CsvBindByName(column = "TRADETIME")
@CsvBindByPosition(position = 3) @CsvBindByPosition(position = 3)
@CsvDate(value = "HH:mm:ss") @CsvDate(value = "HH:mm:ss")
private Instant tradeTime; private LocalDateTime tradeTime;
@CsvBindByName(column = "SETTLEDATE") @CsvBindByName(column = "SETTLEDATE")
@CsvBindByPosition(position = 4) @CsvBindByPosition(position = 4)
@ -77,11 +77,11 @@ public class ExecutedDealReport {
this.tradeDate = tradeDate; this.tradeDate = tradeDate;
} }
public Instant getTradeTime() { public LocalDateTime getTradeTime() {
return tradeTime; return tradeTime;
} }
public void setTradeTime(Instant tradeTime) { public void setTradeTime(LocalDateTime tradeTime) {
this.tradeTime = tradeTime; this.tradeTime = tradeTime;
} }

View file

@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate;
import com.opencsv.bean.CsvNumber; import com.opencsv.bean.CsvNumber;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
public class KSRepCashNettoReport { public class KSRepCashNettoReport {
@CsvBindByName(column = "FIRMID") @CsvBindByName(column = "FIRMID")
@ -21,7 +21,7 @@ public class KSRepCashNettoReport {
@CsvBindByName(column = "SESSION_DATE") @CsvBindByName(column = "SESSION_DATE")
@CsvBindByPosition(position = 2) @CsvBindByPosition(position = 2)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
private Instant sessionDate; private LocalDateTime sessionDate;
@CsvBindByName(column = "ACCOUNT") @CsvBindByName(column = "ACCOUNT")
@CsvBindByPosition(position = 3) @CsvBindByPosition(position = 3)
@ -54,11 +54,11 @@ public class KSRepCashNettoReport {
this.sessionId = sessionId; this.sessionId = sessionId;
} }
public Instant getSessionDate() { public LocalDateTime getSessionDate() {
return sessionDate; return sessionDate;
} }
public void setSessionDate(Instant sessionDate) { public void setSessionDate(LocalDateTime sessionDate) {
this.sessionDate = sessionDate; this.sessionDate = sessionDate;
} }

View file

@ -6,8 +6,8 @@ import com.opencsv.bean.CsvDate;
import com.opencsv.bean.CsvNumber; import com.opencsv.bean.CsvNumber;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
public class KSRepDepoNettoReport { public class KSRepDepoNettoReport {
@CsvBindByName(column = "FIRMID") @CsvBindByName(column = "FIRMID")
@ -21,7 +21,7 @@ public class KSRepDepoNettoReport {
@CsvBindByName(column = "SESSION_DATE") @CsvBindByName(column = "SESSION_DATE")
@CsvBindByPosition(position = 2) @CsvBindByPosition(position = 2)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
private Instant sessionDate; private LocalDateTime sessionDate;
@CsvBindByName(column = "ACCOUNT") @CsvBindByName(column = "ACCOUNT")
@CsvBindByPosition(position = 3) @CsvBindByPosition(position = 3)
@ -58,11 +58,11 @@ public class KSRepDepoNettoReport {
this.sessionId = sessionId; this.sessionId = sessionId;
} }
public Instant getSessionDate() { public LocalDateTime getSessionDate() {
return sessionDate; return sessionDate;
} }
public void setSessionDate(Instant sessionDate) { public void setSessionDate(LocalDateTime sessionDate) {
this.sessionDate = sessionDate; this.sessionDate = sessionDate;
} }

View file

@ -7,7 +7,7 @@ import com.opencsv.bean.CsvDate;
import com.opencsv.bean.CsvNumber; import com.opencsv.bean.CsvNumber;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant; import java.time.LocalDateTime;
public class KSRepTradesReport { public class KSRepTradesReport {
@CsvBindByName(column = "SESSION_ID") @CsvBindByName(column = "SESSION_ID")
@ -17,7 +17,7 @@ public class KSRepTradesReport {
@CsvBindByName(column = "SESSION_DATE") @CsvBindByName(column = "SESSION_DATE")
@CsvBindByPosition(position = 1) @CsvBindByPosition(position = 1)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
private Instant sessionDate; private LocalDateTime sessionDate;
@CsvBindByName(column = "TR_ID") @CsvBindByName(column = "TR_ID")
@CsvBindByPosition(position = 2) @CsvBindByPosition(position = 2)
@ -52,7 +52,7 @@ public class KSRepTradesReport {
@CsvBindByName(column = "TRADE_DATE") @CsvBindByName(column = "TRADE_DATE")
@CsvBindByPosition(position = 9) @CsvBindByPosition(position = 9)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
private Instant tradeDate; private LocalDateTime tradeDate;
@CsvBindByName(column = "STATUS") @CsvBindByName(column = "STATUS")
@CsvBindByPosition(position = 10) @CsvBindByPosition(position = 10)
@ -67,11 +67,11 @@ public class KSRepTradesReport {
this.sessionId = sessionId; this.sessionId = sessionId;
} }
public Instant getSessionDate() { public LocalDateTime getSessionDate() {
return sessionDate; return sessionDate;
} }
public void setSessionDate(Instant sessionDate) { public void setSessionDate(LocalDateTime sessionDate) {
this.sessionDate = sessionDate; this.sessionDate = sessionDate;
} }
@ -131,11 +131,11 @@ public class KSRepTradesReport {
this.classCode = classCode; this.classCode = classCode;
} }
public Instant getTradeDate() { public LocalDateTime getTradeDate() {
return tradeDate; return tradeDate;
} }
public void setTradeDate(Instant tradeDate) { public void setTradeDate(LocalDateTime tradeDate) {
this.tradeDate = tradeDate; this.tradeDate = tradeDate;
} }

View file

@ -4,7 +4,7 @@ import com.opencsv.bean.CsvBindByName;
import com.opencsv.bean.CsvBindByPosition; import com.opencsv.bean.CsvBindByPosition;
import com.opencsv.bean.CsvDate; import com.opencsv.bean.CsvDate;
import java.time.Instant; import java.time.LocalDateTime;
public class KSSessionListReport { public class KSSessionListReport {
@CsvBindByName(column = "ID") @CsvBindByName(column = "ID")
@ -14,14 +14,14 @@ public class KSSessionListReport {
@CsvBindByName(column = "CREATED_AT") @CsvBindByName(column = "CREATED_AT")
@CsvBindByPosition(position = 1) @CsvBindByPosition(position = 1)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
private Instant createdAt; private LocalDateTime createdAt;
@CsvBindByName(column = "UPDATED_AT") @CsvBindByName(column = "UPDATED_AT")
@CsvBindByPosition(position = 2) @CsvBindByPosition(position = 2)
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") @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) @CsvBindByPosition(position = 3)
private String section; private String section;
@ -41,19 +41,19 @@ public class KSSessionListReport {
this.id = id; this.id = id;
} }
public Instant getCreatedAt() { public LocalDateTime getCreatedAt() {
return createdAt; return createdAt;
} }
public void setCreatedAt(Instant createdAt) { public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt; this.createdAt = createdAt;
} }
public Instant getUpdatedAt() { public LocalDateTime getUpdatedAt() {
return updatedAt; return updatedAt;
} }
public void setUpdatedAt(Instant updatedAt) { public void setUpdatedAt(LocalDateTime updatedAt) {
this.updatedAt = updatedAt; this.updatedAt = updatedAt;
} }

View file

@ -13,12 +13,12 @@ import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects;
public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> { public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> {
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
@ -77,18 +77,18 @@ public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilde
executedDealReport.setSecurityId(executionFond.getSecuritySymbol()); executedDealReport.setSecurityId(executionFond.getSecuritySymbol());
executedDealReport.setTradeNo(executionFond.getExchangeExecutionId()); executedDealReport.setTradeNo(executionFond.getExchangeExecutionId());
executedDealReport.setTradeDate(executionFond.getTradingDate()); 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.setSettleDate(executionFond.getSettlementDate());
executedDealReport.setSettleCode(executionFond.getSettlementCode()); executedDealReport.setSettleCode(executionFond.getSettlementCode());
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO; BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO; BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO;
BigDecimal price = executionFond.getPrice() != null ? executionFond.getPrice() : BigDecimal.ZERO;
executedDealReport.setValue(settlementAmount); executedDealReport.setValue(settlementAmount);
executedDealReport.setQuantity(quantity); executedDealReport.setQuantity(quantity);
if (Objects.equals(quantity, BigDecimal.ZERO)) { executedDealReport.setPrice(price);
executedDealReport.setPrice(settlementAmount);
} else {
executedDealReport.setPrice(settlementAmount.divide(quantity, RoundingMode.HALF_UP));
}
lines.add(executedDealReport); lines.add(executedDealReport);
} catch (Throwable e) { } catch (Throwable e) {

View file

@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.ReportKeys; 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.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild
pb.and( pb.and(
pb.notNull("sessionId"), pb.notNull("sessionId"),
pb.less("tradingDate", LocalDate.now()), pb.less("tradingDate", LocalDate.now()),
pb.equals("settlementDate", LocalDate.now()) pb.equals("settlementDate", LocalDate.now()),
pb.equals("side", Side.SELL.getKey())
) )
); );
} }

View file

@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.ReportKeys; 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.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild
pb.and( pb.and(
pb.notNull("sessionId"), pb.notNull("sessionId"),
pb.equals("tradingDate", LocalDate.now()), pb.equals("tradingDate", LocalDate.now()),
pb.equals("settlementDate", LocalDate.now()) pb.equals("settlementDate", LocalDate.now()),
pb.equals("side", Side.SELL.getKey())
) )
); );
} }

View file

@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.ReportKeys; 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.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
@ -30,6 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuild
@Override @Override
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) { protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); 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())
)
);
} }
} }

View file

@ -5,6 +5,7 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.Allowed;
import ru.spcex.platform.enumeration.ReportKeys; 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.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
@ -34,7 +35,8 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild
return executionFondImdg.getCollectionObjectsByPredicate( return executionFondImdg.getCollectionObjectsByPredicate(
pb.and( pb.and(
pb.equals("coverageStatus", Allowed.DENIED.getKey()), pb.equals("coverageStatus", Allowed.DENIED.getKey()),
pb.equals("settlementDate", LocalDate.now()) pb.equals("settlementDate", LocalDate.now()),
pb.equals("side", Side.SELL.getKey())
) )
); );
} }

View file

@ -9,10 +9,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.CSVReportBuilder;
import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.clearing.reports.reports.bean.UnfulfilledDealReport; import ru.spcex.clearing.reports.reports.bean.UnfulfilledDealReport;
import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.enumeration.ReportBuilderType;
import ru.spcex.platform.enumeration.ReportKeys;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
@ -68,7 +65,8 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
ImdgPredicate predicate = pb.and( ImdgPredicate predicate = pb.and(
pb.notNull("sessionId"), pb.notNull("sessionId"),
pb.equals("coverageStatus", Allowed.DENIED.getKey()) pb.equals("coverageStatus", Allowed.DENIED.getKey()),
pb.equals("side", Side.SELL.getKey())
); );
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate); Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.reports.reports.ks;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols; 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.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.CSVReportBuilder;
@ -32,7 +32,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
private final Imdg<Registry> registryImdg; private final Imdg<Registry> registryImdg;
private final Imdg<Company> companyImdg; private final Imdg<Company> companyImdg;
private final Imdg<CompanySymbols> companySymbolsImdg; private final Imdg<CompanySymbols> companySymbolsImdg;
private final Imdg<STrades> sTradesImdg; private final Imdg<ExecutionDeposit> executionDepositImdg;
private List<KSCommissionTradesReport> rows = null; private List<KSCommissionTradesReport> rows = null;
@ -40,7 +40,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
} }
@Override @Override
@ -175,25 +175,25 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
if (agreementNumberPostfix != null && !agreementNumberPostfix.contains("~")) if (agreementNumberPostfix != null && !agreementNumberPostfix.contains("~"))
agreementNumberPostfix = ""; agreementNumberPostfix = "";
pb = sTradesImdg.predicateBuilder(); pb = executionDepositImdg.predicateBuilder();
Collection<STrades> sTradesList = sTradesImdg.getCollectionObjectsByPredicate( Collection<ExecutionDeposit> executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate(
pb.and( pb.and(
pb.equals("tradeNum", registry.getGroupId()), pb.equals("exchangeExecutionId", registry.getGroupId()),
pb.notNull("classCode") pb.notNull("market")
) )
); );
if (sTradesList.isEmpty()) { if (executionDeposits.isEmpty()) {
log.warn("Not found STrades for registry (id = {}), tradeNum: {}. Registry skipped", registry.getId(), registry.getGroupId()); log.warn("Not found ExecutionDeposit for registry (id = {}), groupId: {}. Registry skipped", registry.getId(), registry.getGroupId());
continue; continue;
} }
if (sTradesList.size() > 1) log.warn("sTrades[tradeNum = {}].size > 1, use first", tradeNum); if (executionDeposits.size() > 1) log.warn("ExecutionDeposit[exchangeExecutionId = {}].size > 1, use first", registry.getGroupId());
STrades sTrades = sTradesList.iterator().next(); ExecutionDeposit executionDeposit = executionDeposits.iterator().next();
KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport(); KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport();
ksCommissionTradesReport.setFirmId(firmId); ksCommissionTradesReport.setFirmId(firmId);
ksCommissionTradesReport.setFirmIdInitiator(firmIdInitiator); ksCommissionTradesReport.setFirmIdInitiator(firmIdInitiator);
ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol()); ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol());
ksCommissionTradesReport.setClassCode(sTrades.getClassCode()); ksCommissionTradesReport.setClassCode(executionDeposit.getMarket());
ksCommissionTradesReport.setAgreementNumber(agreementNumber); ksCommissionTradesReport.setAgreementNumber(agreementNumber);
ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix); ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix);
ksCommissionTradesReport.setAgreementDate(registry.getTradingDate()); ksCommissionTradesReport.setAgreementDate(registry.getTradingDate());

View file

@ -17,6 +17,8 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -131,7 +133,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
KSRepCashNettoReport ksRepCashNettoReport = new KSRepCashNettoReport(); KSRepCashNettoReport ksRepCashNettoReport = new KSRepCashNettoReport();
ksRepCashNettoReport.setFirmId(registry.getTradingCode()); ksRepCashNettoReport.setFirmId(registry.getTradingCode());
ksRepCashNettoReport.setSessionId(registry.getSessionId()); ksRepCashNettoReport.setSessionId(registry.getSessionId());
ksRepCashNettoReport.setSessionDate(session != null ? session.getCreated() : null);
if (session != null && session.getCreated() != null)
ksRepCashNettoReport.setSessionDate(LocalDateTime.ofInstant(session.getCreated(), ZoneId.systemDefault()));
ksRepCashNettoReport.setAccount(registry.getAccount()); ksRepCashNettoReport.setAccount(registry.getAccount());
ksRepCashNettoReport.setDate(nowDate); ksRepCashNettoReport.setDate(nowDate);

View file

@ -17,6 +17,8 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -131,7 +133,8 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
ksRepDepoNettoReport.setDate(nowDate); ksRepDepoNettoReport.setDate(nowDate);
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId()); Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
if (session != null) ksRepDepoNettoReport.setSessionDate(session.getCreated()); if (session != null && session.getCreated() != null)
ksRepDepoNettoReport.setSessionDate(LocalDateTime.ofInstant(session.getCreated(), ZoneId.systemDefault()));
BigDecimal tstBalance = BigDecimal.ZERO; BigDecimal tstBalance = BigDecimal.ZERO;
BigDecimal ostBalance = BigDecimal.ZERO; BigDecimal ostBalance = BigDecimal.ZERO;

View file

@ -22,6 +22,8 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -118,7 +120,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
if (execution.getSessionId() != null) { if (execution.getSessionId() != null) {
Session session = sessionImdg.getSingleObjectByID(execution.getSessionId()); Session session = sessionImdg.getSingleObjectByID(execution.getSessionId());
ksRepTradesReport.setSessionDate(session != null ? session.getCreated() : null); if (session != null && session.getCreated() != null)
ksRepTradesReport.setSessionDate(LocalDateTime.ofInstant(session.getCreated(), ZoneId.systemDefault()));
} else { } else {
log.info("Execution id = {} was skipped: session_id is null", execution.getId()); log.info("Execution id = {} was skipped: session_id is null", execution.getId());
continue; continue;
@ -136,7 +139,9 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId()); ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId());
ksRepTradesReport.setClassCode(execution.getMarket()); ksRepTradesReport.setClassCode(execution.getMarket());
ksRepTradesReport.setTradeDate(execution.getExchangeExecutionTime());
if (execution.getExchangeExecutionTime() != null)
ksRepTradesReport.setTradeDate(LocalDateTime.ofInstant(execution.getExchangeExecutionTime(), ZoneId.systemDefault()));
String status = "0"; String status = "0";
if (execution.getCoverageStatus() != null) { if (execution.getCoverageStatus() != null) {

View file

@ -12,6 +12,8 @@ import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -60,8 +62,10 @@ public class KSSessionListReportBuilder extends CSVReportBuilder<EmptyParams, KS
try { try {
KSSessionListReport ksSessionListReport = new KSSessionListReport(); KSSessionListReport ksSessionListReport = new KSSessionListReport();
ksSessionListReport.setId(session.getId()); ksSessionListReport.setId(session.getId());
ksSessionListReport.setCreatedAt(session.getCreated()); if (session.getCreated() != null)
ksSessionListReport.setUpdatedAt(session.getUpdated()); ksSessionListReport.setCreatedAt(LocalDateTime.ofInstant(session.getCreated(), ZoneId.systemDefault()));
if (session.getUpdated() != null)
ksSessionListReport.setUpdatedAt(LocalDateTime.ofInstant(session.getUpdated(), ZoneId.systemDefault()));
ksSessionListReport.setSection(session.getSection()); ksSessionListReport.setSection(session.getSection());
ksSessionListReport.setSessionType(session.getSessionType()); ksSessionListReport.setSessionType(session.getSessionType());
ksSessionListReport.setWorkflowStatus(session.getWorkflowStatus()); ksSessionListReport.setWorkflowStatus(session.getWorkflowStatus());

View file

@ -664,10 +664,10 @@ public class ReportServiceTest_KS {
omtRegistry.setGroupId(23071812300L); omtRegistry.setGroupId(23071812300L);
registryImdg.insert(omtRegistry); registryImdg.insert(omtRegistry);
STrades sTrades = new STrades(); ExecutionDeposit executionDeposit = new ExecutionDeposit();
sTrades.setTradeNum(23071812300L); executionDeposit.setExchangeExecutionId(registry.getGroupId());
sTrades.setClassCode("CLASS_CODE"); executionDeposit.setMarket("market");
sTradesImdg.insert(sTrades); executionDepositImdg.insert(executionDeposit);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
@ -686,7 +686,7 @@ public class ReportServiceTest_KS {
registryImdg.delete(registry); registryImdg.delete(registry);
registryImdg.delete(omtRegistry); registryImdg.delete(omtRegistry);
companySymbolsImdg.delete(companySymbols); companySymbolsImdg.delete(companySymbols);
sTradesImdg.delete(sTrades); executionDepositImdg.delete(executionDeposit);
} }

View file

@ -1,2 +1,2 @@
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
"test-security-symbol-1","777","22.07.2023","01:22:57","01.08.2023","test-settlement-code","1000.000000","7777","7777777.00" "test-security-symbol-1","777","22.07.2023","05:22:57","01.08.2023","test-settlement-code","77.000000","7777","7777777.00"

1 SECURITYID TRADENO TRADEDATE TRADETIME SETTLEDATE SETTLECODE PRICE QUANTITY VALUE
2 test-security-symbol-1 777 22.07.2023 01:22:57 05:22:57 01.08.2023 test-settlement-code 1000.000000 77.000000 7777 7777777.00

View file

@ -1,2 +1,2 @@
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
"test-security-symbol-1","777","01.08.2023","01:22:57","01.08.2023","test-settlement-code","1000.000000","7777","7777777.00" "test-security-symbol-1","777","01.08.2023","05:22:57","01.08.2023","test-settlement-code","77.000000","7777","7777777.00"

1 SECURITYID TRADENO TRADEDATE TRADETIME SETTLEDATE SETTLECODE PRICE QUANTITY VALUE
2 test-security-symbol-1 777 01.08.2023 01:22:57 05:22:57 01.08.2023 test-settlement-code 1000.000000 77.000000 7777 7777777.00

View file

@ -1,2 +1,2 @@
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
"test-security-symbol-1","777","11.08.2023","01:22:57","11.08.2023","test-settlement-code","1000.000000","7777","7777777.00" "test-security-symbol-1","777","11.08.2023","05:22:57","11.08.2023","test-settlement-code","77.000000","7777","7777777.00"

1 SECURITYID TRADENO TRADEDATE TRADETIME SETTLEDATE SETTLECODE PRICE QUANTITY VALUE
2 test-security-symbol-1 777 11.08.2023 01:22:57 05:22:57 11.08.2023 test-settlement-code 1000.000000 77.000000 7777 7777777.00

View file

@ -1,2 +1,2 @@
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
"test-security-symbol-1","777","11.08.2023","01:22:57","01.08.2023","test-settlement-code","1000.000000","7777","7777777.00" "test-security-symbol-1","777","11.08.2023","05:22:57","01.08.2023","test-settlement-code","77.000000","7777","7777777.00"

1 SECURITYID TRADENO TRADEDATE TRADETIME SETTLEDATE SETTLECODE PRICE QUANTITY VALUE
2 test-security-symbol-1 777 11.08.2023 01:22:57 05:22:57 01.08.2023 test-settlement-code 1000.000000 77.000000 7777 7777777.00

View file

@ -1,2 +1,2 @@
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS" "FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","CLASS_CODE","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","OK" "CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","market","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","OK"

1 FIRM_ID FIRM_ID_INITIATOR SECCODE CLASS_CODE AGREEMENT_NUMBER AGREEMENT_NUMBER_POSTFIX AGREEMENT_DATE SUM REPAYM_DATE EXEC_STATUS
2 CLEARING_CODE COMPANY_SYMBOL_VALUE SECURITY_SYMBOL CLASS_CODE market CONT CONT~RACT 01.01.1991 77.78 05.09.2023 OK

View file

@ -1,2 +1,2 @@
"FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","VALUE","DATE" "FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","VALUE","DATE"
"TRADING_CODE","2","19.01.1970T23:49:58","ACCOUNT","22.22","07.07.2023" "TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","22.22","07.07.2023"

1 FIRMID SESSION_ID SESSION_DATE ACCOUNT VALUE DATE
2 TRADING_CODE 2 19.01.1970T23:49:58 20.01.1970T02:49:58 ACCOUNT 22.22 07.07.2023

View file

@ -1,2 +1,2 @@
"FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","SECURITYID","VALUE","DATE" "FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","SECURITYID","VALUE","DATE"
"TRADING_CODE","2","19.01.1970T23:49:58","ACCOUNT","SECURITY_SYMBOL","22","07.07.2023" "TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","SECURITY_SYMBOL","22","07.07.2023"

1 FIRMID SESSION_ID SESSION_DATE ACCOUNT SECURITYID VALUE DATE
2 TRADING_CODE 2 19.01.1970T23:49:58 20.01.1970T02:49:58 ACCOUNT SECURITY_SYMBOL 22 07.07.2023

View file

@ -1,3 +1,3 @@
"SESSION_ID","SESSION_DATE","TR_ID","FIRM_ID","TKR","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS" "SESSION_ID","SESSION_DATE","TR_ID","FIRM_ID","TKR","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS"
"4","20.01.1970T04:09:07","8","TRADING_CODE","TKR","8888.89","","222",3333,"19.01.1970T23:49:58","3" "4","20.01.1970T07:09:07","8","TRADING_CODE","TKR","8888.89","","222",3333,"20.01.1970T02:49:58","3"
"3","20.01.1970T12:54:43","5","TRADING_CODE","TKR","8888.89","123","222",3333,"19.01.1970T23:49:58","1" "3","20.01.1970T15:54:43","5","TRADING_CODE","TKR","8888.89","123","222",3333,"20.01.1970T02:49:58","1"

1 SESSION_ID SESSION_DATE TR_ID FIRM_ID TKR CASH_LIABILITY DEPO_LIABILITY TRADE_NUM CLASS_CODE TRADE_DATE STATUS
2 4 20.01.1970T04:09:07 20.01.1970T07:09:07 8 TRADING_CODE TKR 8888.89 222 3333 19.01.1970T23:49:58 20.01.1970T02:49:58 3
3 3 20.01.1970T12:54:43 20.01.1970T15:54:43 5 TRADING_CODE TKR 8888.89 123 222 3333 19.01.1970T23:49:58 20.01.1970T02:49:58 1

View file

@ -1,2 +1,2 @@
"ID","CREATED_AT","UPDATED_AT","SESSION_DATE","SESSION_TYPE","WORKFLOW_STATUS" "ID","CREATED_AT","UPDATED_AT","SECTION","SESSION_TYPE","WORKFLOW_STATUS"
"2","03.05.2026T03:09:37","09.01.2058T04:56:17","MKR","FINL","ACTV" "2","03.05.2026T06:09:37","09.01.2058T07:56:17","MKR","FINL","ACTV"

1 ID CREATED_AT UPDATED_AT SESSION_DATE SECTION SESSION_TYPE WORKFLOW_STATUS
2 2 03.05.2026T03:09:37 03.05.2026T06:09:37 09.01.2058T04:56:17 09.01.2058T07:56:17 MKR MKR FINL ACTV