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") @CsvBindByName(column = "OPEN_QUANTITY")
@CsvBindByPosition(position = 7) @CsvBindByPosition(position = 7)
@CsvNumber(value = "#0.00", writeFormat = "#0.00") @CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal openQuantity; private BigDecimal openQuantity;
@CsvBindByName(column = "CHANGE_QUANTITY") @CsvBindByName(column = "CHANGE_QUANTITY")
@CsvBindByPosition(position = 8) @CsvBindByPosition(position = 8)
@CsvNumber(value = "#0.00", writeFormat = "#0.00") @CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal changeQuantity; private BigDecimal changeQuantity;
@CsvBindByName(column = "ADD_WITHDRAW_DEPO") @CsvBindByName(column = "ADD_WITHDRAW_DEPO")
@CsvBindByPosition(position = 9) @CsvBindByPosition(position = 9)
@CsvNumber(value = "#0.00", writeFormat = "#0.00") @CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal addWithdrawDepo; private BigDecimal addWithdrawDepo;
@CsvBindByName(column = "CLOSE_QUANTITY") @CsvBindByName(column = "CLOSE_QUANTITY")
@CsvBindByPosition(position = 10) @CsvBindByPosition(position = 10)
@CsvNumber(value = "#0.00", writeFormat = "#0.00") @CsvNumber(value = "#0", writeFormat = "#0")
private BigDecimal closeQuantity; private BigDecimal closeQuantity;
@CsvBindByName(column = "REMARKS") @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.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects;
public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> { public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> {
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
@ -78,10 +80,15 @@ public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilde
executedDealReport.setTradeTime(executionFond.getExchangeExecutionTime()); executedDealReport.setTradeTime(executionFond.getExchangeExecutionTime());
executedDealReport.setSettleDate(executionFond.getSettlementDate()); executedDealReport.setSettleDate(executionFond.getSettlementDate());
executedDealReport.setSettleCode(executionFond.getSettlementCode()); executedDealReport.setSettleCode(executionFond.getSettlementCode());
executedDealReport.setQuantity(executionFond.getQuantity()); BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
executedDealReport.setValue(executionFond.getSettlementAmount()); BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO;
if (executionFond.getSettlementAmount() != null && executionFond.getQuantity() != null) executedDealReport.setValue(settlementAmount);
executedDealReport.setPrice(executionFond.getSettlementAmount().divide(executionFond.getQuantity(), RoundingMode.HALF_UP)); executedDealReport.setQuantity(quantity);
if (Objects.equals(quantity, BigDecimal.ZERO)) {
executedDealReport.setPrice(settlementAmount);
} else {
executedDealReport.setPrice(settlementAmount.divide(quantity, RoundingMode.HALF_UP));
}
lines.add(executedDealReport); lines.add(executedDealReport);
} catch (Throwable e) { } catch (Throwable e) {

View file

@ -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.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.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
@ -196,7 +197,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
ksCommissionTradesReport.setAgreementNumber(agreementNumber); ksCommissionTradesReport.setAgreementNumber(agreementNumber);
ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix); ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix);
ksCommissionTradesReport.setAgreementDate(registry.getTradingDate()); ksCommissionTradesReport.setAgreementDate(registry.getTradingDate());
ksCommissionTradesReport.setSum(registry.getBalance()); ksCommissionTradesReport.setSum(registry.getBalance() != null ? registry.getBalance() : BigDecimal.ZERO);
ksCommissionTradesReport.setRepaymDate(registry.getRefundDate()); ksCommissionTradesReport.setRepaymDate(registry.getRefundDate());
ksCommissionTradesReport.setExecStatus(registry.getRegistryStatus()); 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.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
@ -98,8 +99,12 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
ksRepCashRegistersReport.setTkr(registry.getTradingClearingRegistry()); ksRepCashRegistersReport.setTkr(registry.getTradingClearingRegistry());
ksRepCashRegistersReport.setDate(nowDate); ksRepCashRegistersReport.setDate(nowDate);
ksRepCashRegistersReport.setRegisterCode(registry.getRegistryCode()); 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(""); ksRepCashRegistersReport.setRemarks("");
RegistryCodeDictionary registryCodeDictionary = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode())); 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.greatEqual("updated", instantNow.truncatedTo(ChronoUnit.DAYS)),
pb.less("updated", instantNow.plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)), pb.less("updated", instantNow.plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)),
pb.equals("inOutSDfType", InOutSDfType.type10.getKey()), 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); Collection<Statement> statements = statementImdg.getCollectionObjectsByPredicate(finalPredicate);

View file

@ -97,8 +97,12 @@ public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParam
ksRepDepoRegistersReport.setDate(nowDate); ksRepDepoRegistersReport.setDate(nowDate);
ksRepDepoRegistersReport.setSecurityId(registry.getSecuritySymbol()); ksRepDepoRegistersReport.setSecurityId(registry.getSecuritySymbol());
ksRepDepoRegistersReport.setRegisterCode(registry.getRegistryCode()); 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); ksRepDepoRegistersReport.setRemarks(null);
RegistryCodeDictionary registryCodeDescription = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode())); 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.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.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -124,17 +125,20 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
} }
if (execution instanceof ExecutionDeposit executionDeposit) { 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) { } else if (execution instanceof ExecutionFond executionFond) {
ksRepTradesReport.setCashLiability(executionFond.getSettlementAmount()); BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
ksRepTradesReport.setDepoLiability(executionFond.getQuantity()); BigDecimal quantity = executionFond.getQuantity() != null ? executionFond.getQuantity() : BigDecimal.ZERO;
ksRepTradesReport.setCashLiability(settlementAmount);
ksRepTradesReport.setDepoLiability(quantity);
} }
ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId()); ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId());
ksRepTradesReport.setClassCode(execution.getMarket()); ksRepTradesReport.setClassCode(execution.getMarket());
ksRepTradesReport.setTradeDate(execution.getExchangeExecutionTime()); ksRepTradesReport.setTradeDate(execution.getExchangeExecutionTime());
String status = ""; String status = "0";
if (execution.getCoverageStatus() != null) { if (execution.getCoverageStatus() != null) {
String coverageStatus = execution.getCoverageStatus().toUpperCase(); String coverageStatus = execution.getCoverageStatus().toUpperCase();
CoverageStatus coverage = IEnumKey.getEnumByKey(CoverageStatus.class, coverageStatus); 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" "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