http://jira.mfd.msk:8088/browse/CLS-497 some big decimal fixes
This commit is contained in:
parent
8840d89bb0
commit
0eadc2f7e3
8 changed files with 41 additions and 19 deletions
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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","",""
|
||||
|
|
|
|||
|
Loading…
Add table
Reference in a new issue