This commit is contained in:
parent
f2f94ca3e2
commit
d46bd1fc5e
11 changed files with 364 additions and 134 deletions
|
|
@ -1,13 +1,12 @@
|
||||||
package ru.spcex.clearing.reports.builders.bean;
|
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.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
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 {
|
public class KSRepCashNettoReport {
|
||||||
@CsvBindByName(column = "FIRMID")
|
@CsvBindByName(column = "FIRMID")
|
||||||
|
|
@ -51,6 +50,10 @@ public class KSRepCashNettoReport {
|
||||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||||
private BigDecimal reqValue;
|
private BigDecimal reqValue;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "LOT_CURRENCY")
|
||||||
|
@CsvBindByPosition(position = 9)
|
||||||
|
private String lotCurrency;
|
||||||
|
|
||||||
|
|
||||||
public String getFirmId() {
|
public String getFirmId() {
|
||||||
return firmId;
|
return firmId;
|
||||||
|
|
@ -123,4 +126,12 @@ public class KSRepCashNettoReport {
|
||||||
public void setReqValue(BigDecimal reqValue) {
|
public void setReqValue(BigDecimal reqValue) {
|
||||||
this.reqValue = reqValue;
|
this.reqValue = reqValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLotCurrency() {
|
||||||
|
return lotCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotCurrency(String lotCurrency) {
|
||||||
|
this.lotCurrency = lotCurrency;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
package ru.spcex.clearing.reports.builders.bean;
|
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.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalTime;
|
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 {
|
public class KSRepCashRegisterSumsReport {
|
||||||
@CsvBindByName(column = "FIRMID")
|
@CsvBindByName(column = "FIRMID")
|
||||||
|
|
@ -45,6 +44,10 @@ public class KSRepCashRegisterSumsReport {
|
||||||
@CsvBindByPosition(position = 7)
|
@CsvBindByPosition(position = 7)
|
||||||
private String tradeNum;
|
private String tradeNum;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "OPER_TYPE")
|
||||||
|
@CsvBindByPosition(position = 8)
|
||||||
|
private String operType;
|
||||||
|
|
||||||
|
|
||||||
public String getFirmId() {
|
public String getFirmId() {
|
||||||
return firmId;
|
return firmId;
|
||||||
|
|
@ -109,4 +112,12 @@ public class KSRepCashRegisterSumsReport {
|
||||||
public void setTradeNum(String tradeNum) {
|
public void setTradeNum(String tradeNum) {
|
||||||
this.tradeNum = tradeNum;
|
this.tradeNum = tradeNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getOperType() {
|
||||||
|
return operType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperType(String operType) {
|
||||||
|
this.operType = operType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
package ru.spcex.clearing.reports.builders.bean;
|
package ru.spcex.clearing.reports.builders.bean;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import com.opencsv.bean.CsvBindByName;
|
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 com.opencsv.bean.CsvNumber;
|
import com.opencsv.bean.CsvNumber;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
public class KSRepCashRegistersReport {
|
public class KSRepCashRegistersReport {
|
||||||
@CsvBindByName(column = "FIRMID")
|
@CsvBindByName(column = "FIRMID")
|
||||||
@CsvBindByPosition(position = 0)
|
@CsvBindByPosition(position = 0)
|
||||||
|
|
@ -62,6 +61,9 @@ public class KSRepCashRegistersReport {
|
||||||
@CsvBindByPosition(position = 11)
|
@CsvBindByPosition(position = 11)
|
||||||
private String tradeNum;
|
private String tradeNum;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "CURRENCY")
|
||||||
|
@CsvBindByPosition(position = 12)
|
||||||
|
private String currency;
|
||||||
|
|
||||||
public String getFirmId() {
|
public String getFirmId() {
|
||||||
return firmId;
|
return firmId;
|
||||||
|
|
@ -158,4 +160,12 @@ public class KSRepCashRegistersReport {
|
||||||
public void setTradeNum(String tradeNum) {
|
public void setTradeNum(String tradeNum) {
|
||||||
this.tradeNum = tradeNum;
|
this.tradeNum = tradeNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCurrency() {
|
||||||
|
return currency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrency(String currency) {
|
||||||
|
this.currency = currency;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
package ru.spcex.clearing.reports.builders.bean;
|
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.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalTime;
|
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 {
|
public class KSRepDepoRegisterQuantitiesReport {
|
||||||
@CsvBindByName(column = "FIRMID")
|
@CsvBindByName(column = "FIRMID")
|
||||||
|
|
@ -49,6 +48,10 @@ public class KSRepDepoRegisterQuantitiesReport {
|
||||||
@CsvBindByPosition(position = 8)
|
@CsvBindByPosition(position = 8)
|
||||||
private String tradeNum;
|
private String tradeNum;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "LOT_CURRENCY")
|
||||||
|
@CsvBindByPosition(position = 8)
|
||||||
|
private String lotCurrency;
|
||||||
|
|
||||||
|
|
||||||
public String getFirmId() {
|
public String getFirmId() {
|
||||||
return firmId;
|
return firmId;
|
||||||
|
|
@ -121,4 +124,13 @@ public class KSRepDepoRegisterQuantitiesReport {
|
||||||
public void setTradeNum(String tradeNum) {
|
public void setTradeNum(String tradeNum) {
|
||||||
this.tradeNum = tradeNum;
|
this.tradeNum = tradeNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLotCurrency() {
|
||||||
|
return lotCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotCurrency(String lotCurrency) {
|
||||||
|
this.lotCurrency = lotCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
package ru.spcex.clearing.reports.builders.bean;
|
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.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
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 {
|
public class KSRepTradesReport {
|
||||||
@CsvBindByName(column = "SESSION_ID")
|
@CsvBindByName(column = "SESSION_ID")
|
||||||
|
|
@ -76,6 +75,10 @@ public class KSRepTradesReport {
|
||||||
@CsvDate(value = "dd.MM.yyyy")
|
@CsvDate(value = "dd.MM.yyyy")
|
||||||
private LocalDate repaymDate;
|
private LocalDate repaymDate;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "LOT_CURRENCY")
|
||||||
|
@CsvBindByPosition(position = 15)
|
||||||
|
private String lotCurrency;
|
||||||
|
|
||||||
|
|
||||||
public Long getSessionId() {
|
public Long getSessionId() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
|
|
@ -196,4 +199,12 @@ public class KSRepTradesReport {
|
||||||
public void setRepaymDate(LocalDate repaymDate) {
|
public void setRepaymDate(LocalDate repaymDate) {
|
||||||
this.repaymDate = repaymDate;
|
this.repaymDate = repaymDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLotCurrency() {
|
||||||
|
return lotCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotCurrency(String lotCurrency) {
|
||||||
|
this.lotCurrency = lotCurrency;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,32 @@
|
||||||
package ru.spcex.clearing.reports.builders.ks;
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
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.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||||
import ru.spcex.clearing.reports.builders.PairRegistryId;
|
import ru.spcex.clearing.reports.builders.PairRegistryId;
|
||||||
import ru.spcex.clearing.reports.builders.SessionIdParam;
|
import ru.spcex.clearing.reports.builders.SessionIdParam;
|
||||||
import ru.spcex.clearing.reports.builders.bean.KSRepCashNettoReport;
|
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.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;
|
||||||
|
|
@ -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.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
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
|
@Component
|
||||||
public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepCashNettoReport> {
|
public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepCashNettoReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
private final Imdg<Account> accountImdg;
|
private final Imdg<Account> accountImdg;
|
||||||
|
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||||
|
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||||
|
|
||||||
private List<KSRepCashNettoReport> rows = null;
|
private List<KSRepCashNettoReport> rows = null;
|
||||||
|
|
||||||
|
|
@ -35,6 +48,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||||
|
currencyPairDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, CurrencyPairDictionary.class);
|
||||||
|
currencyPairSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -227,6 +242,20 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
ksRepCashNettoReport.setOblValue(withOblReqValue ? oblValue : null);
|
ksRepCashNettoReport.setOblValue(withOblReqValue ? oblValue : null);
|
||||||
ksRepCashNettoReport.setReqValue(withOblReqValue ? reqValue : null);
|
ksRepCashNettoReport.setReqValue(withOblReqValue ? reqValue : null);
|
||||||
|
|
||||||
|
CurrencyPairSecurity currencyPairSecurity = currencyPairSecurityImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"securityId", registry.getSecurityId()
|
||||||
|
));
|
||||||
|
if (currencyPairSecurity != null) {
|
||||||
|
CurrencyPairDictionary currencyPairDictionary = currencyPairDictionaryImdg.getSingleObjectByFieldValues(
|
||||||
|
Map.of(
|
||||||
|
"baseCurrency", currencyPairSecurity.getCurrencyPairId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (currencyPairDictionary != null) {
|
||||||
|
ksRepCashNettoReport.setLotCurrency(currencyPairDictionary.getBaseCurrency());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rows.add(ksRepCashNettoReport);
|
rows.add(ksRepCashNettoReport);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.error(
|
log.error(
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.builders.ks;
|
package ru.spcex.clearing.reports.builders.ks;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
|
||||||
import ru.spcex.clearing.reports.builders.EmptyParams;
|
|
||||||
import ru.spcex.clearing.reports.builders.bean.KSRepCashRegisterSumsReport;
|
|
||||||
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;
|
|
||||||
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.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -25,6 +9,27 @@ import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||||
|
import ru.spcex.clearing.reports.builders.EmptyParams;
|
||||||
|
import ru.spcex.clearing.reports.builders.bean.KSRepCashRegisterSumsReport;
|
||||||
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.OperationType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
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.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegisterSumsReport> {
|
public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegisterSumsReport> {
|
||||||
|
|
@ -129,6 +134,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
|
||||||
BigDecimal addSum = registry.getBalance() != null ? registry.getBalance() :BigDecimal.ZERO;
|
BigDecimal addSum = registry.getBalance() != null ? registry.getBalance() :BigDecimal.ZERO;
|
||||||
Instant addTime = registry.getUpdated();
|
Instant addTime = registry.getUpdated();
|
||||||
LocalDate addDate = LocalDate.now();
|
LocalDate addDate = LocalDate.now();
|
||||||
|
OperationType operType = OperationType.forBigDecimal(registry.getBalance());
|
||||||
|
|
||||||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||||
ksRepCashRegisterSumsReport.setFirmId(firmId);
|
ksRepCashRegisterSumsReport.setFirmId(firmId);
|
||||||
|
|
@ -139,6 +145,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
|
||||||
ksRepCashRegisterSumsReport.setAddSum(addSum);
|
ksRepCashRegisterSumsReport.setAddSum(addSum);
|
||||||
ksRepCashRegisterSumsReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
ksRepCashRegisterSumsReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
||||||
ksRepCashRegisterSumsReport.setAddDate(addDate);
|
ksRepCashRegisterSumsReport.setAddDate(addDate);
|
||||||
|
ksRepCashRegisterSumsReport.setOperType(operType.getCode());
|
||||||
rows.add(ksRepCashRegisterSumsReport);
|
rows.add(ksRepCashRegisterSumsReport);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,15 @@
|
||||||
package ru.spcex.clearing.reports.builders.ks;
|
package ru.spcex.clearing.reports.builders.ks;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
|
|
@ -11,7 +21,14 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||||
import ru.spcex.clearing.reports.builders.EmptyParams;
|
import ru.spcex.clearing.reports.builders.EmptyParams;
|
||||||
import ru.spcex.clearing.reports.builders.bean.KSRepCashRegistersReport;
|
import ru.spcex.clearing.reports.builders.bean.KSRepCashRegistersReport;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
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.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;
|
||||||
|
|
@ -19,12 +36,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
|
|
@ -230,6 +241,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
||||||
.add(ksRepCashRegistersReport.getChangeBalance())
|
.add(ksRepCashRegistersReport.getChangeBalance())
|
||||||
.add(ksRepCashRegistersReport.getAddWithdraw());
|
.add(ksRepCashRegistersReport.getAddWithdraw());
|
||||||
ksRepCashRegistersReport.setCloseBalance(closeBalance);
|
ksRepCashRegistersReport.setCloseBalance(closeBalance);
|
||||||
|
ksRepCashRegistersReport.setCurrency(registry.getSecuritySymbol());
|
||||||
|
|
||||||
rows.add(ksRepCashRegistersReport);
|
rows.add(ksRepCashRegistersReport);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.builders.ks;
|
package ru.spcex.clearing.reports.builders.ks;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.account.AccountSymbols;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
|
||||||
import ru.spcex.clearing.reports.builders.EmptyParams;
|
|
||||||
import ru.spcex.clearing.reports.builders.bean.KSRepDepoRegisterQuantitiesReport;
|
|
||||||
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;
|
|
||||||
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.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -26,12 +9,37 @@ import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import ru.clearing.classes.statics.data.account.AccountSymbols;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
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.EmptyParams;
|
||||||
|
import ru.spcex.clearing.reports.builders.bean.KSRepDepoRegisterQuantitiesReport;
|
||||||
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
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.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
||||||
|
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||||
|
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||||
|
|
||||||
private List<KSRepDepoRegisterQuantitiesReport> rows = null;
|
private List<KSRepDepoRegisterQuantitiesReport> rows = null;
|
||||||
|
|
||||||
|
|
@ -39,6 +47,8 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
||||||
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);
|
||||||
accountSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.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
|
@Override
|
||||||
|
|
@ -126,6 +136,20 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
||||||
BigDecimal addQuantity = registry.getBalance();
|
BigDecimal addQuantity = registry.getBalance();
|
||||||
Instant addTime = registry.getUpdated();
|
Instant addTime = registry.getUpdated();
|
||||||
LocalDate addDate = LocalDate.now();
|
LocalDate addDate = LocalDate.now();
|
||||||
|
String lotCurrency = null;
|
||||||
|
CurrencyPairSecurity currencyPairSecurity = currencyPairSecurityImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"securityId", registry.getSecurityId()
|
||||||
|
));
|
||||||
|
if (currencyPairSecurity != null) {
|
||||||
|
CurrencyPairDictionary currencyPairDictionary = currencyPairDictionaryImdg.getSingleObjectByFieldValues(
|
||||||
|
Map.of(
|
||||||
|
"baseCurrency", currencyPairSecurity.getCurrencyPairId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (currencyPairDictionary != null) {
|
||||||
|
lotCurrency = currencyPairDictionary.getBaseCurrency();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||||
ksRepDepoRegisterQuantitiesReport.setFirmId(firmId);
|
ksRepDepoRegisterQuantitiesReport.setFirmId(firmId);
|
||||||
|
|
@ -137,6 +161,7 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
||||||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(addQuantity);
|
ksRepDepoRegisterQuantitiesReport.setAddQuantity(addQuantity);
|
||||||
ksRepDepoRegisterQuantitiesReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
ksRepDepoRegisterQuantitiesReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
||||||
ksRepDepoRegisterQuantitiesReport.setAddDate(addDate);
|
ksRepDepoRegisterQuantitiesReport.setAddDate(addDate);
|
||||||
|
ksRepDepoRegisterQuantitiesReport.setLotCurrency(lotCurrency);
|
||||||
rows.add(ksRepDepoRegisterQuantitiesReport);
|
rows.add(ksRepDepoRegisterQuantitiesReport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,46 @@
|
||||||
package ru.spcex.clearing.reports.builders.ks;
|
package ru.spcex.clearing.reports.builders.ks;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
|
||||||
import ru.clearing.classes.statics.data.account.AccountSymbols;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
|
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
|
||||||
import ru.spcex.clearing.reports.builders.EmptyParams;
|
|
||||||
import ru.spcex.clearing.reports.builders.bean.KSRepTradesReport;
|
|
||||||
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.ImdgPredicateBuilder;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
|
||||||
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.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
|
import ru.clearing.classes.statics.data.account.AccountSymbols;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionCurrency;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
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.EmptyParams;
|
||||||
|
import ru.spcex.clearing.reports.builders.bean.KSRepTradesReport;
|
||||||
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.CoverageStatus;
|
||||||
|
import ru.spcex.platform.enumeration.MoneyFlowSide;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||||
|
import ru.spcex.platform.enumeration.ReportKeys;
|
||||||
|
import ru.spcex.platform.enumeration.Side;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepTradesReport> {
|
public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepTradesReport> {
|
||||||
|
|
@ -33,24 +48,30 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
|
|
||||||
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||||
private final Imdg<ExecutionFond> executionFondImdg;
|
private final Imdg<ExecutionFond> executionFondImdg;
|
||||||
|
private final Imdg<ExecutionCurrency> executionCurrencyImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||||
private final Imdg<Account> accountImdg;
|
private final Imdg<Account> accountImdg;
|
||||||
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
||||||
|
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||||
|
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||||
|
|
||||||
private List<KSRepTradesReport> rows = null;
|
private List<KSRepTradesReport> rows = null;
|
||||||
|
|
||||||
public KSRepTradesReportBuilder(ImdgProvider imdgProvider) {
|
public KSRepTradesReportBuilder(ImdgProvider imdgProvider) {
|
||||||
executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.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);
|
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
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);
|
||||||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||||
accountSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.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
|
@Override
|
||||||
|
|
@ -84,23 +105,32 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
|
|
||||||
ImdgPredicateBuilder pbExecutionDeposit = executionDepositImdg.predicateBuilder();
|
ImdgPredicateBuilder pbExecutionDeposit = executionDepositImdg.predicateBuilder();
|
||||||
Collection<ExecutionDeposit> executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate(
|
Collection<ExecutionDeposit> executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate(
|
||||||
pbExecutionDeposit.or(
|
pbExecutionDeposit.or(
|
||||||
pbExecutionDeposit.equals("tradingDate", nowDate),
|
pbExecutionDeposit.equals("tradingDate", nowDate),
|
||||||
pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate)
|
pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
log.debug("Found {} ExecutionDeposit by tradingDate={}", executionDeposits.size(), nowDate);
|
log.debug("Found {} ExecutionDeposit by tradingDate={}", executionDeposits.size(), nowDate);
|
||||||
ImdgPredicateBuilder pbExecutionFond = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder pbExecutionFond = executionFondImdg.predicateBuilder();
|
||||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(
|
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(
|
||||||
pbExecutionFond.or(
|
pbExecutionFond.or(
|
||||||
pbExecutionFond.equals("tradingDate", nowDate),
|
pbExecutionFond.equals("tradingDate", nowDate),
|
||||||
pbExecutionFond.greatEqual("settlementDate", nowDate)
|
pbExecutionFond.greatEqual("settlementDate", nowDate)
|
||||||
)
|
)
|
||||||
|
);
|
||||||
|
log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate);
|
||||||
|
ImdgPredicateBuilder pbExecutionCurrency = executionCurrencyImdg.predicateBuilder();
|
||||||
|
Collection<ExecutionCurrency> executionCurrencies = executionCurrencyImdg.getCollectionObjectsByPredicate(
|
||||||
|
pbExecutionCurrency.or(
|
||||||
|
pbExecutionCurrency.equals("tradingDate", nowDate),
|
||||||
|
pbExecutionCurrency.greatEqual("settlementDate", nowDate)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate);
|
log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate);
|
||||||
List<ExecutionCommon> executions = new ArrayList<>();
|
List<ExecutionCommon> executions = new ArrayList<>();
|
||||||
executions.addAll(executionDeposits);
|
executions.addAll(executionDeposits);
|
||||||
executions.addAll(executionFonds);
|
executions.addAll(executionFonds);
|
||||||
|
executions.addAll(executionCurrencies);
|
||||||
|
|
||||||
Map<ExecutionKey, String> statusForExecution = new HashMap<>();
|
Map<ExecutionKey, String> statusForExecution = new HashMap<>();
|
||||||
executions.forEach(execution -> {
|
executions.forEach(execution -> {
|
||||||
|
|
@ -116,16 +146,16 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||||
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
||||||
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
||||||
pbRegistry.and(
|
pbRegistry.and(
|
||||||
pbRegistry.equals("groupId", groupId),
|
pbRegistry.equals("groupId", groupId),
|
||||||
pbRegistry.equals("companyId", execution.getCompanyId()),
|
pbRegistry.equals("companyId", execution.getCompanyId()),
|
||||||
pbRegistry.in("registryStatus",
|
pbRegistry.in("registryStatus",
|
||||||
RegistryStatus.NACC.getKey(),
|
RegistryStatus.NACC.getKey(),
|
||||||
RegistryStatus.NACK.getKey(),
|
RegistryStatus.NACK.getKey(),
|
||||||
RegistryStatus.FAIL.getKey(),
|
RegistryStatus.FAIL.getKey(),
|
||||||
RegistryStatus.UNCV.getKey()),
|
RegistryStatus.UNCV.getKey()),
|
||||||
pbRegistry.sql(registryPredicateStr)
|
pbRegistry.sql(registryPredicateStr)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if (registryCollection.isEmpty()) {
|
if (registryCollection.isEmpty()) {
|
||||||
status = null;
|
status = null;
|
||||||
|
|
@ -155,8 +185,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
TradingClearingRegistry tkr = tradingClearingRegistryImdg.getSingleObjectByID(execution.getTradingClearingRegistryId());
|
TradingClearingRegistry tkr = tradingClearingRegistryImdg.getSingleObjectByID(execution.getTradingClearingRegistryId());
|
||||||
if (tkr == null) {
|
if (tkr == null) {
|
||||||
log.info("Execution id = {} was skipped: trading_clearing_registry for id {} not found",
|
log.info("Execution id = {} was skipped: trading_clearing_registry for id {} not found",
|
||||||
execution.getId(),
|
execution.getId(),
|
||||||
execution.getTradingClearingRegistryId());
|
execution.getTradingClearingRegistryId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,8 +198,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
if (moneyAccountFromImdg != null) {
|
if (moneyAccountFromImdg != null) {
|
||||||
if (AccountType.Info.equalsByKey(moneyAccountFromImdg.getAccountType())) {
|
if (AccountType.Info.equalsByKey(moneyAccountFromImdg.getAccountType())) {
|
||||||
moneyAccountFromImdg = accountImdg.getFirstObjectByFieldValues(Map.of(
|
moneyAccountFromImdg = accountImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
"companyId", 1L,
|
"companyId", 1L,
|
||||||
"accountType", AccountType.Anlt.getKey()
|
"accountType", AccountType.Anlt.getKey()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
account = moneyAccountFromImdg.getAccount();
|
account = moneyAccountFromImdg.getAccount();
|
||||||
|
|
@ -178,7 +208,6 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
ksRepTradesReport.setAccount(account);
|
ksRepTradesReport.setAccount(account);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (execution.getCompanyId() != null) {
|
if (execution.getCompanyId() != null) {
|
||||||
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
|
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
|
||||||
ksRepTradesReport.setFirmId(company != null ? company.getTradingCode() : null);
|
ksRepTradesReport.setFirmId(company != null ? company.getTradingCode() : null);
|
||||||
|
|
@ -220,7 +249,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
|
|
||||||
if (tkr.getDepoAccountId() != null) {
|
if (tkr.getDepoAccountId() != null) {
|
||||||
AccountSymbols accountSymbols = accountSymbolsImdg.getFirstObjectByFieldValues(Map.of(
|
AccountSymbols accountSymbols = accountSymbolsImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
"accountId", tkr.getDepoAccountId()
|
"accountId", tkr.getDepoAccountId()
|
||||||
));
|
));
|
||||||
if (accountSymbols != null) {
|
if (accountSymbols != null) {
|
||||||
depoAccount = accountSymbols.getAccountSymbolValue();
|
depoAccount = accountSymbols.getAccountSymbolValue();
|
||||||
|
|
@ -232,12 +261,12 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
|
|
||||||
Company company = null;
|
Company company = null;
|
||||||
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
|
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
|
||||||
if (Arrays.asList(Side.BUY.getKey(), "B","BUY").contains(executionFond.getSide())) {
|
if (Arrays.asList(Side.BUY.getKey(), "B", "BUY").contains(executionFond.getSide())) {
|
||||||
settlementAmount = settlementAmount.negate();
|
settlementAmount = settlementAmount.negate();
|
||||||
ksRepTradesReport.setCashLiability(settlementAmount);
|
ksRepTradesReport.setCashLiability(settlementAmount);
|
||||||
if (executionFond.getCompanyId() != null)
|
if (executionFond.getCompanyId() != null)
|
||||||
company = companyImdg.getSingleObjectByID(executionFond.getCompanyId());
|
company = companyImdg.getSingleObjectByID(executionFond.getCompanyId());
|
||||||
} else if (Arrays.asList(Side.SELL.getKey(), "S","SELL").contains(executionFond.getSide())) {
|
} else if (Arrays.asList(Side.SELL.getKey(), "S", "SELL").contains(executionFond.getSide())) {
|
||||||
ksRepTradesReport.setCashLiability(settlementAmount);
|
ksRepTradesReport.setCashLiability(settlementAmount);
|
||||||
if (executionFond.getCounterPartyId() != null)
|
if (executionFond.getCounterPartyId() != null)
|
||||||
company = companyImdg.getSingleObjectByID(executionFond.getCounterPartyId());
|
company = companyImdg.getSingleObjectByID(executionFond.getCounterPartyId());
|
||||||
|
|
@ -247,17 +276,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
executionFond.getSecuritySymbol() == null || company == null ||
|
executionFond.getSecuritySymbol() == null || company == null ||
|
||||||
company.getTradingCode() == null || executionFond.getExchangeExecutionId() == null
|
company.getTradingCode() == null || executionFond.getExchangeExecutionId() == null
|
||||||
) {
|
) {
|
||||||
log.warn("Can't format agreement number for execution id={}, security_symbol={}, " +
|
log.warn("Can't format agreement number for execution id={}, security_symbol={}, " +
|
||||||
"executionFond.trading_date={}, company.trading_code={}, " +
|
"executionFond.trading_date={}, company.trading_code={}, " +
|
||||||
"executionFond.exchange_execution_id={}",
|
"executionFond.exchange_execution_id={}",
|
||||||
execution.getId(),
|
execution.getId(),
|
||||||
executionFond.getSecuritySymbol(),
|
executionFond.getSecuritySymbol(),
|
||||||
ddMMyyyyFormatter.format(executionFond.getTradingDate()),
|
ddMMyyyyFormatter.format(executionFond.getTradingDate()),
|
||||||
company != null ? company.getTradingCode() : null,
|
company != null ? company.getTradingCode() : null,
|
||||||
executionFond.getExchangeExecutionId());
|
executionFond.getExchangeExecutionId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -265,6 +294,52 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
if (Arrays.asList(Side.SELL.getKey(), "S", "SELL").contains((executionFond.getSide())))
|
if (Arrays.asList(Side.SELL.getKey(), "S", "SELL").contains((executionFond.getSide())))
|
||||||
quantity = quantity.negate();
|
quantity = quantity.negate();
|
||||||
ksRepTradesReport.setDepoLiability(quantity);
|
ksRepTradesReport.setDepoLiability(quantity);
|
||||||
|
} else if (execution instanceof ExecutionCurrency executionCurrency) {
|
||||||
|
Company company = null;
|
||||||
|
BigDecimal settlementAmount = executionCurrency.getSettlementAmount() != null ? executionCurrency.getSettlementAmount() : BigDecimal.ZERO;
|
||||||
|
if (Arrays.asList(Side.BUY.getKey(), "B", "BUY").contains(executionCurrency.getSide())) {
|
||||||
|
settlementAmount = settlementAmount.negate();
|
||||||
|
ksRepTradesReport.setCashLiability(settlementAmount);
|
||||||
|
if (executionCurrency.getCompanyId() != null)
|
||||||
|
company = companyImdg.getSingleObjectByID(executionCurrency.getCompanyId());
|
||||||
|
} else if (Arrays.asList(Side.SELL.getKey(), "S", "SELL").contains(executionCurrency.getSide())) {
|
||||||
|
ksRepTradesReport.setCashLiability(settlementAmount);
|
||||||
|
if (executionCurrency.getCounterPartyId() != null)
|
||||||
|
company = companyImdg.getSingleObjectByID(executionCurrency.getCounterPartyId());
|
||||||
|
} else {
|
||||||
|
log.warn("Execution id={} has unknown side={}", executionCurrency.getId(), executionCurrency.getSide());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
executionCurrency.getSecuritySymbol() == null || company == null ||
|
||||||
|
company.getTradingCode() == null || executionCurrency.getExchangeExecutionId() == null
|
||||||
|
) {
|
||||||
|
log.warn("Can't format agreement number for execution id={}, security_symbol={}, " +
|
||||||
|
"executionFond.trading_date={}, company.trading_code={}, " +
|
||||||
|
"executionFond.exchange_execution_id={}",
|
||||||
|
execution.getId(),
|
||||||
|
executionCurrency.getSecuritySymbol(),
|
||||||
|
ddMMyyyyFormatter.format(executionCurrency.getTradingDate()),
|
||||||
|
company != null ? company.getTradingCode() : null,
|
||||||
|
executionCurrency.getExchangeExecutionId());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
CurrencyPairSecurity currencyPairSecurity = currencyPairSecurityImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"securityId", executionCurrency.getSecurityId()
|
||||||
|
));
|
||||||
|
if (currencyPairSecurity != null) {
|
||||||
|
CurrencyPairDictionary currencyPairDictionary = currencyPairDictionaryImdg.getSingleObjectByFieldValues(
|
||||||
|
Map.of(
|
||||||
|
"baseCurrency", currencyPairSecurity.getCurrencyPairId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (currencyPairDictionary != null) {
|
||||||
|
ksRepTradesReport.setLotCurrency(currencyPairDictionary.getBaseCurrency());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ksRepTradesReport.setDepoLiability(BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
ksRepTradesReport.setDepoAccount(depoAccount);
|
ksRepTradesReport.setDepoAccount(depoAccount);
|
||||||
|
|
||||||
|
|
@ -284,17 +359,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
} else if (coverage == CoverageStatus.ALWD) {
|
} else if (coverage == CoverageStatus.ALWD) {
|
||||||
status = "1";
|
status = "1";
|
||||||
} else if (coverage == CoverageStatus.DEND) {
|
} else if (coverage == CoverageStatus.DEND) {
|
||||||
if (execution instanceof ExecutionDeposit) {
|
if (execution instanceof ExecutionDeposit || execution instanceof ExecutionCurrency) {
|
||||||
status = "2";
|
status = "2";
|
||||||
} else {
|
} else if (execution instanceof ExecutionFond) {
|
||||||
Long groupId = execution.getExchangeExecutionId();
|
Long groupId = execution.getExchangeExecutionId();
|
||||||
status = statusForExecution.get(new ExecutionKey(groupId, execution.getSessionId()));
|
status = statusForExecution.get(new ExecutionKey(groupId, execution.getSessionId()));
|
||||||
if (status == null) {
|
if (status == null) {
|
||||||
log.warn(
|
log.warn(
|
||||||
"Broken execution (can't define status). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
"Broken execution (can't define status). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
||||||
groupId,
|
groupId,
|
||||||
execution.getCompanyId(),
|
execution.getCompanyId(),
|
||||||
execution.getId()
|
execution.getId()
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -306,8 +381,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
rows.add(ksRepTradesReport);
|
rows.add(ksRepTradesReport);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.error("Can't create report row for execution_%s (id = %d), skipped".formatted(
|
log.error("Can't create report row for execution_%s (id = %d), skipped".formatted(
|
||||||
execution instanceof ExecutionFond ? "fond" : "deposit",
|
execution instanceof ExecutionFond ? "fond" : "deposit",
|
||||||
execution.getId()), e
|
execution.getId()), e
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package ru.spcex.platform.enumeration;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public enum OperationType {
|
||||||
|
ENR("ENR"),
|
||||||
|
WD("WD"),
|
||||||
|
UNKNOWN("?");
|
||||||
|
|
||||||
|
private final String code;
|
||||||
|
|
||||||
|
OperationType(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OperationType forBigDecimal(BigDecimal input) {
|
||||||
|
if (input == null) return UNKNOWN;
|
||||||
|
int compareResult = input.compareTo(BigDecimal.ZERO);
|
||||||
|
if (compareResult > 0) return ENR;
|
||||||
|
else if (compareResult < 0) return WD;
|
||||||
|
else return UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue