report-service fixes
This commit is contained in:
parent
e39b71f9cd
commit
41cf940f42
4 changed files with 63 additions and 17 deletions
|
|
@ -63,6 +63,19 @@ public class KSRepCashNettoReport {
|
||||||
@CsvDate(value = "dd.MM.yyyy")
|
@CsvDate(value = "dd.MM.yyyy")
|
||||||
private LocalDate trExecDate;
|
private LocalDate trExecDate;
|
||||||
|
|
||||||
|
|
||||||
|
public KSRepCashNettoReport cloneWithoutValues() {
|
||||||
|
KSRepCashNettoReport result = new KSRepCashNettoReport();
|
||||||
|
result.setFirmId(firmId);
|
||||||
|
result.setSessionId(sessionId);
|
||||||
|
result.setSessionDate(sessionDate);
|
||||||
|
result.setAccount(account);
|
||||||
|
result.setTkr(tkr);
|
||||||
|
result.setDate(date);
|
||||||
|
result.setLotCurrency(lotCurrency);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public String getFirmId() {
|
public String getFirmId() {
|
||||||
return firmId;
|
return firmId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,13 @@ 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.clearing.reports.config.ReportConst;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
import ru.spcex.platform.enumeration.ReportBuilderType;
|
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||||
import ru.spcex.platform.enumeration.ReportKeys;
|
import ru.spcex.platform.enumeration.ReportKeys;
|
||||||
|
import ru.spcex.platform.enumeration.Section;
|
||||||
import ru.spcex.platform.enumeration.SessionType;
|
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;
|
||||||
|
|
@ -151,7 +153,9 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
log.warn("Invalid CM_T registries set, tradingClearingRegistry not equals. Registries was skipped");
|
log.warn("Invalid CM_T registries set, tradingClearingRegistry not equals. Registries was skipped");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
currencyNettoCmt = currencyNettoCmt.add(currRegistry.getBalance());
|
if (currRegistry.getBalance().compareTo(ReportConst.DB_ZERO) != 0) {
|
||||||
|
currencyNettoCmt = currencyNettoCmt.add(currRegistry.getBalance());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (Registry currRegistry : lmtRegistries) {
|
for (Registry currRegistry : lmtRegistries) {
|
||||||
if (!Objects.equals(sourceTradingCode, currRegistry.getTradingCode())) {
|
if (!Objects.equals(sourceTradingCode, currRegistry.getTradingCode())) {
|
||||||
|
|
@ -164,7 +168,9 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
log.warn("Invalid CM_T registries set, tradingClearingRegistry not equals. Registries was skipped");
|
log.warn("Invalid CM_T registries set, tradingClearingRegistry not equals. Registries was skipped");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
currencyNettoLmt = currencyNettoLmt.add(currRegistry.getBalance());
|
if (currRegistry.getBalance().compareTo(ReportConst.DB_ZERO) != 0) {
|
||||||
|
currencyNettoLmt = currencyNettoLmt.add(currRegistry.getBalance());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (invalid) continue;
|
if (invalid) continue;
|
||||||
}
|
}
|
||||||
|
|
@ -200,43 +206,52 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
BigDecimal reqValue = BigDecimal.ZERO;
|
BigDecimal reqValue = BigDecimal.ZERO;
|
||||||
boolean withValue = false;
|
boolean withValue = false;
|
||||||
boolean withOblReqValue = false;
|
boolean withOblReqValue = false;
|
||||||
|
boolean forUnitSession = false;
|
||||||
Set<SessionType> sessionTypeForValue = Set.of(
|
Set<SessionType> sessionTypeForValue = Set.of(
|
||||||
SessionType.IPOT,
|
SessionType.IPOT,
|
||||||
SessionType.TRDT,
|
SessionType.TRDT,
|
||||||
SessionType.LIQU,
|
SessionType.LIQU,
|
||||||
SessionType.IPOB,
|
SessionType.IPOB,
|
||||||
SessionType.IPO0
|
SessionType.IPO0,
|
||||||
|
SessionType.UNIT
|
||||||
);
|
);
|
||||||
Set<SessionType> sessionTypeForOblReqValue = Set.of(
|
Set<SessionType> sessionTypeForOblReqValue = Set.of(
|
||||||
SessionType.FINL,
|
SessionType.FINL,
|
||||||
SessionType.MEDM,
|
SessionType.MEDM,
|
||||||
SessionType.XDEP
|
SessionType.XDEP,
|
||||||
|
SessionType.UNIT
|
||||||
);
|
);
|
||||||
for (Registry cmtRegistry : cmtRegistries) {
|
for (Registry cmtRegistry : cmtRegistries) {
|
||||||
if (cmtRegistry.getBalance() != null) {
|
if (cmtRegistry.getBalance() != null) {
|
||||||
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, cmtRegistry.getSessionType());
|
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, cmtRegistry.getSessionType());
|
||||||
if (sessionType == null) continue;
|
Section section = IEnumKey.getEnumByKey(Section.class, cmtRegistry.getSection());
|
||||||
|
if (sessionType == null || section == null) continue;
|
||||||
if (sessionTypeForValue.contains(sessionType)) {
|
if (sessionTypeForValue.contains(sessionType)) {
|
||||||
cmtBalance = cmtBalance.add(cmtRegistry.getBalance());
|
cmtBalance = cmtBalance.add(cmtRegistry.getBalance());
|
||||||
withValue = true;
|
if (sessionType == SessionType.UNIT && section == Section.CURR) forUnitSession = true;
|
||||||
|
else withValue = true;
|
||||||
}
|
}
|
||||||
if (sessionTypeForOblReqValue.contains(sessionType)) {
|
if (sessionTypeForOblReqValue.contains(sessionType)) {
|
||||||
reqValue = reqValue.add(cmtRegistry.getBalance());
|
reqValue = reqValue.add(cmtRegistry.getBalance());
|
||||||
withOblReqValue = true;
|
if (sessionType == SessionType.UNIT && section == Section.CURR) forUnitSession = true;
|
||||||
|
else withOblReqValue = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Registry lmtRegistry : lmtRegistries) {
|
for (Registry lmtRegistry : lmtRegistries) {
|
||||||
if (lmtRegistry.getBalance() != null) {
|
if (lmtRegistry.getBalance() != null) {
|
||||||
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, lmtRegistry.getSessionType());
|
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, lmtRegistry.getSessionType());
|
||||||
|
Section section = IEnumKey.getEnumByKey(Section.class, lmtRegistry.getSection());
|
||||||
if (sessionType == null) continue;
|
if (sessionType == null) continue;
|
||||||
if (sessionTypeForValue.contains(sessionType)) {
|
if (sessionTypeForValue.contains(sessionType)) {
|
||||||
lmtBalance = lmtBalance.add(lmtRegistry.getBalance());
|
lmtBalance = lmtBalance.add(lmtRegistry.getBalance());
|
||||||
withValue = true;
|
if (section == Section.CURR) forUnitSession = true;
|
||||||
|
else withValue = true;
|
||||||
}
|
}
|
||||||
if (sessionTypeForOblReqValue.contains(sessionType)) {
|
if (sessionTypeForOblReqValue.contains(sessionType)) {
|
||||||
oblValue = oblValue.add(lmtRegistry.getBalance());
|
oblValue = oblValue.add(lmtRegistry.getBalance());
|
||||||
withOblReqValue = true;
|
if (section == Section.CURR) forUnitSession = true;
|
||||||
|
else withOblReqValue = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -246,13 +261,23 @@ 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);
|
||||||
ksRepCashNettoReport.setLotCurrency(registry.getSecuritySymbol());
|
ksRepCashNettoReport.setLotCurrency(registry.getSecuritySymbol());
|
||||||
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, registry.getSessionType());
|
if (withValue) {
|
||||||
if (sessionType == SessionType.CURR) {
|
KSRepCashNettoReport withoutValueClone = ksRepCashNettoReport.cloneWithoutValues();
|
||||||
ksRepCashNettoReport.setCurrencyNetto(currencyNettoCmt.subtract(currencyNettoLmt));
|
withoutValueClone.setValue(value);
|
||||||
ksRepCashNettoReport.setTrExecDate(LocalDate.now());
|
rows.add(withoutValueClone);
|
||||||
|
}
|
||||||
|
if (withOblReqValue) {
|
||||||
|
KSRepCashNettoReport withoutValueClone = ksRepCashNettoReport.cloneWithoutValues();
|
||||||
|
withoutValueClone.setOblValue(oblValue);
|
||||||
|
withoutValueClone.setReqValue(reqValue);
|
||||||
|
rows.add(withoutValueClone);
|
||||||
|
}
|
||||||
|
if (forUnitSession) {
|
||||||
|
KSRepCashNettoReport withoutValueClone = ksRepCashNettoReport.cloneWithoutValues();
|
||||||
|
withoutValueClone.setCurrencyNetto(currencyNettoCmt.subtract(currencyNettoLmt));
|
||||||
|
withoutValueClone.setTrExecDate(LocalDate.now());
|
||||||
|
rows.add(withoutValueClone);
|
||||||
}
|
}
|
||||||
|
|
||||||
rows.add(ksRepCashNettoReport);
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.error(
|
log.error(
|
||||||
"Can't create report row for registries (id = [%s]), row was skipped".formatted(
|
"Can't create report row for registries (id = [%s]), row was skipped".formatted(
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package ru.spcex.clearing.reports.config;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.BigInteger;
|
||||||
|
|
||||||
|
public class ReportConst {
|
||||||
|
public static BigDecimal DB_ZERO = new BigDecimal(BigInteger.valueOf(0), 18);
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
"FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","TKR","VALUE","DATE","OBL_VALUE","REQ_VALUE","LOT_CURRENCY","CURRENCY_NETTO","TR_EXECDATE"
|
"FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","TKR","VALUE","DATE","OBL_VALUE","REQ_VALUE","LOT_CURRENCY","CURRENCY_NETTO","TR_EXECDATE"
|
||||||
"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","TKR","22.22","03.06.2024",,,,,
|
"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","TKR","-22.22","21.06.2024",,,,,
|
||||||
"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT_FROM_ACCOUNT","TKR",,"03.06.2024","22.22","44.44",,,
|
"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT_FROM_ACCOUNT","TKR",,"21.06.2024","22.22","0.00",,,
|
||||||
|
|
|
||||||
|
Loading…
Add table
Reference in a new issue