This commit is contained in:
akulikov 2023-09-05 14:18:43 +03:00
parent 8840d89bb0
commit 0eadc2f7e3
8 changed files with 41 additions and 19 deletions

View file

@ -40,22 +40,22 @@ public class KSRepDepoRegistersReport {
@CsvBindByName(column = "OPEN_QUANTITY")
@CsvBindByPosition(position = 7)
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
@CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal openQuantity;
@CsvBindByName(column = "CHANGE_QUANTITY")
@CsvBindByPosition(position = 8)
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
@CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal changeQuantity;
@CsvBindByName(column = "ADD_WITHDRAW_DEPO")
@CsvBindByPosition(position = 9)
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
@CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal addWithdrawDepo;
@CsvBindByName(column = "CLOSE_QUANTITY")
@CsvBindByPosition(position = 10)
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
@CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal closeQuantity;
@CsvBindByName(column = "REMARKS")

View file

@ -12,11 +12,13 @@ import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> {
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
@ -78,10 +80,15 @@ public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilde
executedDealReport.setTradeTime(executionFond.getExchangeExecutionTime());
executedDealReport.setSettleDate(executionFond.getSettlementDate());
executedDealReport.setSettleCode(executionFond.getSettlementCode());
executedDealReport.setQuantity(executionFond.getQuantity());
executedDealReport.setValue(executionFond.getSettlementAmount());
if (executionFond.getSettlementAmount() != null && executionFond.getQuantity() != null)
executedDealReport.setPrice(executionFond.getSettlementAmount().divide(executionFond.getQuantity(), RoundingMode.HALF_UP));
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO;
executedDealReport.setValue(settlementAmount);
executedDealReport.setQuantity(quantity);
if (Objects.equals(quantity, BigDecimal.ZERO)) {
executedDealReport.setPrice(settlementAmount);
} else {
executedDealReport.setPrice(settlementAmount.divide(quantity, RoundingMode.HALF_UP));
}
lines.add(executedDealReport);
} catch (Throwable e) {

View file

@ -17,6 +17,7 @@ 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.format.DateTimeFormatter;
import java.util.ArrayList;
@ -196,7 +197,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
ksCommissionTradesReport.setAgreementNumber(agreementNumber);
ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix);
ksCommissionTradesReport.setAgreementDate(registry.getTradingDate());
ksCommissionTradesReport.setSum(registry.getBalance());
ksCommissionTradesReport.setSum(registry.getBalance() != null ? registry.getBalance() : BigDecimal.ZERO);
ksCommissionTradesReport.setRepaymDate(registry.getRefundDate());
ksCommissionTradesReport.setExecStatus(registry.getRegistryStatus());

View file

@ -15,6 +15,7 @@ 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 java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
@ -98,8 +99,12 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
ksRepCashRegistersReport.setTkr(registry.getTradingClearingRegistry());
ksRepCashRegistersReport.setDate(nowDate);
ksRepCashRegistersReport.setRegisterCode(registry.getRegistryCode());
ksRepCashRegistersReport.setOpenBalance(registry.getOpenBalance());
ksRepCashRegistersReport.setCloseBalance(registry.getCloseBalance());
BigDecimal openBalance = registry.getOpenBalance() != null ? registry.getOpenBalance() : BigDecimal.ZERO;
BigDecimal closeBalance = registry.getCloseBalance() != null ? registry.getCloseBalance() : BigDecimal.ZERO;
ksRepCashRegistersReport.setOpenBalance(openBalance);
ksRepCashRegistersReport.setCloseBalance(closeBalance);
ksRepCashRegistersReport.setRemarks("");
RegistryCodeDictionary registryCodeDictionary = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode()));

View file

@ -84,7 +84,8 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
pb.greatEqual("updated", instantNow.truncatedTo(ChronoUnit.DAYS)),
pb.less("updated", instantNow.plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)),
pb.equals("inOutSDfType", InOutSDfType.type10.getKey()),
pb.equals("operationStatus", OperationStatus.Executed.getKey())
pb.equals("operationStatus", OperationStatus.Executed.getKey()),
pb.notNull("amount")
);
Collection<Statement> statements = statementImdg.getCollectionObjectsByPredicate(finalPredicate);

View file

@ -97,8 +97,12 @@ public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParam
ksRepDepoRegistersReport.setDate(nowDate);
ksRepDepoRegistersReport.setSecurityId(registry.getSecuritySymbol());
ksRepDepoRegistersReport.setRegisterCode(registry.getRegistryCode());
ksRepDepoRegistersReport.setOpenQuantity(registry.getOpenBalance());
ksRepDepoRegistersReport.setCloseQuantity(registry.getCloseBalance());
BigDecimal openBalance = registry.getOpenBalance() != null ? registry.getOpenBalance() : BigDecimal.ZERO;
BigDecimal closeBalance = registry.getCloseBalance() != null ? registry.getCloseBalance() : BigDecimal.ZERO;
ksRepDepoRegistersReport.setOpenQuantity(openBalance);
ksRepDepoRegistersReport.setCloseQuantity(closeBalance);
ksRepDepoRegistersReport.setRemarks(null);
RegistryCodeDictionary registryCodeDescription = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode()));

View file

@ -20,6 +20,7 @@ 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.util.ArrayList;
import java.util.Collection;
@ -124,17 +125,20 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
}
if (execution instanceof ExecutionDeposit executionDeposit) {
ksRepTradesReport.setCashLiability(executionDeposit.getFirstLegAmount());
BigDecimal firstLegAmount = executionDeposit.getFirstLegAmount() != null ? executionDeposit.getFirstLegAmount() : BigDecimal.ZERO;
ksRepTradesReport.setCashLiability(firstLegAmount);
} else if (execution instanceof ExecutionFond executionFond) {
ksRepTradesReport.setCashLiability(executionFond.getSettlementAmount());
ksRepTradesReport.setDepoLiability(executionFond.getQuantity());
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO;
ksRepTradesReport.setCashLiability(settlementAmount);
ksRepTradesReport.setDepoLiability(quantity);
}
ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId());
ksRepTradesReport.setClassCode(execution.getMarket());
ksRepTradesReport.setTradeDate(execution.getExchangeExecutionTime());
String status = "";
String status = "0";
if (execution.getCoverageStatus() != null) {
String coverageStatus = execution.getCoverageStatus().toUpperCase();
CoverageStatus coverage = IEnumKey.getEnumByKey(CoverageStatus.class, coverageStatus);

View file

@ -1,2 +1,2 @@
"FIRMID","ACCOUNT","TKR","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS","TRADE_NUM"
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","77.78","66.67","66.67","11.11","",""
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","78","67","67","11","",""

1 FIRMID ACCOUNT TKR DATE SECURITYID REGISTER_CODE REGISTER_NAME OPEN_QUANTITY CHANGE_QUANTITY ADD_WITHDRAW_DEPO CLOSE_QUANTITY REMARKS TRADE_NUM
2 TRADING_CODE ACCOUNT TRADING_CLEARING_REGISTRY 01.08.2023 AS_T AS_T_NAME 77.78 78 66.67 67 66.67 67 11.11 11