Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
da63e9c236
11 changed files with 370 additions and 134 deletions
|
|
@ -1,13 +1,12 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
public class KSRepCashNettoReport {
|
||||
@CsvBindByName(column = "FIRMID")
|
||||
|
|
@ -51,6 +50,18 @@ public class KSRepCashNettoReport {
|
|||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal reqValue;
|
||||
|
||||
@CsvBindByName(column = "LOT_CURRENCY")
|
||||
@CsvBindByPosition(position = 9)
|
||||
private String lotCurrency;
|
||||
|
||||
@CsvBindByName(column = "CURRENCY_NETTO")
|
||||
@CsvBindByPosition(position = 10)
|
||||
private BigDecimal currencyNetto;
|
||||
|
||||
@CsvBindByName(column = "TR_EXECDATE")
|
||||
@CsvBindByPosition(position = 11)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate trExecDate;
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
|
|
@ -123,4 +134,28 @@ public class KSRepCashNettoReport {
|
|||
public void setReqValue(BigDecimal reqValue) {
|
||||
this.reqValue = reqValue;
|
||||
}
|
||||
|
||||
public String getLotCurrency() {
|
||||
return lotCurrency;
|
||||
}
|
||||
|
||||
public void setLotCurrency(String lotCurrency) {
|
||||
this.lotCurrency = lotCurrency;
|
||||
}
|
||||
|
||||
public BigDecimal getCurrencyNetto() {
|
||||
return currencyNetto;
|
||||
}
|
||||
|
||||
public void setCurrencyNetto(BigDecimal currencyNetto) {
|
||||
this.currencyNetto = currencyNetto;
|
||||
}
|
||||
|
||||
public LocalDate getTrExecDate() {
|
||||
return trExecDate;
|
||||
}
|
||||
|
||||
public void setTrExecDate(LocalDate trExecDate) {
|
||||
this.trExecDate = trExecDate;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
public class KSRepCashRegisterSumsReport {
|
||||
@CsvBindByName(column = "FIRMID")
|
||||
|
|
@ -45,6 +44,10 @@ public class KSRepCashRegisterSumsReport {
|
|||
@CsvBindByPosition(position = 7)
|
||||
private String tradeNum;
|
||||
|
||||
@CsvBindByName(column = "OPER_TYPE")
|
||||
@CsvBindByPosition(position = 8)
|
||||
private String operType;
|
||||
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
|
|
@ -109,4 +112,12 @@ public class KSRepCashRegisterSumsReport {
|
|||
public void setTradeNum(String tradeNum) {
|
||||
this.tradeNum = tradeNum;
|
||||
}
|
||||
|
||||
public String getOperType() {
|
||||
return operType;
|
||||
}
|
||||
|
||||
public void setOperType(String operType) {
|
||||
this.operType = operType;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class KSRepCashRegistersReport {
|
||||
@CsvBindByName(column = "FIRMID")
|
||||
@CsvBindByPosition(position = 0)
|
||||
|
|
@ -62,6 +61,9 @@ public class KSRepCashRegistersReport {
|
|||
@CsvBindByPosition(position = 11)
|
||||
private String tradeNum;
|
||||
|
||||
@CsvBindByName(column = "CURRENCY")
|
||||
@CsvBindByPosition(position = 12)
|
||||
private String currency;
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
|
|
@ -158,4 +160,12 @@ public class KSRepCashRegistersReport {
|
|||
public void setTradeNum(String tradeNum) {
|
||||
this.tradeNum = tradeNum;
|
||||
}
|
||||
|
||||
public String getCurrency() {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public void setCurrency(String currency) {
|
||||
this.currency = currency;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
public class KSRepDepoRegisterQuantitiesReport {
|
||||
@CsvBindByName(column = "FIRMID")
|
||||
|
|
@ -49,6 +48,10 @@ public class KSRepDepoRegisterQuantitiesReport {
|
|||
@CsvBindByPosition(position = 8)
|
||||
private String tradeNum;
|
||||
|
||||
@CsvBindByName(column = "OPER_TYPE")
|
||||
@CsvBindByPosition(position = 8)
|
||||
private String operType;
|
||||
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
|
|
@ -121,4 +124,13 @@ public class KSRepDepoRegisterQuantitiesReport {
|
|||
public void setTradeNum(String tradeNum) {
|
||||
this.tradeNum = tradeNum;
|
||||
}
|
||||
|
||||
public String getOperType() {
|
||||
return operType;
|
||||
}
|
||||
|
||||
public void setOperType(String operType) {
|
||||
this.operType = operType;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
public class KSRepTradesReport {
|
||||
@CsvBindByName(column = "SESSION_ID")
|
||||
|
|
@ -76,6 +75,10 @@ public class KSRepTradesReport {
|
|||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate repaymDate;
|
||||
|
||||
@CsvBindByName(column = "LOT_CURRENCY")
|
||||
@CsvBindByPosition(position = 15)
|
||||
private String lotCurrency;
|
||||
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
|
|
@ -196,4 +199,12 @@ public class KSRepTradesReport {
|
|||
public void setRepaymDate(LocalDate repaymDate) {
|
||||
this.repaymDate = repaymDate;
|
||||
}
|
||||
|
||||
public String getLotCurrency() {
|
||||
return lotCurrency;
|
||||
}
|
||||
|
||||
public void setLotCurrency(String lotCurrency) {
|
||||
this.lotCurrency = lotCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,32 @@
|
|||
package ru.spcex.clearing.reports.builders.ks;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.security.CurrencyPairSecurity;
|
||||
import ru.clearing.platform.dictionary.CurrencyPairDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.PairRegistryId;
|
||||
import ru.spcex.clearing.reports.builders.SessionIdParam;
|
||||
import ru.spcex.clearing.reports.builders.bean.KSRepCashNettoReport;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||
import ru.spcex.platform.enumeration.ReportKeys;
|
||||
import ru.spcex.platform.enumeration.SessionType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
|
|
@ -17,17 +34,13 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepCashNettoReport> {
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Session> sessionImdg;
|
||||
private final Imdg<Account> accountImdg;
|
||||
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||
|
||||
private List<KSRepCashNettoReport> rows = null;
|
||||
|
||||
|
|
@ -35,6 +48,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.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
|
||||
|
|
@ -110,6 +125,7 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
}
|
||||
|
||||
boolean invalid = false;
|
||||
BigDecimal currencyNetto = null;
|
||||
if (!cmtRegistries.isEmpty() || !lmtRegistries.isEmpty()) {
|
||||
String sourceTradingCode = null;
|
||||
String sourceTkr = null;
|
||||
|
|
@ -134,6 +150,7 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
log.warn("Invalid CM_T registries set, tradingClearingRegistry not equals. Registries was skipped");
|
||||
break;
|
||||
}
|
||||
currencyNetto = currRegistry.getBalance();
|
||||
}
|
||||
for (Registry currRegistry : lmtRegistries) {
|
||||
if (!Objects.equals(sourceTradingCode, currRegistry.getTradingCode())) {
|
||||
|
|
@ -226,6 +243,12 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
ksRepCashNettoReport.setValue(withValue ? value : null);
|
||||
ksRepCashNettoReport.setOblValue(withOblReqValue ? oblValue : null);
|
||||
ksRepCashNettoReport.setReqValue(withOblReqValue ? reqValue : null);
|
||||
ksRepCashNettoReport.setLotCurrency(registry.getSecuritySymbol());
|
||||
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, registry.getSessionType());
|
||||
if (sessionType == SessionType.CURR) {
|
||||
ksRepCashNettoReport.setCurrencyNetto(currencyNetto);
|
||||
ksRepCashNettoReport.setTrExecDate(LocalDate.now());
|
||||
}
|
||||
|
||||
rows.add(ksRepCashNettoReport);
|
||||
} catch (Throwable e) {
|
||||
|
|
|
|||
|
|
@ -1,21 +1,5 @@
|
|||
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.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
|
@ -25,6 +9,27 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
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
|
||||
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;
|
||||
Instant addTime = registry.getUpdated();
|
||||
LocalDate addDate = LocalDate.now();
|
||||
OperationType operType = OperationType.forBigDecimal(registry.getBalance());
|
||||
|
||||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||
ksRepCashRegisterSumsReport.setFirmId(firmId);
|
||||
|
|
@ -139,6 +145,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
|
|||
ksRepCashRegisterSumsReport.setAddSum(addSum);
|
||||
ksRepCashRegisterSumsReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
||||
ksRepCashRegisterSumsReport.setAddDate(addDate);
|
||||
ksRepCashRegisterSumsReport.setOperType(operType.getCode());
|
||||
rows.add(ksRepCashRegisterSumsReport);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
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 ru.clearing.classes.statics.data.account.Account;
|
||||
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.EmptyParams;
|
||||
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.ImdgProvider;
|
||||
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.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
||||
private final Imdg<Registry> registryImdg;
|
||||
|
|
@ -230,6 +241,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
.add(ksRepCashRegistersReport.getChangeBalance())
|
||||
.add(ksRepCashRegistersReport.getAddWithdraw());
|
||||
ksRepCashRegistersReport.setCloseBalance(closeBalance);
|
||||
ksRepCashRegistersReport.setCurrency(registry.getSecuritySymbol());
|
||||
|
||||
rows.add(ksRepCashRegistersReport);
|
||||
} catch (Throwable e) {
|
||||
|
|
|
|||
|
|
@ -1,22 +1,5 @@
|
|||
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.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
|
@ -26,12 +9,38 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
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.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
|
||||
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
||||
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||
|
||||
private List<KSRepDepoRegisterQuantitiesReport> rows = null;
|
||||
|
||||
|
|
@ -39,6 +48,8 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
|||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.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
|
||||
|
|
@ -126,6 +137,7 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
|||
BigDecimal addQuantity = registry.getBalance();
|
||||
Instant addTime = registry.getUpdated();
|
||||
LocalDate addDate = LocalDate.now();
|
||||
OperationType operationType = OperationType.forBigDecimal(registry.getBalance());
|
||||
|
||||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||
ksRepDepoRegisterQuantitiesReport.setFirmId(firmId);
|
||||
|
|
@ -137,6 +149,7 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
|||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(addQuantity);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddTime(LocalTime.ofInstant(addTime, getReportZoneId()));
|
||||
ksRepDepoRegisterQuantitiesReport.setAddDate(addDate);
|
||||
ksRepDepoRegisterQuantitiesReport.setOperType(operationType.getCode());
|
||||
rows.add(ksRepDepoRegisterQuantitiesReport);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,31 +1,46 @@
|
|||
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.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
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
|
||||
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<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<ExecutionCurrency> executionCurrencyImdg;
|
||||
private final Imdg<Session> sessionImdg;
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
private final Imdg<Account> accountImdg;
|
||||
private final Imdg<AccountSymbols> accountSymbolsImdg;
|
||||
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
|
||||
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||
|
||||
private List<KSRepTradesReport> rows = null;
|
||||
|
||||
public KSRepTradesReportBuilder(ImdgProvider imdgProvider) {
|
||||
executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
|
||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||
accountSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class);
|
||||
currencyPairDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, CurrencyPairDictionary.class);
|
||||
currencyPairSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -84,23 +105,32 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
|
||||
ImdgPredicateBuilder pbExecutionDeposit = executionDepositImdg.predicateBuilder();
|
||||
Collection<ExecutionDeposit> executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate(
|
||||
pbExecutionDeposit.or(
|
||||
pbExecutionDeposit.equals("tradingDate", nowDate),
|
||||
pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate)
|
||||
)
|
||||
pbExecutionDeposit.or(
|
||||
pbExecutionDeposit.equals("tradingDate", nowDate),
|
||||
pbExecutionDeposit.greatEqual("firstLegSettlementDate", nowDate)
|
||||
)
|
||||
);
|
||||
log.debug("Found {} ExecutionDeposit by tradingDate={}", executionDeposits.size(), nowDate);
|
||||
ImdgPredicateBuilder pbExecutionFond = executionFondImdg.predicateBuilder();
|
||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pbExecutionFond.or(
|
||||
pbExecutionFond.equals("tradingDate", nowDate),
|
||||
pbExecutionFond.greatEqual("settlementDate", nowDate)
|
||||
)
|
||||
pbExecutionFond.or(
|
||||
pbExecutionFond.equals("tradingDate", nowDate),
|
||||
pbExecutionFond.greatEqual("settlementDate", nowDate)
|
||||
)
|
||||
);
|
||||
log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate);
|
||||
ImdgPredicateBuilder pbExecutionCurrency = executionCurrencyImdg.predicateBuilder();
|
||||
Collection<ExecutionCurrency> executionCurrencies = executionCurrencyImdg.getCollectionObjectsByPredicate(
|
||||
pbExecutionCurrency.or(
|
||||
pbExecutionCurrency.equals("tradingDate", nowDate),
|
||||
pbExecutionCurrency.greatEqual("settlementDate", nowDate)
|
||||
)
|
||||
);
|
||||
log.debug("Found {} ExecutionFond by tradingDate={}", executionFonds.size(), nowDate);
|
||||
List<ExecutionCommon> executions = new ArrayList<>();
|
||||
executions.addAll(executionDeposits);
|
||||
executions.addAll(executionFonds);
|
||||
executions.addAll(executionCurrencies);
|
||||
|
||||
Map<ExecutionKey, String> statusForExecution = new HashMap<>();
|
||||
executions.forEach(execution -> {
|
||||
|
|
@ -116,16 +146,16 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||
String registryPredicateStr = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams._S_T).build();
|
||||
Collection<Registry> registryCollection = registryImdg.getCollectionObjectsByPredicate(
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("groupId", groupId),
|
||||
pbRegistry.equals("companyId", execution.getCompanyId()),
|
||||
pbRegistry.in("registryStatus",
|
||||
RegistryStatus.NACC.getKey(),
|
||||
RegistryStatus.NACK.getKey(),
|
||||
RegistryStatus.FAIL.getKey(),
|
||||
RegistryStatus.UNCV.getKey()),
|
||||
pbRegistry.sql(registryPredicateStr)
|
||||
)
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("groupId", groupId),
|
||||
pbRegistry.equals("companyId", execution.getCompanyId()),
|
||||
pbRegistry.in("registryStatus",
|
||||
RegistryStatus.NACC.getKey(),
|
||||
RegistryStatus.NACK.getKey(),
|
||||
RegistryStatus.FAIL.getKey(),
|
||||
RegistryStatus.UNCV.getKey()),
|
||||
pbRegistry.sql(registryPredicateStr)
|
||||
)
|
||||
);
|
||||
if (registryCollection.isEmpty()) {
|
||||
status = null;
|
||||
|
|
@ -155,8 +185,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
TradingClearingRegistry tkr = tradingClearingRegistryImdg.getSingleObjectByID(execution.getTradingClearingRegistryId());
|
||||
if (tkr == null) {
|
||||
log.info("Execution id = {} was skipped: trading_clearing_registry for id {} not found",
|
||||
execution.getId(),
|
||||
execution.getTradingClearingRegistryId());
|
||||
execution.getId(),
|
||||
execution.getTradingClearingRegistryId());
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -168,8 +198,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
if (moneyAccountFromImdg != null) {
|
||||
if (AccountType.Info.equalsByKey(moneyAccountFromImdg.getAccountType())) {
|
||||
moneyAccountFromImdg = accountImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", 1L,
|
||||
"accountType", AccountType.Anlt.getKey()
|
||||
"companyId", 1L,
|
||||
"accountType", AccountType.Anlt.getKey()
|
||||
));
|
||||
}
|
||||
account = moneyAccountFromImdg.getAccount();
|
||||
|
|
@ -178,7 +208,6 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
ksRepTradesReport.setAccount(account);
|
||||
|
||||
|
||||
|
||||
if (execution.getCompanyId() != null) {
|
||||
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
|
||||
ksRepTradesReport.setFirmId(company != null ? company.getTradingCode() : null);
|
||||
|
|
@ -220,7 +249,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
|
||||
if (tkr.getDepoAccountId() != null) {
|
||||
AccountSymbols accountSymbols = accountSymbolsImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"accountId", tkr.getDepoAccountId()
|
||||
"accountId", tkr.getDepoAccountId()
|
||||
));
|
||||
if (accountSymbols != null) {
|
||||
depoAccount = accountSymbols.getAccountSymbolValue();
|
||||
|
|
@ -232,12 +261,12 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
|
||||
Company company = null;
|
||||
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();
|
||||
ksRepTradesReport.setCashLiability(settlementAmount);
|
||||
if (executionFond.getCompanyId() != null)
|
||||
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);
|
||||
if (executionFond.getCounterPartyId() != null)
|
||||
company = companyImdg.getSingleObjectByID(executionFond.getCounterPartyId());
|
||||
|
|
@ -247,17 +276,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
}
|
||||
|
||||
if (
|
||||
executionFond.getSecuritySymbol() == null || company == null ||
|
||||
executionFond.getSecuritySymbol() == null || company == null ||
|
||||
company.getTradingCode() == null || executionFond.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(),
|
||||
executionFond.getSecuritySymbol(),
|
||||
ddMMyyyyFormatter.format(executionFond.getTradingDate()),
|
||||
company != null ? company.getTradingCode() : null,
|
||||
executionFond.getExchangeExecutionId());
|
||||
"executionFond.trading_date={}, company.trading_code={}, " +
|
||||
"executionFond.exchange_execution_id={}",
|
||||
execution.getId(),
|
||||
executionFond.getSecuritySymbol(),
|
||||
ddMMyyyyFormatter.format(executionFond.getTradingDate()),
|
||||
company != null ? company.getTradingCode() : null,
|
||||
executionFond.getExchangeExecutionId());
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -265,6 +294,52 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
if (Arrays.asList(Side.SELL.getKey(), "S", "SELL").contains((executionFond.getSide())))
|
||||
quantity = quantity.negate();
|
||||
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);
|
||||
|
||||
|
|
@ -284,17 +359,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
} else if (coverage == CoverageStatus.ALWD) {
|
||||
status = "1";
|
||||
} else if (coverage == CoverageStatus.DEND) {
|
||||
if (execution instanceof ExecutionDeposit) {
|
||||
if (execution instanceof ExecutionDeposit || execution instanceof ExecutionCurrency) {
|
||||
status = "2";
|
||||
} else {
|
||||
} else if (execution instanceof ExecutionFond) {
|
||||
Long groupId = execution.getExchangeExecutionId();
|
||||
status = statusForExecution.get(new ExecutionKey(groupId, execution.getSessionId()));
|
||||
if (status == null) {
|
||||
log.warn(
|
||||
"Broken execution (can't define status). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
||||
groupId,
|
||||
execution.getCompanyId(),
|
||||
execution.getId()
|
||||
"Broken execution (can't define status). Registry for groupId = {}, companyId = {} not found. Execution (id = {}) skipped",
|
||||
groupId,
|
||||
execution.getCompanyId(),
|
||||
execution.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -306,8 +381,8 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
rows.add(ksRepTradesReport);
|
||||
} catch (Throwable e) {
|
||||
log.error("Can't create report row for execution_%s (id = %d), skipped".formatted(
|
||||
execution instanceof ExecutionFond ? "fond" : "deposit",
|
||||
execution.getId()), e
|
||||
execution instanceof ExecutionFond ? "fond" : "deposit",
|
||||
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