Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
c8725ae10f
105 changed files with 3855 additions and 1614 deletions
|
|
@ -0,0 +1,191 @@
|
|||
package ru.clearing.classes.statics.data.execution;
|
||||
|
||||
import ru.clearing.classes.objects.BusinessObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public abstract class ExecutionCommon extends BusinessObject {
|
||||
protected Long exchangeExecutionId;
|
||||
protected Instant exchangeExecutionTime;
|
||||
protected LocalDate tradingDate;
|
||||
protected Long tradingClearingRegistryId;
|
||||
protected String market;
|
||||
protected BigDecimal price;
|
||||
protected BigDecimal lots;
|
||||
protected BigDecimal quantity;
|
||||
protected BigDecimal interestAmount;
|
||||
protected String side;
|
||||
protected String settlementCurrency;
|
||||
protected Long companyId;
|
||||
protected Long duration;
|
||||
protected String securityFullName;
|
||||
protected String securitySymbol;
|
||||
protected Long securityId;
|
||||
protected Long counterPartyId;
|
||||
protected String coverageStatus;
|
||||
protected Long sessionId;
|
||||
protected LocalDate clearingDate;
|
||||
|
||||
public LocalDate getClearingDate() {
|
||||
return clearingDate;
|
||||
}
|
||||
|
||||
public void setClearingDate(LocalDate value) {
|
||||
this.clearingDate = value;
|
||||
}
|
||||
|
||||
public Long getExchangeExecutionId() {
|
||||
return exchangeExecutionId;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionId(Long value) {
|
||||
this.exchangeExecutionId = value;
|
||||
}
|
||||
|
||||
public String getSide() {
|
||||
return side;
|
||||
}
|
||||
|
||||
public void setSide(String value) {
|
||||
this.side = value;
|
||||
}
|
||||
|
||||
public String getMarket() {
|
||||
return market;
|
||||
}
|
||||
|
||||
public void setMarket(String value) {
|
||||
this.market = value;
|
||||
}
|
||||
|
||||
public LocalDate getTradingDate() {
|
||||
return tradingDate;
|
||||
}
|
||||
|
||||
public void setTradingDate(LocalDate value) {
|
||||
this.tradingDate = value;
|
||||
}
|
||||
|
||||
public String getSecuritySymbol() {
|
||||
return securitySymbol;
|
||||
}
|
||||
|
||||
public void setSecuritySymbol(String value) {
|
||||
this.securitySymbol = value;
|
||||
}
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
||||
public void setSecurityId(Long value) {
|
||||
this.securityId = value;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestAmount() {
|
||||
return interestAmount;
|
||||
}
|
||||
|
||||
public void setInterestAmount(BigDecimal value) {
|
||||
this.interestAmount = value;
|
||||
}
|
||||
|
||||
public BigDecimal getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(BigDecimal value) {
|
||||
this.price = value;
|
||||
}
|
||||
|
||||
public BigDecimal getLots() {
|
||||
return lots;
|
||||
}
|
||||
|
||||
public void setLots(BigDecimal value) {
|
||||
this.lots = value;
|
||||
}
|
||||
|
||||
public BigDecimal getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(BigDecimal value) {
|
||||
this.quantity = value;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionTime() {
|
||||
return exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionTime(Instant value) {
|
||||
this.exchangeExecutionTime = value;
|
||||
}
|
||||
|
||||
public Long getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Long value) {
|
||||
this.duration = value;
|
||||
}
|
||||
|
||||
public Long getTradingClearingRegistryId() {
|
||||
return tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryId(Long value) {
|
||||
this.tradingClearingRegistryId = value;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long value) {
|
||||
this.companyId = value;
|
||||
}
|
||||
|
||||
public Long getCounterPartyId() {
|
||||
return counterPartyId;
|
||||
}
|
||||
|
||||
public void setCounterPartyId(Long value) {
|
||||
this.counterPartyId = value;
|
||||
}
|
||||
|
||||
public String getSecurityFullName() {
|
||||
return securityFullName;
|
||||
}
|
||||
|
||||
public void setSecurityFullName(String value) {
|
||||
this.securityFullName = value;
|
||||
}
|
||||
|
||||
public String getSettlementCurrency() {
|
||||
return settlementCurrency;
|
||||
}
|
||||
|
||||
public void setSettlementCurrency(String value) {
|
||||
this.settlementCurrency = value;
|
||||
}
|
||||
|
||||
public String getCoverageStatus() {
|
||||
return coverageStatus;
|
||||
}
|
||||
|
||||
public void setCoverageStatus(String value) {
|
||||
this.coverageStatus = value;
|
||||
}
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(Long value) {
|
||||
this.sessionId = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,104 +1,20 @@
|
|||
package ru.clearing.classes.statics.data.execution;
|
||||
|
||||
import ru.clearing.classes.objects.BusinessObject;
|
||||
import ru.spcex.platform.classes.base.interfaces.IExecution;
|
||||
import ru.clearing.classes.ConstSerializable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class ExecutionDeposit extends BusinessObject implements IExecution {
|
||||
private Long exchangeExecutionId;
|
||||
private Instant exchangeExecutionTime;
|
||||
private LocalDate tradingDate;
|
||||
private Long tradingClearingRegistryId;
|
||||
private String market;
|
||||
private BigDecimal price;
|
||||
private BigDecimal lots;
|
||||
private BigDecimal quantity;
|
||||
public class ExecutionDeposit extends ExecutionCommon {
|
||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||
|
||||
private BigDecimal firstLegAmount;
|
||||
private BigDecimal secondLegAmount;
|
||||
private BigDecimal interestAmount;
|
||||
private String side;
|
||||
private String settlementCurrency;
|
||||
private Long companyId;
|
||||
private Long duration;
|
||||
private LocalDate firstLegSettlementDate;
|
||||
private LocalDate secondLegSettlementDate;
|
||||
private String firstLegSettlementCode;
|
||||
private String secondLegSettlementCode;
|
||||
private String securityFullName;
|
||||
private String securitySymbol;
|
||||
private Long securityId;
|
||||
private String contract;
|
||||
private Long counterPartyId;
|
||||
private String coverageStatus;
|
||||
private Long sessionId;
|
||||
private LocalDate clearingDate;
|
||||
|
||||
public Long getExchangeExecutionId() {
|
||||
return exchangeExecutionId;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionId(Long exchangeExecutionId) {
|
||||
this.exchangeExecutionId = exchangeExecutionId;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionTime() {
|
||||
return exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionTime(Instant exchangeExecutionTime) {
|
||||
this.exchangeExecutionTime = exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public LocalDate getTradingDate() {
|
||||
return tradingDate;
|
||||
}
|
||||
|
||||
public void setTradingDate(LocalDate tradingDate) {
|
||||
this.tradingDate = tradingDate;
|
||||
}
|
||||
|
||||
public Long getTradingClearingRegistryId() {
|
||||
return tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
|
||||
this.tradingClearingRegistryId = tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public String getMarket() {
|
||||
return market;
|
||||
}
|
||||
|
||||
public void setMarket(String market) {
|
||||
this.market = market;
|
||||
}
|
||||
|
||||
public BigDecimal getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(BigDecimal price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
public BigDecimal getLots() {
|
||||
return lots;
|
||||
}
|
||||
|
||||
public void setLots(BigDecimal lots) {
|
||||
this.lots = lots;
|
||||
}
|
||||
|
||||
public BigDecimal getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(BigDecimal quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public BigDecimal getFirstLegAmount() {
|
||||
return firstLegAmount;
|
||||
|
|
@ -116,46 +32,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
|||
this.secondLegAmount = secondLegAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestAmount() {
|
||||
return interestAmount;
|
||||
}
|
||||
|
||||
public void setInterestAmount(BigDecimal interestAmount) {
|
||||
this.interestAmount = interestAmount;
|
||||
}
|
||||
|
||||
public String getSide() {
|
||||
return side;
|
||||
}
|
||||
|
||||
public void setSide(String side) {
|
||||
this.side = side;
|
||||
}
|
||||
|
||||
public String getSettlementCurrency() {
|
||||
return settlementCurrency;
|
||||
}
|
||||
|
||||
public void setSettlementCurrency(String settlementCurrency) {
|
||||
this.settlementCurrency = settlementCurrency;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Long duration) {
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public LocalDate getFirstLegSettlementDate() {
|
||||
return firstLegSettlementDate;
|
||||
}
|
||||
|
|
@ -188,30 +64,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
|||
this.secondLegSettlementCode = secondLegSettlementCode;
|
||||
}
|
||||
|
||||
public String getSecurityFullName() {
|
||||
return securityFullName;
|
||||
}
|
||||
|
||||
public void setSecurityFullName(String securityFullName) {
|
||||
this.securityFullName = securityFullName;
|
||||
}
|
||||
|
||||
public String getSecuritySymbol() {
|
||||
return securitySymbol;
|
||||
}
|
||||
|
||||
public void setSecuritySymbol(String securitySymbol) {
|
||||
this.securitySymbol = securitySymbol;
|
||||
}
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
||||
public void setSecurityId(Long securityId) {
|
||||
this.securityId = securityId;
|
||||
}
|
||||
|
||||
public String getContract() {
|
||||
return contract;
|
||||
}
|
||||
|
|
@ -219,36 +71,4 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
|||
public void setContract(String contract) {
|
||||
this.contract = contract;
|
||||
}
|
||||
|
||||
public Long getCounterPartyId() {
|
||||
return counterPartyId;
|
||||
}
|
||||
|
||||
public void setCounterPartyId(Long counterPartyId) {
|
||||
this.counterPartyId = counterPartyId;
|
||||
}
|
||||
|
||||
public String getCoverageStatus() {
|
||||
return coverageStatus;
|
||||
}
|
||||
|
||||
public void setCoverageStatus(String coverageStatus) {
|
||||
this.coverageStatus = coverageStatus;
|
||||
}
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(Long sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
public LocalDate getClearingDate() {
|
||||
return clearingDate;
|
||||
}
|
||||
|
||||
public void setClearingDate(LocalDate clearingDate) {
|
||||
this.clearingDate = clearingDate;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package ru.clearing.classes.statics.data.execution;
|
|||
|
||||
import ru.clearing.classes.ConstSerializable;
|
||||
import ru.clearing.classes.objects.BusinessObject;
|
||||
import ru.spcex.platform.classes.base.interfaces.IExecution;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
|
|
@ -13,252 +12,70 @@ import java.time.LocalDate;
|
|||
* <p>
|
||||
* DB table: EXECUTION_FOND
|
||||
**/
|
||||
public class ExecutionFond extends BusinessObject implements IExecution {
|
||||
public class ExecutionFond extends ExecutionCommon {
|
||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||
|
||||
private LocalDate clearingDate;
|
||||
private Long exchangeExecutionId;
|
||||
private String side;
|
||||
private String market;
|
||||
private LocalDate tradingDate;
|
||||
private String securitySymbol;
|
||||
private Long securityId;
|
||||
private BigDecimal interestAmount;
|
||||
private Long exchangeOrderId;
|
||||
private BigDecimal price;
|
||||
private BigDecimal settlementAmount;
|
||||
private BigDecimal lots;
|
||||
private BigDecimal quantity;
|
||||
private Instant exchangeExecutionTime;
|
||||
private Long duration;
|
||||
private Long tradingClearingRegistryId;
|
||||
private String comment;
|
||||
private Long clientCodeId;
|
||||
private String settlementCode;
|
||||
private Long companyId;
|
||||
private Long counterPartyId;
|
||||
private String securityFullName;
|
||||
private LocalDate settlementDate;
|
||||
private String settlementCurrency;
|
||||
private Instant exchangeExecutionMicroseconds;
|
||||
private String coverageStatus;
|
||||
private Long sessionId;
|
||||
|
||||
|
||||
public LocalDate getClearingDate() {
|
||||
return clearingDate;
|
||||
}
|
||||
|
||||
public void setClearingDate(LocalDate value) {
|
||||
this.clearingDate = value;
|
||||
}
|
||||
|
||||
public Long getExchangeExecutionId() {
|
||||
return exchangeExecutionId;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionId(Long value) {
|
||||
this.exchangeExecutionId = value;
|
||||
}
|
||||
|
||||
public String getSide() {
|
||||
return side;
|
||||
}
|
||||
|
||||
public void setSide(String value) {
|
||||
this.side = value;
|
||||
}
|
||||
|
||||
public String getMarket() {
|
||||
return market;
|
||||
}
|
||||
|
||||
public void setMarket(String value) {
|
||||
this.market = value;
|
||||
}
|
||||
|
||||
public LocalDate getTradingDate() {
|
||||
return tradingDate;
|
||||
}
|
||||
|
||||
public void setTradingDate(LocalDate value) {
|
||||
this.tradingDate = value;
|
||||
}
|
||||
|
||||
public String getSecuritySymbol() {
|
||||
return securitySymbol;
|
||||
}
|
||||
|
||||
public void setSecuritySymbol(String value) {
|
||||
this.securitySymbol = value;
|
||||
}
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
||||
public void setSecurityId(Long value) {
|
||||
this.securityId = value;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestAmount() {
|
||||
return interestAmount;
|
||||
}
|
||||
|
||||
public void setInterestAmount(BigDecimal value) {
|
||||
this.interestAmount = value;
|
||||
}
|
||||
|
||||
public Long getExchangeOrderId() {
|
||||
return exchangeOrderId;
|
||||
}
|
||||
|
||||
public void setExchangeOrderId(Long value) {
|
||||
this.exchangeOrderId = value;
|
||||
}
|
||||
|
||||
public BigDecimal getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(BigDecimal value) {
|
||||
this.price = value;
|
||||
public void setExchangeOrderId(Long exchangeOrderId) {
|
||||
this.exchangeOrderId = exchangeOrderId;
|
||||
}
|
||||
|
||||
public BigDecimal getSettlementAmount() {
|
||||
return settlementAmount;
|
||||
}
|
||||
|
||||
public void setSettlementAmount(BigDecimal value) {
|
||||
this.settlementAmount = value;
|
||||
}
|
||||
|
||||
public BigDecimal getLots() {
|
||||
return lots;
|
||||
}
|
||||
|
||||
public void setLots(BigDecimal value) {
|
||||
this.lots = value;
|
||||
}
|
||||
|
||||
public BigDecimal getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(BigDecimal value) {
|
||||
this.quantity = value;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionTime() {
|
||||
return exchangeExecutionTime;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionTime(Instant value) {
|
||||
this.exchangeExecutionTime = value;
|
||||
}
|
||||
|
||||
public Long getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Long value) {
|
||||
this.duration = value;
|
||||
}
|
||||
|
||||
public Long getTradingClearingRegistryId() {
|
||||
return tradingClearingRegistryId;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryId(Long value) {
|
||||
this.tradingClearingRegistryId = value;
|
||||
public void setSettlementAmount(BigDecimal settlementAmount) {
|
||||
this.settlementAmount = settlementAmount;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String value) {
|
||||
this.comment = value;
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public Long getClientCodeId() {
|
||||
return clientCodeId;
|
||||
}
|
||||
|
||||
public void setClientCodeId(Long value) {
|
||||
this.clientCodeId = value;
|
||||
public void setClientCodeId(Long clientCodeId) {
|
||||
this.clientCodeId = clientCodeId;
|
||||
}
|
||||
|
||||
public String getSettlementCode() {
|
||||
return settlementCode;
|
||||
}
|
||||
|
||||
public void setSettlementCode(String value) {
|
||||
this.settlementCode = value;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long value) {
|
||||
this.companyId = value;
|
||||
}
|
||||
|
||||
public Long getCounterPartyId() {
|
||||
return counterPartyId;
|
||||
}
|
||||
|
||||
public void setCounterPartyId(Long value) {
|
||||
this.counterPartyId = value;
|
||||
}
|
||||
|
||||
public String getSecurityFullName() {
|
||||
return securityFullName;
|
||||
}
|
||||
|
||||
public void setSecurityFullName(String value) {
|
||||
this.securityFullName = value;
|
||||
public void setSettlementCode(String settlementCode) {
|
||||
this.settlementCode = settlementCode;
|
||||
}
|
||||
|
||||
public LocalDate getSettlementDate() {
|
||||
return settlementDate;
|
||||
}
|
||||
|
||||
public void setSettlementDate(LocalDate value) {
|
||||
this.settlementDate = value;
|
||||
}
|
||||
|
||||
public String getSettlementCurrency() {
|
||||
return settlementCurrency;
|
||||
}
|
||||
|
||||
public void setSettlementCurrency(String value) {
|
||||
this.settlementCurrency = value;
|
||||
public void setSettlementDate(LocalDate settlementDate) {
|
||||
this.settlementDate = settlementDate;
|
||||
}
|
||||
|
||||
public Instant getExchangeExecutionMicroseconds() {
|
||||
return exchangeExecutionMicroseconds;
|
||||
}
|
||||
|
||||
public void setExchangeExecutionMicroseconds(Instant value) {
|
||||
this.exchangeExecutionMicroseconds = value;
|
||||
public void setExchangeExecutionMicroseconds(Instant exchangeExecutionMicroseconds) {
|
||||
this.exchangeExecutionMicroseconds = exchangeExecutionMicroseconds;
|
||||
}
|
||||
|
||||
public String getCoverageStatus() {
|
||||
return coverageStatus;
|
||||
}
|
||||
|
||||
public void setCoverageStatus(String value) {
|
||||
this.coverageStatus = value;
|
||||
}
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(Long value) {
|
||||
this.sessionId = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -40,17 +40,27 @@
|
|||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- XML -->
|
||||
<dependency>
|
||||
<groupId>com.thoughtworks.xstream</groupId>
|
||||
<artifactId>xstream</artifactId>
|
||||
<version>1.4.19</version>
|
||||
</dependency>
|
||||
|
||||
<!-- DOC -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>5.1.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- CSV -->
|
||||
<dependency>
|
||||
<groupId>com.opencsv</groupId>
|
||||
<artifactId>opencsv</artifactId>
|
||||
<version>5.5.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- IMDG clearing system -->
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
|
|
@ -83,6 +93,24 @@
|
|||
<artifactId>mockito-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>security-util</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>clearing-validation</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>test-clearing</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
package ru.spcex.clearing.reports;
|
||||
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
import com.thoughtworks.xstream.io.naming.NoNameCoder;
|
||||
import com.thoughtworks.xstream.io.xml.XppDriver;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -10,11 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import ru.spcex.clearing.reports.config.ReportCmdParser;
|
||||
import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.services.QCommandExecutor;
|
||||
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
|
||||
import ru.spcex.clearing.reports.services.collector.ReportINACCNT_Collector;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@SpringBootApplication
|
||||
public class ReportsServiceApplication {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
package ru.spcex.clearing.reports.config;
|
||||
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import ru.spcex.clearing.reports.errors.ReportError;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.IMDGMessageResolver;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.platform.enumeration.UserRole;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
|
||||
@Configuration
|
||||
public class BeanConfiguration {
|
||||
@Bean
|
||||
public IMessageResolver messageResolver(ImdgProvider imdgProvider) {
|
||||
return new IMDGMessageResolver(imdgProvider);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public UserRoleVerification userRoleVerification(ImdgProvider imdgProvider, IMessageResolver messageResolver) {
|
||||
return new UserRoleVerification(imdgProvider, messageResolver, UserRole.Admin, ReportError.UserVerifyDenial);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public RequestHelper requestHelper(IMessageResolver messageResolver) {
|
||||
return new RequestHelper(messageResolver, ReportError.InternalError);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package ru.spcex.clearing.reports.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.spcex.clearing.reports.reports.*;
|
||||
import ru.spcex.clearing.reports.reports.bp.*;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
public class ReportBuildersConfig {
|
||||
@Bean("reportBuildersWithoutParams")
|
||||
public Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, List.of(new SummaryLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, List.of(new SummaryMoneyChangeReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdParam")
|
||||
public Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, List.of(new OperationalLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, List.of(new OperationalMoneyChangeReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.EXECUTED_DEAL_REPORT,
|
||||
List.of(
|
||||
new ExecutedDealReportBuilder_INFTYPE_1(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_2(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_3(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_4(imdgProvider)
|
||||
)
|
||||
);
|
||||
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, List.of(new UnfulfilledDealReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdListParam")
|
||||
public Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, List.of(new PeriodLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithPeriodParams")
|
||||
public Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, List.of(new PeriodMoneyChangeReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
|||
public class ReportsServiceSettings {
|
||||
private HazelcastClientParams hazelcast;
|
||||
private KafkaConsumerSettings kafkaConsumer;
|
||||
// private KafkaProducerSettings kafkaProducer;
|
||||
private KafkaProducerSettings kafkaProducer;
|
||||
private String reportModuleOut;
|
||||
|
||||
public HazelcastClientParams getHazelcast() {
|
||||
|
|
@ -37,13 +37,13 @@ public class ReportsServiceSettings {
|
|||
this.kafkaConsumer = kafkaConsumer;
|
||||
}
|
||||
|
||||
// public KafkaProducerSettings getKafkaProducer() {
|
||||
// return kafkaProducer;
|
||||
// }
|
||||
//
|
||||
// public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
|
||||
// this.kafkaProducer = kafkaProducer;
|
||||
// }
|
||||
public KafkaProducerSettings getKafkaProducer() {
|
||||
return kafkaProducer;
|
||||
}
|
||||
|
||||
public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
|
||||
this.kafkaProducer = kafkaProducer;
|
||||
}
|
||||
|
||||
public String getReportModuleOut() {
|
||||
return reportModuleOut;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,149 @@
|
|||
package ru.spcex.clearing.reports.config.validation;
|
||||
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.reports.errors.ReportError;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule;
|
||||
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Configuration
|
||||
public class ValidationConfig {
|
||||
|
||||
@Bean("imdgForValidation")
|
||||
public Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation(ImdgProvider imdgProvider) {
|
||||
final Map<String, Imdg<? extends SpcexObjectBase>> imdg = new HashMap<>();
|
||||
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdg.put(s, imdgProvider.getImdg(s, aClass));
|
||||
|
||||
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
return imdg;
|
||||
}
|
||||
|
||||
@Bean("validationHelper")
|
||||
public ValidationHelper validationHelper(IMessageResolver messageResolver) {
|
||||
return new ValidationHelper(messageResolver);
|
||||
}
|
||||
|
||||
@Bean("reportRequestValidator")
|
||||
public Function<ReportRequest, IValidator> reportRequestValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return reportRequest -> {
|
||||
ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequest);
|
||||
return new ValidatorImpl<>(context,
|
||||
EnumPresentRule.instance("reportId",
|
||||
ReportRequest::getReportId,
|
||||
new IEnumKey[]{
|
||||
ReportType.SUMMARY_LIABILITIES_CLAIMS,
|
||||
ReportType.SUMMARY_MONEY_CHANGE
|
||||
},
|
||||
ReportError.WrongFieldValue,
|
||||
ReportError.RequiredFieldEmpty)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("reportRequestWithSessionIdValidator")
|
||||
public Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return reportRequestWithSessionId -> {
|
||||
ImdgValidationContext<ReportRequestWithSessionId> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequestWithSessionId);
|
||||
return new ValidatorImpl<>(context,
|
||||
EnumPresentRule.instance("reportId",
|
||||
ReportRequestWithSessionId::getReportId,
|
||||
new IEnumKey[]{
|
||||
ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
|
||||
ReportType.OPERATIONAL_MONEY_CHANGE,
|
||||
ReportType.EXECUTED_DEAL_REPORT,
|
||||
ReportType.UNFULFILLED_DEAL_REPORT
|
||||
},
|
||||
ReportError.WrongFieldValue,
|
||||
ReportError.RequiredFieldEmpty),
|
||||
FieldRequiredRule.instance("sessionId",
|
||||
ReportRequestWithSessionId::getSessionId,
|
||||
ReportError.RequiredFieldEmpty,
|
||||
sessionId -> sessionId > 0 ? null : ReportError.WrongFieldValue)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("reportRequestWithSessionIdListValidator")
|
||||
public Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return reportRequestWithSessionIdList -> {
|
||||
ImdgValidationContext<ReportRequestWithSessionIdList> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequestWithSessionIdList);
|
||||
return new ValidatorImpl<>(context,
|
||||
EnumPresentRule.instance("reportId",
|
||||
ReportRequestWithSessionIdList::getReportId,
|
||||
new IEnumKey[]{
|
||||
ReportType.PERIOD_LIABILITIES_CLAIMS
|
||||
},
|
||||
ReportError.WrongFieldValue,
|
||||
ReportError.RequiredFieldEmpty),
|
||||
FieldRequiredRule.instance("sessionIdList",
|
||||
ReportRequestWithSessionIdList::getSessionIdList,
|
||||
ReportError.RequiredFieldEmpty,
|
||||
sessionIdList -> {
|
||||
if (sessionIdList == null || sessionIdList.isEmpty())
|
||||
return ReportError.WrongFieldValue;
|
||||
return null;
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("reportRequestWithPeriodValidator")
|
||||
public Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return reportRequestWithPeriod -> {
|
||||
ImdgValidationContext<ReportRequestWithPeriod> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(reportRequestWithPeriod);
|
||||
return new ValidatorImpl<>(context,
|
||||
EnumPresentRule.instance("reportId",
|
||||
ReportRequestWithPeriod::getReportId,
|
||||
new IEnumKey[]{
|
||||
ReportType.PERIOD_MONEY_CHANGE,
|
||||
},
|
||||
ReportError.WrongFieldValue,
|
||||
ReportError.RequiredFieldEmpty),
|
||||
EndDtAfterStartDtRule.instance("endDate", "startDate",
|
||||
ReportRequestWithPeriod::getEndDate,
|
||||
ReportRequestWithPeriod::getStartDate,
|
||||
ReportError.RequiredFieldEmpty,
|
||||
ReportError.WrongFieldValue)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package ru.spcex.clearing.reports.errors;
|
||||
|
||||
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||
|
||||
public enum ReportError implements IErrorEnumId {
|
||||
InternalError(4000L),
|
||||
UserVerifyDenial(4001L),
|
||||
RequiredFieldEmpty(4002L),
|
||||
WrongFieldValue(4004L),
|
||||
;
|
||||
|
||||
private final Long id;
|
||||
|
||||
ReportError(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ import java.time.format.DateTimeFormatter;
|
|||
/**
|
||||
* Общая шапка (атрибуты) для всех отчетов
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class AbstractReport {
|
||||
protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
||||
protected static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,114 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
|
||||
import com.opencsv.CSVWriterBuilder;
|
||||
import com.opencsv.ICSVWriter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Класс для построения отчетов в формате CSV
|
||||
*
|
||||
* @param <P> тип параметров, используемых при построении отчета
|
||||
*/
|
||||
public abstract class CSVReportBuilder<P> {
|
||||
protected static final Logger log = LoggerFactory.getLogger(CSVReportBuilder.class);
|
||||
|
||||
protected DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
||||
protected DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
||||
protected DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
||||
|
||||
/**
|
||||
* Метод получения заголовков для CSV отчета
|
||||
*/
|
||||
protected abstract String[] getHeaders();
|
||||
|
||||
/**
|
||||
* Возвращает списком значения CSV отчета. Каждый элемент списка - строка, элемент массива внутри списка - столбец.
|
||||
*/
|
||||
protected abstract List<String[]> getLines();
|
||||
|
||||
/**
|
||||
* Название отчета, используется для формирования имени отчета (без указания формата)
|
||||
*
|
||||
* @param params Параметры формирования отчета
|
||||
*/
|
||||
protected abstract String getReportFilename(P params);
|
||||
|
||||
/**
|
||||
* Тип отчета по {@link ReportType}
|
||||
*/
|
||||
public abstract ReportType getReportType();
|
||||
|
||||
/**
|
||||
* Формирование отчета на основе параметров
|
||||
*
|
||||
* @param params Параметры формирования отчета
|
||||
*/
|
||||
protected abstract void collect(P params);
|
||||
|
||||
/**
|
||||
* Создает CSVWriter. Если требуется изменить параметры выходного CSV файла, этот метод следует переопределить.
|
||||
*
|
||||
* @param file Файл отчета
|
||||
* @return Созданный CSVWriter
|
||||
*
|
||||
* todo check it
|
||||
*/
|
||||
protected ICSVWriter createCsvWriter(File file) throws IOException {
|
||||
Writer writer = new FileWriter(file);
|
||||
CSVWriterBuilder csvWriterBuilder = new CSVWriterBuilder(writer)
|
||||
.withLineEnd("\n")
|
||||
.withSeparator(',')
|
||||
.withQuoteChar('\"');
|
||||
return csvWriterBuilder.build();
|
||||
}
|
||||
|
||||
public File createReport(P params, File outFolder) {
|
||||
assert outFolder != null && outFolder.isDirectory();
|
||||
|
||||
File reportFile = new File(outFolder, normalizeFilenameForOS(getReportFilename(params) + ".csv"));
|
||||
|
||||
collect(params);
|
||||
String[] headers = getHeaders();
|
||||
List<String[]> lines = getLines();
|
||||
|
||||
assert headers != null;
|
||||
assert lines != null;
|
||||
|
||||
try (ICSVWriter csvWriter = createCsvWriter(reportFile)) {
|
||||
csvWriter.writeNext(headers, false);
|
||||
csvWriter.writeAll(lines, true);
|
||||
} catch (IOException e) {
|
||||
log.error("Can't create report", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return reportFile;
|
||||
}
|
||||
|
||||
protected String normalizeFilenameForOS(String filename) {
|
||||
if (System.getProperty("os.name").toLowerCase().contains("windows"))
|
||||
return filename.replace(":", "_");
|
||||
return filename;
|
||||
}
|
||||
|
||||
public void setDateFormatter(DateTimeFormatter dateFormatter) {
|
||||
this.dateFormatter = dateFormatter;
|
||||
}
|
||||
|
||||
public void setDateTimeFormatter(DateTimeFormatter dateTimeFormatter) {
|
||||
this.dateTimeFormatter = dateTimeFormatter;
|
||||
}
|
||||
|
||||
public void setTimeFormatter(DateTimeFormatter timeFormatter) {
|
||||
this.timeFormatter = timeFormatter;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
|
||||
/**
|
||||
* Класс для формирования отчета без параметров
|
||||
*/
|
||||
public class EmptyParams {
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* Параметры для формирования отчета на период
|
||||
*/
|
||||
public class PeriodParams {
|
||||
private LocalDate startDate;
|
||||
private LocalDate endDate;
|
||||
|
||||
public LocalDate getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
public void setStartDate(LocalDate startDate) {
|
||||
this.startDate = startDate;
|
||||
}
|
||||
|
||||
public LocalDate getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
public void setEndDate(LocalDate endDate) {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|||
/**
|
||||
* Идентификаторы отчётов
|
||||
*/
|
||||
@Deprecated
|
||||
public enum ReportId implements IEnumKey {
|
||||
PA_B("REPPA.B"), PA_IV("REPPA.IV"),
|
||||
|
||||
|
|
@ -22,8 +23,18 @@ public enum ReportId implements IEnumKey {
|
|||
|
||||
BR_0420312_P1("REPBR.0420312_р1-1"), BR_0420312_P2("REPBR.0420312_р1-2"), BR_0420312_P3("REPBR.0420312_р1-3"), BR_0420312_P4("REPBR.0420312_р1-4"),
|
||||
BR_0420312_P5("REPBR.0420312_р1-5"), BR_0420312_P6("REPBR.0420312_р1-6"), BR_0420312_P7("REPBR.0420312_р1-7"), BR_0420312_P8("REPBR.0420312_р3-1"),
|
||||
BR_0420312_P9("REPBR.0420312_р3-2"), BR_0420312_P10("REPBR.0420312_р3-3");
|
||||
BR_0420312_P9("REPBR.0420312_р3-2"), BR_0420312_P10("REPBR.0420312_р3-3"),
|
||||
|
||||
OPERATIONAL_LIABILITIES_CLAIMS("operational_liabilities_claims"),
|
||||
OPERATIONAL_MONEY_CHANGE("operational_money_change"),
|
||||
SUMMARY_LIABILITIES_CLAIMS("summary_liabilities_claims"),
|
||||
SUMMARY_L_MONEY_CHANGE("summary_lmoney_change"),
|
||||
PERIOD_LIABILITIES_CLAIMS("period_liabilities_claims"),
|
||||
PERIOD_MONEY_CHANGE("period_money_change"),
|
||||
EXECUTED_DEAL_REPORT("executed_deal_report"),
|
||||
UNFULFILLED_DEAL_REPORT("unfulfilled_deal_report"),
|
||||
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Deprecated
|
||||
public abstract class ReportWithClearingStatus extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("clearingStatus")
|
||||
|
|
|
|||
|
|
@ -2,24 +2,23 @@ package ru.spcex.clearing.reports.reports;
|
|||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* Шапка для отчётов, содержащих startDate и endDate
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class ReportWithPeriod extends AbstractReport {
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("startDate")
|
||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
protected LocalDate startDate;
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("endDate")
|
||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
protected LocalDate endDate;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Параметры для формирования отчета по списку SessionId
|
||||
*/
|
||||
public class SessionIdListParams {
|
||||
private List<Long> sessionIdList;
|
||||
|
||||
public List<Long> getSessionIdList() {
|
||||
return sessionIdList;
|
||||
}
|
||||
|
||||
public void setSessionIdList(List<Long> sessionIdList) {
|
||||
this.sessionIdList = sessionIdList;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
|
||||
/**
|
||||
* Параметры для формирования отчета по SessionId
|
||||
*/
|
||||
public class SessionIdParam {
|
||||
private Long sessionId;
|
||||
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSessionId(Long sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class ExecutedDealReportBuilderCommon<T> extends CSVReportBuilder<T> {
|
||||
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
protected final Imdg<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
|
||||
private final String[] headers = {
|
||||
"id", "securityId", "tradeNo", "tradeDate", "tradeTime",
|
||||
"settleDate", "settleCode", "price", "quanity", "value"
|
||||
};
|
||||
private List<String[]> lines = null;
|
||||
|
||||
public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) {
|
||||
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String[]> getLines() {
|
||||
return lines;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.EXECUTED_DEAL_REPORT;
|
||||
}
|
||||
|
||||
protected abstract Collection<ExecutionFond> getExecutionFondsForReport(T params);
|
||||
|
||||
@Override
|
||||
protected void collect(T params) {
|
||||
Collection<ExecutionFond> executionFonds = getExecutionFondsForReport(params);
|
||||
|
||||
lines = new ArrayList<>(executionFonds.size());
|
||||
for (ExecutionFond executionFond : executionFonds) {
|
||||
Company company = companyImdg.getSingleObjectByID(executionFond.getCompanyId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
STrades sTrade = sTradesImdg.getSingleObjectByFieldValues(
|
||||
Map.of(
|
||||
"tradeNum", executionFond.getExchangeExecutionId(),
|
||||
"operation", executionFond.getSide()
|
||||
)
|
||||
);
|
||||
|
||||
String id = String.valueOf(executionFond.getId());
|
||||
String securityId = String.valueOf(executionFond.getSecurityId());
|
||||
String tradeNo = String.valueOf(executionFond.getExchangeExecutionId());
|
||||
String tradeDate = dateFormatter.format(executionFond.getTradingDate());
|
||||
String tradeTime = dateFormatter.format(LocalDate.ofInstant(executionFond.getCreated(), ZoneId.systemDefault()));
|
||||
String settleDate = dateFormatter.format(executionFond.getSettlementDate());
|
||||
String settleCode = sTrade != null ? sTrade.getSettleCode() : "";
|
||||
String quantity = String.valueOf(executionFond.getQuantity());
|
||||
String value = String.valueOf(executionFond.getSettlementAmount());
|
||||
String price = String.valueOf(executionFond.getSettlementAmount().divide(executionFond.getQuantity(), RoundingMode.HALF_UP));
|
||||
|
||||
int valueIdx = 0;
|
||||
String[] line = new String[getHeaders().length];
|
||||
line[valueIdx++] = id;
|
||||
line[valueIdx++] = securityId;
|
||||
line[valueIdx++] = tradeNo;
|
||||
line[valueIdx++] = tradeDate;
|
||||
line[valueIdx++] = tradeTime;
|
||||
line[valueIdx++] = settleDate;
|
||||
line[valueIdx++] = settleCode;
|
||||
line[valueIdx++] = price;
|
||||
line[valueIdx++] = quantity;
|
||||
line[valueIdx++] = value;
|
||||
lines.add(line);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_1_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.less("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_2_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.equals("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_3_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(pb.greater("settlementDate", LocalDate.now()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.Allowed;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_4_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("coverageStatus", Allowed.DENIED.getKey()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,257 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
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.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
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.reports.CSVReportBuilder;
|
||||
import ru.spcex.platform.enumeration.Allowed;
|
||||
import ru.spcex.platform.enumeration.Market;
|
||||
import ru.spcex.platform.enumeration.Side;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
// todo check typo
|
||||
public abstract class LiabilitiesClaimsReportBuilder<P> extends CSVReportBuilder<P> {
|
||||
protected final Imdg<ExecutionFond> executionFondImdg;
|
||||
protected final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
protected final Imdg<Company> companyImdg;
|
||||
protected final Imdg<Registry> registryImdg;
|
||||
protected final Imdg<Listing> listingImdg;
|
||||
protected final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
protected final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
|
||||
protected final String[] headers = {
|
||||
"id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "session_id",
|
||||
"clearing_date", "clearing_time", "trdAccId", "account", "depo_account", "currency", "tr_id", "securityId",
|
||||
"tr_buySell", "tr_date", "tr_execDate", "exec_status", "repaym_date", "tr_price", "nominal", "lot_value",
|
||||
"tr_lot", "tr_quantity", "tr_value", "tr_accruedint", "accruedint", "tr_clrComm", "tr_exhComm", "cash_liability",
|
||||
"depo_liability", "cash_netto", "depo_netto"
|
||||
};
|
||||
protected List<String[]> lines = null;
|
||||
|
||||
public LiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) {
|
||||
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
this.fixedIncomeSecurityImdg = imdgProvider.getImdg(
|
||||
IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class
|
||||
);
|
||||
this.tradingClearingRegistryImdg = imdgProvider.getImdg(
|
||||
IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String[]> getLines() {
|
||||
return lines;
|
||||
}
|
||||
|
||||
protected abstract Collection<ExecutionFond> getExecutionFondsForReport(P params);
|
||||
|
||||
protected abstract Collection<ExecutionDeposit> getExecutionDepositsForReport(P params);
|
||||
|
||||
@Override
|
||||
protected void collect(P params) {
|
||||
Collection<ExecutionFond> executionFonds = getExecutionFondsForReport(params);
|
||||
Collection<ExecutionDeposit> executionDeposits = getExecutionDepositsForReport(params);
|
||||
|
||||
List<ExecutionCommon> executions = new ArrayList<>(executionFonds.size() + executionDeposits.size());
|
||||
executions.addAll(executionFonds);
|
||||
executions.addAll(executionDeposits);
|
||||
|
||||
Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L);
|
||||
String clearingHouse = clearingHouseCompany.getFullName();
|
||||
|
||||
LocalDate nowDate = LocalDate.now();
|
||||
LocalTime nowTime = LocalTime.now();
|
||||
|
||||
lines = new ArrayList<>(executions.size());
|
||||
for (ExecutionCommon execution : executions) {
|
||||
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
|
||||
Registry registry = registryImdg.getSingleObjectByFieldValues(Map.of("companyId", execution.getCompanyId()));
|
||||
Collection<Registry> registriesForSessionId = registryImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("sessionId", execution.getSessionId())
|
||||
);
|
||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", execution.getSecurityId()));
|
||||
FixedIncomeSecurity fixedIncomeSecurity = fixedIncomeSecurityImdg.getSingleObjectByFieldValues(
|
||||
Map.of("securityId", execution.getSecurityId())
|
||||
);
|
||||
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(
|
||||
execution.getTradingClearingRegistryId()
|
||||
);
|
||||
|
||||
String id = String.valueOf(execution.getId());
|
||||
String docDate = dateFormatter.format(nowDate);
|
||||
String docTime = timeFormatter.format(nowTime);
|
||||
String docName = "Отчет об обязательствах/требованиях Участника клиринга";
|
||||
String docType = "KS_FIRMID_LIABILITIES";
|
||||
String firmId = String.valueOf(execution.getCompanyId());
|
||||
String firName = company.getFullName();
|
||||
String sessionId = String.valueOf(execution.getSessionId());
|
||||
String clearingDate = dateFormatter.format(execution.getClearingDate());
|
||||
String clearingTime = dateFormatter.format(execution.getClearingDate());
|
||||
String trdAccId = registry.getTradingClearingRegistry();
|
||||
String account = String.valueOf(tradingClearingRegistry.getMoneyAccountId());
|
||||
String depoAccount = String.valueOf(tradingClearingRegistry.getDepoAccountId());
|
||||
String currency = execution.getSettlementCurrency();
|
||||
String trId = String.valueOf(execution.getExchangeExecutionId());
|
||||
String securityId = String.valueOf(execution.getSecurityId());
|
||||
|
||||
String trBuySell = "";
|
||||
if (Side.BUY.equalsByKey(execution.getSide()))
|
||||
trBuySell = "B";
|
||||
else if (Side.SELL.equalsByKey(execution.getSide()))
|
||||
trBuySell = "S";
|
||||
String trDate = dateFormatter.format(execution.getTradingDate());
|
||||
|
||||
String trExecDate = "";
|
||||
String execStatus = "";
|
||||
String repaymDate = "";
|
||||
String trPrice = "";
|
||||
String nominal = "";
|
||||
String trQuantity = "";
|
||||
String trValue = "";
|
||||
String trAccruedInt = "";
|
||||
String accruedInt = "";
|
||||
String cashLiability = "";
|
||||
String depoLiability = "";
|
||||
if (execution instanceof ExecutionDeposit executionDeposit) {
|
||||
trExecDate = dateFormatter.format(executionDeposit.getSecondLegSettlementDate());
|
||||
if (Market.mkrs.equalsByKey(execution.getMarket())) {
|
||||
|
||||
String coverageStatus = executionDeposit.getCoverageStatus();
|
||||
if (Allowed.ALLOWED.equalsByKey(coverageStatus)) execStatus = "Y";
|
||||
else if (Allowed.DENIED.equalsByKey(coverageStatus)) execStatus = "N";
|
||||
else execStatus = "W";
|
||||
|
||||
repaymDate = dateFormatter.format(executionDeposit.getSecondLegSettlementDate());
|
||||
trPrice = String.valueOf(executionDeposit.getPrice());
|
||||
trValue = String.valueOf(executionDeposit.getFirstLegAmount());
|
||||
cashLiability = String.valueOf(executionDeposit.getFirstLegAmount());
|
||||
}
|
||||
} else if (execution instanceof ExecutionFond executionFond) {
|
||||
trExecDate = dateFormatter.format(executionFond.getSettlementDate());
|
||||
if (Market.fond.equalsByKey(execution.getMarket())) {
|
||||
trPrice = String.valueOf(
|
||||
executionFond.getSettlementAmount().divide(executionFond.getQuantity(), RoundingMode.HALF_UP)
|
||||
);
|
||||
trQuantity = String.valueOf(executionFond.getQuantity());
|
||||
nominal = String.valueOf(fixedIncomeSecurity.getNominalValue());
|
||||
trValue = String.valueOf(executionFond.getSettlementAmount());
|
||||
trAccruedInt = String.valueOf(fixedIncomeSecurity.getCoupon());
|
||||
accruedInt = String.valueOf(
|
||||
fixedIncomeSecurity.getCoupon().divide(executionFond.getQuantity(), RoundingMode.HALF_UP)
|
||||
);
|
||||
cashLiability = String.valueOf(executionFond.getSettlementAmount());
|
||||
depoLiability = String.valueOf(executionFond.getQuantity());
|
||||
}
|
||||
}
|
||||
|
||||
String lotValue = String.valueOf(listing.getLotSize());
|
||||
String trLot = String.valueOf(execution.getLots());
|
||||
String trClrComm = "";
|
||||
String trExhComm = "";
|
||||
|
||||
Registry tm_tRegistry = null;
|
||||
Registry om_tRegistry = null;
|
||||
Registry ts_tRegistry = null;
|
||||
Registry os_tRegistry = null;
|
||||
for (Registry currRegistry : registriesForSessionId) {
|
||||
String registryCode = currRegistry.getRegistryCode();
|
||||
if (registryCode.endsWith("T")) {
|
||||
if (registryCode.startsWith("TM")) {
|
||||
if (tm_tRegistry != null && tm_tRegistry.getUpdated().isAfter(currRegistry.getUpdated())) continue;
|
||||
tm_tRegistry = currRegistry;
|
||||
}
|
||||
if (registryCode.startsWith("OM")) {
|
||||
if (om_tRegistry != null && om_tRegistry.getUpdated().isAfter(currRegistry.getUpdated())) continue;
|
||||
om_tRegistry = currRegistry;
|
||||
}
|
||||
if (registryCode.startsWith("TS")) {
|
||||
if (ts_tRegistry != null && ts_tRegistry.getUpdated().isAfter(currRegistry.getUpdated())) continue;
|
||||
ts_tRegistry = currRegistry;
|
||||
}
|
||||
if (registryCode.startsWith("OS")) {
|
||||
if (os_tRegistry != null && os_tRegistry.getUpdated().isAfter(currRegistry.getUpdated())) continue;
|
||||
os_tRegistry = currRegistry;
|
||||
}
|
||||
}
|
||||
}
|
||||
String cashNetto = "";
|
||||
if (tm_tRegistry != null && om_tRegistry != null) {
|
||||
cashNetto = String.valueOf(tm_tRegistry.getBalance().subtract(om_tRegistry.getBalance()));
|
||||
}
|
||||
|
||||
String depoNetto = "";
|
||||
if (ts_tRegistry != null && os_tRegistry != null) {
|
||||
depoNetto = String.valueOf(ts_tRegistry.getBalance().subtract(os_tRegistry.getBalance()));
|
||||
}
|
||||
|
||||
|
||||
int valueIdx = 0;
|
||||
String[] line = new String[getHeaders().length];
|
||||
line[valueIdx++] = id;
|
||||
line[valueIdx++] = docDate;
|
||||
line[valueIdx++] = docTime;
|
||||
line[valueIdx++] = docName;
|
||||
line[valueIdx++] = docType;
|
||||
line[valueIdx++] = clearingHouse;
|
||||
line[valueIdx++] = firmId;
|
||||
line[valueIdx++] = firName;
|
||||
line[valueIdx++] = sessionId;
|
||||
line[valueIdx++] = clearingDate;
|
||||
line[valueIdx++] = clearingTime;
|
||||
line[valueIdx++] = trdAccId;
|
||||
line[valueIdx++] = account;
|
||||
line[valueIdx++] = depoAccount;
|
||||
line[valueIdx++] = currency;
|
||||
line[valueIdx++] = trId;
|
||||
line[valueIdx++] = securityId;
|
||||
line[valueIdx++] = trBuySell;
|
||||
line[valueIdx++] = trDate;
|
||||
line[valueIdx++] = trExecDate;
|
||||
line[valueIdx++] = execStatus;
|
||||
line[valueIdx++] = repaymDate;
|
||||
line[valueIdx++] = trPrice;
|
||||
line[valueIdx++] = nominal;
|
||||
line[valueIdx++] = lotValue;
|
||||
line[valueIdx++] = trLot;
|
||||
line[valueIdx++] = trQuantity;
|
||||
line[valueIdx++] = trValue;
|
||||
line[valueIdx++] = trAccruedInt;
|
||||
line[valueIdx++] = accruedInt;
|
||||
line[valueIdx++] = trClrComm;
|
||||
line[valueIdx++] = trExhComm;
|
||||
line[valueIdx++] = cashLiability;
|
||||
line[valueIdx++] = depoLiability;
|
||||
line[valueIdx++] = cashNetto;
|
||||
line[valueIdx] = depoNetto;
|
||||
lines.add(line);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.platform.enumeration.InOutDirection;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
||||
protected final Imdg<Registry> registryImdg;
|
||||
protected final Imdg<Company> companyImdg;
|
||||
protected final Imdg<Listing> listingImdg;
|
||||
protected final Imdg<Statement> statementImdg;
|
||||
protected final Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
protected final String[] headers = {
|
||||
"id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "trdAccId",
|
||||
"account", "currency", "registry_code", "registry_name", "open_balance", "change_balance", "add_withdraw",
|
||||
"close_balance", "remarks", "add_sum", "add_time", "withdraw_sum", "withdraw_time"
|
||||
};
|
||||
|
||||
protected List<String[]> lines = null;
|
||||
|
||||
public MoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
this.paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String[]> getLines() {
|
||||
return lines;
|
||||
}
|
||||
|
||||
protected abstract Collection<Registry> getRegistryForReport(P param);
|
||||
|
||||
@Override
|
||||
protected void collect(P params) {
|
||||
Collection<Registry> registries = getRegistryForReport(params);
|
||||
|
||||
Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L);
|
||||
String clearingHouse = clearingHouseCompany.getFullName();
|
||||
|
||||
LocalDate nowDate = LocalDate.now();
|
||||
LocalTime nowTime = LocalTime.now();
|
||||
lines = new ArrayList<>(registries.size());
|
||||
for (Registry registry : registries) {
|
||||
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
|
||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", registry.getSecurityId()));
|
||||
Statement statement = statementImdg.getSingleObjectByFieldValues(Map.of("addresseeId", registry.getCompanyId()));
|
||||
PaymentInstruction paymentInstruction = paymentInstructionImdg.getSingleObjectByFieldValues(
|
||||
Map.of(
|
||||
"id", registry.getPaymentId(),
|
||||
"creditLeg_direction", InOutDirection.out.getKey()
|
||||
)
|
||||
);
|
||||
|
||||
String id = String.valueOf(registry.getId());
|
||||
String docDate = dateFormatter.format(nowDate);
|
||||
String docTime = timeFormatter.format(nowTime);
|
||||
String docName = "Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга";
|
||||
String docType = "KS_FIRMID_ASSETS";
|
||||
String firmId = String.valueOf(registry.getCompanyId());
|
||||
String firName = company.getFullName();
|
||||
String trdAccId = registry.getTradingClearingRegistry();
|
||||
String account = String.valueOf(registry.getAccountId());
|
||||
String currency = listing.getTradingCurrency();
|
||||
String registryCode = String.valueOf(registry.getId());
|
||||
String registryName = registry.getRegistryCode();
|
||||
String openBalance = String.valueOf(registry.getOpenBalance());
|
||||
String changeBalance = String.valueOf(registry.getCloseBalance().subtract(registry.getOpenBalance()));
|
||||
String addWithdraw = String.valueOf(registry.getCredit().subtract(registry.getDebit()));
|
||||
String closeBalance = String.valueOf(registry.getCloseBalance());
|
||||
String remarks = "";
|
||||
String addSum = String.valueOf(registry.getCredit());
|
||||
String addTime = dateTimeFormatter.format(LocalDateTime.ofInstant(statement.getCreated(), ZoneId.systemDefault()));
|
||||
String withdrawSum = String.valueOf(registry.getDebit());
|
||||
String withdrawTime = dateTimeFormatter.format(LocalDateTime.ofInstant(paymentInstruction.getPaymentDate(), ZoneId.systemDefault()));
|
||||
|
||||
int valueIdx = 0;
|
||||
String[] line = new String[getHeaders().length];
|
||||
line[valueIdx++] = id;
|
||||
line[valueIdx++] = docDate;
|
||||
line[valueIdx++] = docTime;
|
||||
line[valueIdx++] = docName;
|
||||
line[valueIdx++] = docType;
|
||||
line[valueIdx++] = clearingHouse;
|
||||
line[valueIdx++] = firmId;
|
||||
line[valueIdx++] = firName;
|
||||
line[valueIdx++] = trdAccId;
|
||||
line[valueIdx++] = account;
|
||||
line[valueIdx++] = currency;
|
||||
line[valueIdx++] = registryCode;
|
||||
line[valueIdx++] = registryName;
|
||||
line[valueIdx++] = openBalance;
|
||||
line[valueIdx++] = changeBalance;
|
||||
line[valueIdx++] = addWithdraw;
|
||||
line[valueIdx++] = closeBalance;
|
||||
line[valueIdx++] = remarks;
|
||||
line[valueIdx++] = addSum;
|
||||
line[valueIdx++] = addTime;
|
||||
line[valueIdx++] = withdrawSum;
|
||||
line[valueIdx++] = withdrawTime;
|
||||
lines.add(line);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder<SessionIdParam> {
|
||||
public OperationalLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
return executionFondImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("sessionId", params.getSessionId())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionDeposit> getExecutionDepositsForReport(SessionIdParam params) {
|
||||
return executionDepositImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("sessionId", params.getSessionId())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "operational_liabilities_claims.%s".formatted(
|
||||
dateTimeFormatter.format(LocalDateTime.now())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.OPERATIONAL_LIABILITIES_CLAIMS;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
public class OperationalMoneyChangeReportBuilder extends MoneyChangeReportBuilder<SessionIdParam> {
|
||||
public OperationalMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<Registry> getRegistryForReport(SessionIdParam param) {
|
||||
return registryImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("sessionId", param.getSessionId())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "operational_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.OPERATIONAL_MONEY_CHANGE;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdListParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder<SessionIdListParams> {
|
||||
|
||||
public PeriodLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdListParams params) {
|
||||
return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.PERIOD_LIABILITIES_CLAIMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdListParams params) {
|
||||
if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
executionFondImdg.predicateBuilder().in("sessionId", params.getSessionIdList().toArray(new Long[0]))
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionDeposit> getExecutionDepositsForReport(SessionIdListParams params) {
|
||||
if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList();
|
||||
return executionDepositImdg.getCollectionObjectsByPredicate(
|
||||
executionDepositImdg.predicateBuilder().in("sessionId", params.getSessionIdList().toArray(new Long[0]))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.reports.reports.PeriodParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
|
||||
|
||||
public PeriodMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<Registry> getRegistryForReport(PeriodParams params) {
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
return registryImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.greatEqual("clearingDate", params.getStartDate()),
|
||||
pb.lessEqual("clearingDate", params.getEndDate())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReportFilename(PeriodParams params) {
|
||||
return "period_money_change.%s-%s.%s".formatted(
|
||||
dateFormatter.format(params.getStartDate()),
|
||||
dateFormatter.format(params.getEndDate()),
|
||||
dateTimeFormatter.format(LocalDateTime.now())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.PERIOD_MONEY_CHANGE;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder<EmptyParams> {
|
||||
public SummaryLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(EmptyParams params) {
|
||||
return executionFondImdg.getAllValues();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionDeposit> getExecutionDepositsForReport(EmptyParams params) {
|
||||
return executionDepositImdg.getAllValues();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(EmptyParams params) {
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.SUMMARY_LIABILITIES_CLAIMS;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
|
||||
public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<Registry> getRegistryForReport(EmptyParams param) {
|
||||
return registryImdg.getAllValues();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(EmptyParams params) {
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.SUMMARY_MONEY_CHANGE;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.Allowed;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
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 java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdParam> {
|
||||
private final Imdg<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
private final String[] headers = {
|
||||
"id", "securityId", "tradeNo", "tradeDate", "settleCode"
|
||||
};
|
||||
private List<String[]> lines = null;
|
||||
|
||||
public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) {
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String[]> getLines() {
|
||||
return lines;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "unfulfilled_deal_report.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportType getReportType() {
|
||||
return ReportType.UNFULFILLED_DEAL_REPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void collect(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
ImdgPredicate predicate = pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.equals("coverageStatus", Allowed.DENIED.getKey())
|
||||
);
|
||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||
|
||||
lines = new ArrayList<>(executionFonds.size());
|
||||
for (ExecutionFond executionFond : executionFonds) {
|
||||
Company company = companyImdg.getSingleObjectByID(executionFond.getCompanyId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
STrades sTrade = sTradesImdg.getSingleObjectByFieldValues(
|
||||
Map.of(
|
||||
"settleCode", executionFond.getSettlementCode(),
|
||||
"operation", executionFond.getSide()
|
||||
)
|
||||
);
|
||||
|
||||
String id = String.valueOf(executionFond.getId());
|
||||
String securityId = String.valueOf(executionFond.getSecurityId());
|
||||
String tradeNo = String.valueOf(executionFond.getExchangeExecutionId());
|
||||
String tradeDate = dateFormatter.format(executionFond.getTradingDate());
|
||||
String settleCode = sTrade != null ? sTrade.getClassCode() : null;
|
||||
|
||||
int valueIdx = 0;
|
||||
String[] line = new String[getHeaders().length];
|
||||
line[valueIdx++] = id;
|
||||
line[valueIdx++] = securityId;
|
||||
line[valueIdx++] = tradeNo;
|
||||
line[valueIdx++] = tradeDate;
|
||||
line[valueIdx++] = settleCode;
|
||||
lines.add(line);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_12_2;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_12_2;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("netPositionBank")
|
||||
@Deprecated
|
||||
public class ReportPA_B extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("clearingMemberCategory")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_12_2;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_12_2;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("netPositionInitiator")
|
||||
@Deprecated
|
||||
public class ReportPA_IV extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("clearingMemberCategory")
|
||||
|
|
@ -1,12 +1,9 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_13;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_13;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
import ru.spcex.clearing.reports.reports.ReportId;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
@ -15,13 +12,14 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("incomingDocuments")
|
||||
@Deprecated
|
||||
public class ReportDOCIN extends AbstractReport {
|
||||
/**
|
||||
* Дата в формате: dd.MM.yyyy
|
||||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("date")
|
||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
private final LocalDate date;
|
||||
|
||||
/**
|
||||
|
|
@ -29,7 +27,7 @@ public class ReportDOCIN extends AbstractReport {
|
|||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("time")
|
||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
private final LocalTime time;
|
||||
|
||||
@XStreamAlias("rows")
|
||||
|
|
@ -1,12 +1,9 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_13;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_13;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
import ru.spcex.clearing.reports.reports.ReportId;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
@ -15,13 +12,14 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("incomingDocuments")
|
||||
@Deprecated
|
||||
public class ReportDOCOUT extends AbstractReport {
|
||||
/**
|
||||
* Дата в формате: dd.MM.yyyy
|
||||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("date")
|
||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
private final LocalDate date;
|
||||
|
||||
/**
|
||||
|
|
@ -29,7 +27,7 @@ public class ReportDOCOUT extends AbstractReport {
|
|||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("time")
|
||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
private final LocalTime time;
|
||||
|
||||
@XStreamAlias("rows")
|
||||
|
|
@ -1,12 +1,9 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_16_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_16_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
import ru.spcex.clearing.reports.reports.ReportId;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
@ -15,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("accountBalanceInfo")
|
||||
@Deprecated
|
||||
public class ReportINACCNT extends AbstractReport {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("clearingMemberCategory")
|
||||
|
|
@ -25,7 +23,7 @@ public class ReportINACCNT extends AbstractReport {
|
|||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("date")
|
||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||
private final LocalDate date;
|
||||
|
||||
/**
|
||||
|
|
@ -33,7 +31,7 @@ public class ReportINACCNT extends AbstractReport {
|
|||
*/
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("time")
|
||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||
private final LocalTime time;
|
||||
|
||||
@XStreamAlias("rows")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_1;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_1;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -14,6 +14,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearedLiabilities")
|
||||
@Deprecated
|
||||
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_1;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_1;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -10,6 +10,7 @@ import java.time.LocalDate;
|
|||
import java.time.LocalDateTime;
|
||||
|
||||
@XStreamAlias("clearedLiabilitiesTotal")
|
||||
@Deprecated
|
||||
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
||||
@XStreamAlias("rows")
|
||||
private Info_0420315_P2 rows;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_2;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_2;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingServiceStatus")
|
||||
@Deprecated
|
||||
public class ReportBR_0420317 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_3;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_3;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -13,6 +13,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("unfundedLiabilities")
|
||||
@Deprecated
|
||||
public class ReportBR_0420318 extends ReportWithClearingStatus {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_4;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_4;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("accountTransactionLiabilities")
|
||||
@Deprecated
|
||||
public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_4;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_4;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -11,6 +11,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("accountTransactionTurnover")
|
||||
@Deprecated
|
||||
public class ReportBR_0420314_P2 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -11,6 +11,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage1")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P1 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage10")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P10 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage2")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P2 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage3")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P3 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage4")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P4 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage5")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P5 extends ReportWithPeriod {
|
||||
|
||||
@XStreamAsAttribute
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage6")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P6 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage7")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P7 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage8")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P8 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_17_5;
|
||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@XStreamAlias("clearingCoverage9")
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P9 extends ReportWithPeriod {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("destination")
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
package ru.spcex.clearing.reports.services;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
||||
import ru.spcex.clearing.reports.reports.*;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
public class ReportService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<ReportRequest, IValidator> reportRequestValidator;
|
||||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||
private final Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
||||
private final Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams;
|
||||
|
||||
private final File outFolder;
|
||||
|
||||
public ReportService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
ReportsServiceSettings reportsServiceSettings,
|
||||
@Qualifier("reportBuildersWithoutParams")
|
||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams,
|
||||
@Qualifier("reportBuildersWithSessionIdParam")
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam,
|
||||
@Qualifier("reportBuildersWithSessionIdListParam")
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam,
|
||||
@Qualifier("reportBuildersWithPeriodParams")
|
||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams,
|
||||
@Qualifier("reportRequestValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||
@Qualifier("reportRequestWithSessionIdValidator")
|
||||
Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator,
|
||||
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||
@Qualifier("reportRequestWithPeriodValidator")
|
||||
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.reportRequestValidator = reportRequestValidator;
|
||||
this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator;
|
||||
this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator;
|
||||
this.reportRequestWithPeriodValidator = reportRequestWithPeriodValidator;
|
||||
this.reportBuildersWithoutParams = reportBuildersWithoutParams;
|
||||
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
||||
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
||||
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
||||
this.outFolder = new File(reportsServiceSettings.getReportModuleOut());
|
||||
assert outFolder.isDirectory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(ReportRequest.class)
|
||||
.setFunction(this::createReport)
|
||||
.forDestination(Consts.CREATE_REPORT, callbacks::put);
|
||||
callback(ReportRequestWithSessionId.class)
|
||||
.setFunction(this::createReportForSessionId)
|
||||
.forDestination(Consts.CREATE_REPORT_FOR_SESSION_ID, callbacks::put);
|
||||
callback(ReportRequestWithSessionIdList.class)
|
||||
.setFunction(this::createReportForSessionIdList)
|
||||
.forDestination(Consts.CREATE_REPORT_FOR_SESSION_ID_LIST, callbacks::put);
|
||||
callback(ReportRequestWithPeriod.class)
|
||||
.setFunction(this::createReportForPeriod)
|
||||
.forDestination(Consts.CREATE_REPORT_FOR_PERIOD, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReport(BaseRequest<ReportRequest> userRequest) {
|
||||
log.debug("ReportRequest received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequest req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
List<CSVReportBuilder<EmptyParams>> builders = reportBuildersWithoutParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<EmptyParams> builder : builders) {
|
||||
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForSessionId(BaseRequest<ReportRequestWithSessionId> userRequest) {
|
||||
log.debug("ReportRequestWithSessionId received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithSessionId req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
List<CSVReportBuilder<SessionIdParam>> builders = reportBuildersWithSessionIdParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdParam> builder : builders) {
|
||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||
sessionIdParam.setSessionId(req.getSessionId());
|
||||
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForSessionIdList(BaseRequest<ReportRequestWithSessionIdList> userRequest) {
|
||||
log.debug("ReportRequestWithSessionIdList received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdListValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithSessionIdList req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
List<CSVReportBuilder<SessionIdListParams>> builders = reportBuildersWithSessionIdListParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdListParams> builder : builders) {
|
||||
SessionIdListParams sessionIdListParams = new SessionIdListParams();
|
||||
sessionIdListParams.setSessionIdList(req.getSessionIdList());
|
||||
File outFile = builder.createReport(sessionIdListParams, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForPeriod(BaseRequest<ReportRequestWithPeriod> userRequest) {
|
||||
log.debug("ReportRequestWithPeriod received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithPeriodValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithPeriod req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
List<CSVReportBuilder<PeriodParams>> builders = reportBuildersWithPeriodParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<PeriodParams> builder : builders) {
|
||||
PeriodParams periodParams = new PeriodParams();
|
||||
periodParams.setStartDate(req.getStartDate());
|
||||
periodParams.setEndDate(req.getEndDate());
|
||||
File outFile = builder.createReport(periodParams, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import ru.spcex.clearing.reports.reports.AbstractReport;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@Deprecated
|
||||
public abstract class FileReportBuilder {
|
||||
protected final Class<? extends AbstractReport> reportClass;
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import java.io.FileOutputStream;
|
|||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Deprecated
|
||||
public class XMLReportBuilder extends FileReportBuilder {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
protected final XStream xStream;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_12_2;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_B;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_B;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -20,6 +20,7 @@ import java.util.Set;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_12_2;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_IV;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -20,6 +20,7 @@ import java.util.Set;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_13;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCIN;
|
||||
import ru.spcex.clearing.reports.services.SimpleReportCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -17,6 +17,7 @@ import java.time.LocalTime;
|
|||
import java.util.Collection;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_13;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCOUT;
|
||||
import ru.spcex.clearing.reports.services.SimpleReportCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -17,6 +17,7 @@ import java.time.LocalTime;
|
|||
import java.util.Collection;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_16_5;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_16_5.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.services.ReportForClearingCodeCollector;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -19,6 +19,7 @@ import java.util.Set;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P1;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||
import ru.spcex.platform.enumeration.Market;
|
||||
|
|
@ -22,6 +23,7 @@ import java.time.LocalDate;
|
|||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420315_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420315_P1> {
|
||||
protected static final List<String> ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey());
|
||||
|
||||
|
|
@ -1,56 +1,57 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector<ReportBR_0420315_P2> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
long liabilitiesAmount;
|
||||
BigDecimal contractorQty = BigDecimal.ZERO;
|
||||
{
|
||||
HashSet<String> collectedToSumm = new HashSet<>();
|
||||
for (LiabilitiesClaimsAssets lContract : liabilities) {
|
||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
||||
collectedToSumm.add(lContract.getContract());
|
||||
contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity());
|
||||
}
|
||||
}
|
||||
liabilitiesAmount = collectedToSumm.size();
|
||||
}
|
||||
|
||||
ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate);
|
||||
reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty),
|
||||
toString(liabilitiesAmount)));
|
||||
|
||||
return reportBR_0420315_p2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420315_P2> getReportClass() {
|
||||
return ReportBR_0420315_P2.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector<ReportBR_0420315_P2> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
long liabilitiesAmount;
|
||||
BigDecimal contractorQty = BigDecimal.ZERO;
|
||||
{
|
||||
HashSet<String> collectedToSumm = new HashSet<>();
|
||||
for (LiabilitiesClaimsAssets lContract : liabilities) {
|
||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
||||
collectedToSumm.add(lContract.getContract());
|
||||
contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity());
|
||||
}
|
||||
}
|
||||
liabilitiesAmount = collectedToSumm.size();
|
||||
}
|
||||
|
||||
ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate);
|
||||
reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty),
|
||||
toString(liabilitiesAmount)));
|
||||
|
||||
return reportBR_0420315_p2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420315_P2> getReportClass() {
|
||||
return ReportBR_0420315_P2.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_2;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
|
@ -6,7 +6,7 @@ import ru.clearing.classes.statics.data.company.Company;
|
|||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_2.ReportBR_0420317;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -20,6 +20,7 @@ import java.util.Collection;
|
|||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420317_Collector extends ReportWithPeriodCollector<ReportBR_0420317> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<Relation> relationImdg;
|
||||
|
|
@ -1,15 +1,16 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_3;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_3.ReportBR_0420318;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -22,6 +23,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420318_Collector extends ReportWithPeriodCollector<ReportBR_0420318> {
|
||||
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
|
@ -1,99 +1,101 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* accountTransactionLiabilities
|
||||
*/
|
||||
@Component
|
||||
public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P1> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||
|
||||
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR",
|
||||
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
||||
);
|
||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
||||
|
||||
for (LiabilitiesClaimsAssets liability: liabilities) {
|
||||
final Long companyId = liability.getCompanyId();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
||||
String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory);
|
||||
|
||||
CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId());
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
|
||||
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1(
|
||||
toString(company.getClearingCode()),
|
||||
toString(companySymbolCntr == null? null : companySymbolCntr.getId()),
|
||||
toString(company.getFullName()),
|
||||
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
||||
toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить
|
||||
toString(liability.getRefundPaymentId()),
|
||||
toString(liability.getTradingDate()),
|
||||
toString(liability.getLiabilitiesQuantity())
|
||||
);
|
||||
reportBR_0420312P1.getRows().add(info_0420314P1);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420314_P1> getReportClass() {
|
||||
return ReportBR_0420314_P1.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P1;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* accountTransactionLiabilities
|
||||
*/
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P1> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||
|
||||
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR",
|
||||
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
||||
);
|
||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
||||
|
||||
for (LiabilitiesClaimsAssets liability: liabilities) {
|
||||
final Long companyId = liability.getCompanyId();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
||||
String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory);
|
||||
|
||||
CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId());
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
|
||||
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1(
|
||||
toString(company.getClearingCode()),
|
||||
toString(companySymbolCntr == null? null : companySymbolCntr.getId()),
|
||||
toString(company.getFullName()),
|
||||
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
||||
toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить
|
||||
toString(liability.getRefundPaymentId()),
|
||||
toString(liability.getTradingDate()),
|
||||
toString(liability.getLiabilitiesQuantity())
|
||||
);
|
||||
reportBR_0420312P1.getRows().add(info_0420314P1);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420314_P1> getReportClass() {
|
||||
return ReportBR_0420314_P1.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,129 +1,131 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
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 java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* accountTransactionLiabilities
|
||||
*/
|
||||
@Component
|
||||
public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P2> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
private Imdg<AccountBalance> accountBalanceImdg;
|
||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
}
|
||||
|
||||
Collection<PaymentInstruction> searchPaymentInstruction(LocalDate startDate, LocalDate endDate) {
|
||||
ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder();
|
||||
Instant dateTimeLo = toInstantStartDay(startDate);
|
||||
Instant dateTimeHi = toInstantEndDay(endDate);
|
||||
ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi));
|
||||
Collection<PaymentInstruction> paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p);
|
||||
return paymentInstructionsAll;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate,
|
||||
"", "BR"
|
||||
);
|
||||
|
||||
Collection<PaymentInstruction> paymentInstructionsAll = searchPaymentInstruction(startDate, endDate);
|
||||
|
||||
Map<Long, List<PaymentInstruction>> companyIdPyPaymtInstruction =
|
||||
MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId);
|
||||
|
||||
for (Map.Entry<Long, List<PaymentInstruction>> entry : companyIdPyPaymtInstruction.entrySet()) {
|
||||
final Long companyId = entry.getKey();
|
||||
List<PaymentInstruction> paymentInstructionsByCompany = entry.getValue();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found, id={}", companyId);
|
||||
continue;
|
||||
}
|
||||
ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companyId", companyId,
|
||||
"documentType", DocumentTypes.cntr.getKey()
|
||||
));
|
||||
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"accountType", AccountType.Clrn.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
|
||||
String documentTypeStr = null;
|
||||
if (profileDocumentCntr != null) {
|
||||
documentTypeStr = profileDocumentCntr.getNumber();
|
||||
if (profileDocumentCntr.getValidFromDate() != null) {
|
||||
if (StringUtils.isEmpty(documentTypeStr)) {
|
||||
documentTypeStr = "";
|
||||
} else {
|
||||
documentTypeStr += " ";
|
||||
}
|
||||
documentTypeStr += toString(profileDocumentCntr.getValidFromDate());
|
||||
}
|
||||
}
|
||||
|
||||
BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream()
|
||||
.map(PaymentInstruction::getCreditLeg_amount)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream()
|
||||
.map(PaymentInstruction::getDebitLeg_amount)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
|
||||
|
||||
ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2(
|
||||
toString(company.getClearingCode()),
|
||||
toString(documentTypeStr),
|
||||
toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()),
|
||||
toString(paymentInstruction_creditLeg_amount),
|
||||
toString(paymentInstructiont_debitLeg_amount),
|
||||
toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount())
|
||||
);
|
||||
|
||||
reportBR_0420312P2.getRows().add(info_0420314P2);
|
||||
}
|
||||
|
||||
return reportBR_0420312P2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420314_P2> getReportClass() {
|
||||
return ReportBR_0420314_P2.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
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 java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* accountTransactionLiabilities
|
||||
*/
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P2> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
private Imdg<AccountBalance> accountBalanceImdg;
|
||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
}
|
||||
|
||||
Collection<PaymentInstruction> searchPaymentInstruction(LocalDate startDate, LocalDate endDate) {
|
||||
ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder();
|
||||
Instant dateTimeLo = toInstantStartDay(startDate);
|
||||
Instant dateTimeHi = toInstantEndDay(endDate);
|
||||
ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi));
|
||||
Collection<PaymentInstruction> paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p);
|
||||
return paymentInstructionsAll;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate,
|
||||
"", "BR"
|
||||
);
|
||||
|
||||
Collection<PaymentInstruction> paymentInstructionsAll = searchPaymentInstruction(startDate, endDate);
|
||||
|
||||
Map<Long, List<PaymentInstruction>> companyIdPyPaymtInstruction =
|
||||
MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId);
|
||||
|
||||
for (Map.Entry<Long, List<PaymentInstruction>> entry : companyIdPyPaymtInstruction.entrySet()) {
|
||||
final Long companyId = entry.getKey();
|
||||
List<PaymentInstruction> paymentInstructionsByCompany = entry.getValue();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found, id={}", companyId);
|
||||
continue;
|
||||
}
|
||||
ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companyId", companyId,
|
||||
"documentType", DocumentTypes.cntr.getKey()
|
||||
));
|
||||
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"accountType", AccountType.Clrn.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
|
||||
String documentTypeStr = null;
|
||||
if (profileDocumentCntr != null) {
|
||||
documentTypeStr = profileDocumentCntr.getNumber();
|
||||
if (profileDocumentCntr.getValidFromDate() != null) {
|
||||
if (StringUtils.isEmpty(documentTypeStr)) {
|
||||
documentTypeStr = "";
|
||||
} else {
|
||||
documentTypeStr += " ";
|
||||
}
|
||||
documentTypeStr += toString(profileDocumentCntr.getValidFromDate());
|
||||
}
|
||||
}
|
||||
|
||||
BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream()
|
||||
.map(PaymentInstruction::getCreditLeg_amount)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream()
|
||||
.map(PaymentInstruction::getDebitLeg_amount)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
|
||||
|
||||
ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2(
|
||||
toString(company.getClearingCode()),
|
||||
toString(documentTypeStr),
|
||||
toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()),
|
||||
toString(paymentInstruction_creditLeg_amount),
|
||||
toString(paymentInstructiont_debitLeg_amount),
|
||||
toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount())
|
||||
);
|
||||
|
||||
reportBR_0420312P2.getRows().add(info_0420314P2);
|
||||
}
|
||||
|
||||
return reportBR_0420312P2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420314_P2> getReportClass() {
|
||||
return ReportBR_0420314_P2.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +1,49 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P10;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P10> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate);
|
||||
ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P10.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P10> getReportClass() {
|
||||
return ReportBR_0420312_P10.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P10;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P10> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate);
|
||||
ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P10.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P10> getReportClass() {
|
||||
return ReportBR_0420312_P10.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,83 +1,85 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P1> {
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
||||
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
|
||||
toString(company.getClearingCode()),
|
||||
toString(companyId),
|
||||
toString(company.getFullName()),
|
||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(company.getProfile().getCountryCode()),
|
||||
toString(clearingMemberCategory));
|
||||
reportBR_0420312P1.getRows().add(info_0420312_p1);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P1> getReportClass() {
|
||||
return ReportBR_0420312_P1.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P1;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P1> {
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
||||
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
|
||||
toString(company.getClearingCode()),
|
||||
toString(companyId),
|
||||
toString(company.getFullName()),
|
||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(company.getProfile().getCountryCode()),
|
||||
toString(clearingMemberCategory));
|
||||
reportBR_0420312P1.getRows().add(info_0420312_p1);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P1> getReportClass() {
|
||||
return ReportBR_0420312_P1.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,61 +1,63 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P2> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR");
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2(
|
||||
toString(companyId),
|
||||
toString(liabilitiesQuantitySum)
|
||||
);
|
||||
reportBR_0420312P1.getRows().add(info_0420312_p2);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P2> getReportClass() {
|
||||
return ReportBR_0420312_P2.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P2;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P2> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR");
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2(
|
||||
toString(companyId),
|
||||
toString(liabilitiesQuantitySum)
|
||||
);
|
||||
reportBR_0420312P1.getRows().add(info_0420312_p2);
|
||||
}
|
||||
|
||||
return reportBR_0420312P1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P2> getReportClass() {
|
||||
return ReportBR_0420312_P2.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,12 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P3;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P3;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
|
|
@ -17,6 +18,7 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
|
|
@ -1,48 +1,49 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P4;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P4> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate);
|
||||
ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P4.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P4> getReportClass() {
|
||||
return ReportBR_0420312_P4.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P4;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P4> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate);
|
||||
ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P4.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P4> getReportClass() {
|
||||
return ReportBR_0420312_P4.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +1,49 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P5;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P5> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate);
|
||||
ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P5.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P5> getReportClass() {
|
||||
return ReportBR_0420312_P5.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P5;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P5> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate);
|
||||
ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P5.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P5> getReportClass() {
|
||||
return ReportBR_0420312_P5.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +1,49 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P6;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P6> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate);
|
||||
ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P5.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P6> getReportClass() {
|
||||
return ReportBR_0420312_P6.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P6;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P6> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) {
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
|
||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
ReportBR_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate);
|
||||
ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum));
|
||||
reportBR_0420312P5.getRows().add(reportInfo);
|
||||
|
||||
return reportBR_0420312P5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P6> getReportClass() {
|
||||
return ReportBR_0420312_P6.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P7;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P7;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -15,6 +15,7 @@ import java.util.Collection;
|
|||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P7_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P7> {
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
|
||||
|
|
@ -1,98 +1,100 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P8;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P8> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
||||
|
||||
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||
String currencyCode = currencyEntry.getKey();
|
||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||
if (currencyId == null) {
|
||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||
}
|
||||
ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8(
|
||||
toString(currencyId),
|
||||
toString(companyId),
|
||||
toString(company.getFullName()),
|
||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(company.getProfile().getCountryCode()),
|
||||
toString(clearingMemberCategory)
|
||||
);
|
||||
reportBR_0420312P8.getRows().add(info_0420312_p8);
|
||||
}
|
||||
}
|
||||
|
||||
return reportBR_0420312P8;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P8> getReportClass() {
|
||||
return ReportBR_0420312_P8.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P8;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P8> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
||||
}
|
||||
|
||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companySymbol", docType.getKey(),
|
||||
"companyId", companyId
|
||||
));
|
||||
return companySymbol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
||||
|
||||
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||
String currencyCode = currencyEntry.getKey();
|
||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||
if (currencyId == null) {
|
||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||
}
|
||||
ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8(
|
||||
toString(currencyId),
|
||||
toString(companyId),
|
||||
toString(company.getFullName()),
|
||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||
toString(company.getProfile().getCountryCode()),
|
||||
toString(clearingMemberCategory)
|
||||
);
|
||||
reportBR_0420312P8.getRows().add(info_0420312_p8);
|
||||
}
|
||||
}
|
||||
|
||||
return reportBR_0420312P8;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P8> getReportClass() {
|
||||
return ReportBR_0420312_P8.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,80 +1,82 @@
|
|||
package ru.spcex.clearing.reports.services.collector;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P9;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P9> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||
String currencyCode = currencyEntry.getKey();
|
||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||
if (currencyId == null) {
|
||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||
}
|
||||
BigDecimal sumOfLiabilities = currencyEntry.getValue().stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9(
|
||||
toString(currencyId),
|
||||
toString(companyId),
|
||||
toString(currencyCode),
|
||||
toString(sumOfLiabilities)
|
||||
);
|
||||
reportBR_0420312P9.getRows().add(info_0420312_p9);
|
||||
}
|
||||
}
|
||||
|
||||
return reportBR_0420312P9;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P9> getReportClass() {
|
||||
return ReportBR_0420312_P9.class;
|
||||
}
|
||||
}
|
||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P9;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P9> {
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||
|
||||
@Autowired
|
||||
public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
validateDateRange(startDate, endDate);
|
||||
|
||||
ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate);
|
||||
|
||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||
|
||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||
final Long companyId = companyEntry.getKey();
|
||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||
if (company == null) {
|
||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||
continue;
|
||||
}
|
||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||
String currencyCode = currencyEntry.getKey();
|
||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||
if (currencyId == null) {
|
||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||
}
|
||||
BigDecimal sumOfLiabilities = currencyEntry.getValue().stream()
|
||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal::add)
|
||||
.orElse(BigDecimal.ZERO);
|
||||
ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9(
|
||||
toString(currencyId),
|
||||
toString(companyId),
|
||||
toString(currencyCode),
|
||||
toString(sumOfLiabilities)
|
||||
);
|
||||
reportBR_0420312P9.getRows().add(info_0420312_p9);
|
||||
}
|
||||
}
|
||||
|
||||
return reportBR_0420312P9;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ReportBR_0420312_P9> getReportClass() {
|
||||
return ReportBR_0420312_P9.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
package ru.spcex.clearing.reports.xml_test;
|
||||
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import com.thoughtworks.xstream.annotations.XStreamOmitField;
|
||||
import com.thoughtworks.xstream.converters.basic.BooleanConverter;
|
||||
import com.thoughtworks.xstream.converters.basic.DateConverter;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
// without aliases
|
||||
public class ChildElementForWrite {
|
||||
@XStreamAlias("childStr") // alias for field name
|
||||
private String testChildString = "testChildStr";
|
||||
|
||||
@XStreamAsAttribute
|
||||
private Integer testAttributeInt = Integer.MIN_VALUE;
|
||||
|
||||
// при использовании настраевомого встроенного конвертора, ему необходимо передать параметры в конструктор
|
||||
// делается это посредством параметров strings, booleans, nulls.
|
||||
// т.е. такая запись эквивалентна:
|
||||
// new DateConverter("MM-yyyy-dd", null)
|
||||
@XStreamConverter(value = DateConverter.class, strings = {"MM-yyyy-dd"}, nulls = {String[].class})
|
||||
private Date testDate = new Date();
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("isBoolean")
|
||||
@XStreamConverter(value = BooleanConverter.class, booleans = {true}, strings = {"yes", "no"})
|
||||
private Boolean testYesAttributeBool = Boolean.TRUE;
|
||||
|
||||
private Integer testChildInt = Integer.MAX_VALUE;
|
||||
|
||||
@XStreamOmitField
|
||||
private String testIgnoredString = "testIgnore";
|
||||
|
||||
|
||||
|
||||
public String getTestChildString() {
|
||||
return testChildString;
|
||||
}
|
||||
|
||||
public void setTestChildString(String testChildString) {
|
||||
this.testChildString = testChildString;
|
||||
}
|
||||
|
||||
public Integer getTestAttributeInt() {
|
||||
return testAttributeInt;
|
||||
}
|
||||
|
||||
public void setTestAttributeInt(Integer testAttributeInt) {
|
||||
this.testAttributeInt = testAttributeInt;
|
||||
}
|
||||
|
||||
public Integer getTestChildInt() {
|
||||
return testChildInt;
|
||||
}
|
||||
|
||||
public void setTestChildInt(Integer testChildInt) {
|
||||
this.testChildInt = testChildInt;
|
||||
}
|
||||
|
||||
public String getTestIgnoredString() {
|
||||
return testIgnoredString;
|
||||
}
|
||||
|
||||
public void setTestIgnoredString(String testIgnoredString) {
|
||||
this.testIgnoredString = testIgnoredString;
|
||||
}
|
||||
|
||||
public Boolean getTestYesAttributeBool() {
|
||||
return testYesAttributeBool;
|
||||
}
|
||||
|
||||
public void setTestYesAttributeBool(Boolean testYesAttributeBool) {
|
||||
this.testYesAttributeBool = testYesAttributeBool;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
package ru.spcex.clearing.reports.xml_test;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
|
||||
@XStreamAlias("withAttrsOnly")
|
||||
public class ElementWithAttributeOnly {
|
||||
@XStreamAsAttribute
|
||||
private String attrStr = "attrStr";
|
||||
|
||||
@XStreamAsAttribute
|
||||
private Long attrLong = Long.MIN_VALUE;
|
||||
|
||||
public String getAttrStr() {
|
||||
return attrStr;
|
||||
}
|
||||
|
||||
public void setAttrStr(String attrStr) {
|
||||
this.attrStr = attrStr;
|
||||
}
|
||||
|
||||
public Long getAttrLong() {
|
||||
return attrLong;
|
||||
}
|
||||
|
||||
public void setAttrLong(Long attrLong) {
|
||||
this.attrLong = attrLong;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
package ru.spcex.clearing.reports.xml_test;
|
||||
|
||||
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Objects;
|
||||
|
||||
public class FormattedLocalDateConverter extends AbstractSingleValueConverter {
|
||||
private final String DEFAULT_PATTERN = "dd.MM.yyyy";
|
||||
private final DateTimeFormatter formatter;
|
||||
|
||||
public FormattedLocalDateConverter() {
|
||||
formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN);
|
||||
}
|
||||
|
||||
public FormattedLocalDateConverter(String pattern) {
|
||||
formatter = DateTimeFormatter.ofPattern(Objects.requireNonNullElse(pattern, DEFAULT_PATTERN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConvert(Class type) {
|
||||
return LocalDate.class.isAssignableFrom(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object fromString(String str) {
|
||||
// not implemented (not used)
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object obj) {
|
||||
LocalDate date = (LocalDate) obj;
|
||||
return date != null ? formatter.format(date) : "";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
package ru.spcex.clearing.reports.xml_test;
|
||||
|
||||
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Objects;
|
||||
|
||||
public class FormattedLocalTimeConverter extends AbstractSingleValueConverter {
|
||||
private final String DEFAULT_PATTERN = "HH:mm:ss";
|
||||
private final DateTimeFormatter formatter;
|
||||
|
||||
public FormattedLocalTimeConverter() {
|
||||
formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN);
|
||||
}
|
||||
|
||||
public FormattedLocalTimeConverter(String pattern) {
|
||||
formatter = DateTimeFormatter.ofPattern(Objects.requireNonNullElse(pattern, DEFAULT_PATTERN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConvert(Class type) {
|
||||
return LocalTime.class.isAssignableFrom(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object fromString(String str) {
|
||||
// not implemented (not used)
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object obj) {
|
||||
LocalTime date = (LocalTime) obj;
|
||||
return date != null ? formatter.format(date) : "";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
package ru.spcex.clearing.reports.xml_test;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import com.thoughtworks.xstream.annotations.XStreamImplicit;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@XStreamAlias("root") // alias for classname
|
||||
public class RootElementForWrite {
|
||||
|
||||
@XStreamAlias("string") // alias for field
|
||||
private String testString = "testString";
|
||||
|
||||
private BigDecimal testBigDecimal = new BigDecimal("666.666");
|
||||
|
||||
private Double testDouble = Double.MAX_VALUE;
|
||||
|
||||
private Long testLong = Long.MIN_VALUE;
|
||||
|
||||
private Boolean testBoolean = Boolean.FALSE;
|
||||
|
||||
private LocalDate testLocalDateDefault = LocalDate.now();
|
||||
|
||||
@XStreamConverter(FormattedLocalDateConverter.class)
|
||||
private LocalDate testLocalDateCustom = LocalDate.now();
|
||||
|
||||
private LocalDateTime testLocalDateTime = LocalDateTime.now();
|
||||
|
||||
private OffsetDateTime testOffsetDateTime = OffsetDateTime.now();
|
||||
|
||||
private Instant testInstant = Instant.now();
|
||||
|
||||
@XStreamAlias("namedList")
|
||||
private List<ChildElementForWrite> testList = new ArrayList<>();
|
||||
|
||||
@XStreamImplicit
|
||||
private List<ChildElementForWrite> testListTwo = Arrays.asList(new ChildElementForWrite(), new ChildElementForWrite());
|
||||
|
||||
// can marshal without getter/setter
|
||||
private ElementWithAttributeOnly elementWithAttributeOnly = new ElementWithAttributeOnly();
|
||||
|
||||
public String getTestString() {
|
||||
return testString;
|
||||
}
|
||||
|
||||
public void setTestString(String testString) {
|
||||
this.testString = testString;
|
||||
}
|
||||
|
||||
public BigDecimal getTestBigDecimal() {
|
||||
return testBigDecimal;
|
||||
}
|
||||
|
||||
public void setTestBigDecimal(BigDecimal testBigDecimal) {
|
||||
this.testBigDecimal = testBigDecimal;
|
||||
}
|
||||
|
||||
public Double getTestDouble() {
|
||||
return testDouble;
|
||||
}
|
||||
|
||||
public void setTestDouble(Double testDouble) {
|
||||
this.testDouble = testDouble;
|
||||
}
|
||||
|
||||
public Long getTestLong() {
|
||||
return testLong;
|
||||
}
|
||||
|
||||
public void setTestLong(Long testLong) {
|
||||
this.testLong = testLong;
|
||||
}
|
||||
|
||||
public Boolean getTestBoolean() {
|
||||
return testBoolean;
|
||||
}
|
||||
|
||||
public void setTestBoolean(Boolean testBoolean) {
|
||||
this.testBoolean = testBoolean;
|
||||
}
|
||||
|
||||
public LocalDate getTestLocalDate() {
|
||||
return testLocalDateCustom;
|
||||
}
|
||||
|
||||
public void setTestLocalDate(LocalDate testLocalDate) {
|
||||
this.testLocalDateCustom = testLocalDate;
|
||||
}
|
||||
|
||||
public LocalDateTime getTestLocalDateTime() {
|
||||
return testLocalDateTime;
|
||||
}
|
||||
|
||||
public void setTestLocalDateTime(LocalDateTime testLocalDateTime) {
|
||||
this.testLocalDateTime = testLocalDateTime;
|
||||
}
|
||||
|
||||
public OffsetDateTime getTestOffsetDateTime() {
|
||||
return testOffsetDateTime;
|
||||
}
|
||||
|
||||
public void setTestOffsetDateTime(OffsetDateTime testOffsetDateTime) {
|
||||
this.testOffsetDateTime = testOffsetDateTime;
|
||||
}
|
||||
|
||||
public Instant getTestInstant() {
|
||||
return testInstant;
|
||||
}
|
||||
|
||||
public void setTestInstant(Instant testInstant) {
|
||||
this.testInstant = testInstant;
|
||||
}
|
||||
|
||||
public List<ChildElementForWrite> getTestList() {
|
||||
return testList;
|
||||
}
|
||||
|
||||
public void setTestList(List<ChildElementForWrite> testList) {
|
||||
this.testList = testList;
|
||||
}
|
||||
|
||||
public List<ChildElementForWrite> getTestListTwo() {
|
||||
return testListTwo;
|
||||
}
|
||||
|
||||
public void setTestListTwo(List<ChildElementForWrite> testListTwo) {
|
||||
this.testListTwo = testListTwo;
|
||||
}
|
||||
|
||||
public LocalDate getTestLocalDateDefault() {
|
||||
return testLocalDateDefault;
|
||||
}
|
||||
|
||||
public void setTestLocalDateDefault(LocalDate testLocalDateDefault) {
|
||||
this.testLocalDateDefault = testLocalDateDefault;
|
||||
}
|
||||
|
||||
public LocalDate getTestLocalDateCustom() {
|
||||
return testLocalDateCustom;
|
||||
}
|
||||
|
||||
public void setTestLocalDateCustom(LocalDate testLocalDateCustom) {
|
||||
this.testLocalDateCustom = testLocalDateCustom;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
|
||||
reports-service.hazelcast.cluster-members=127.0.0.1:5701
|
||||
reports-service.hazelcast.login=dev
|
||||
reports-service.hazelcast.password=dev-pass
|
||||
|
||||
reports-service.kafka-consumer.bootstrap-servers=localhost:9092
|
||||
reports-service.kafka-consumer.group-id=dev-group-balance-service
|
||||
|
|
@ -8,16 +10,11 @@ reports-service.kafka-consumer.auto-offset-reset=latest
|
|||
reports-service.kafka-consumer.linger-ms=1
|
||||
reports-service.kafka-consumer.buffer-memory=33554432
|
||||
|
||||
#reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
||||
#reports-service.kafka-producer.acks=all
|
||||
#reports-service.kafka-producer.retries=0
|
||||
#reports-service.kafka-producer.batch-size=16384
|
||||
#reports-service.kafka-producer.linger-ms=1
|
||||
#reports-service.kafka-producer.buffer-memory=33554432
|
||||
|
||||
reports-service.hazelcast.cluster-members=127.0.0.1:5701
|
||||
#,10.200.200.181:5701
|
||||
reports-service.hazelcast.login=dev
|
||||
reports-service.hazelcast.password=dev-pass
|
||||
reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
||||
reports-service.kafka-producer.acks=all
|
||||
reports-service.kafka-producer.retries=0
|
||||
reports-service.kafka-producer.batch-size=16384
|
||||
reports-service.kafka-producer.linger-ms=1
|
||||
reports-service.kafka-producer.buffer-memory=33554432
|
||||
|
||||
reports-service.ReportModuleOut=./report_out
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package ru.spcex.clearing.reports.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
||||
|
||||
@Configuration
|
||||
public class TestConfig {
|
||||
|
||||
@Bean
|
||||
public ReportsServiceSettings reportsServiceSettings() {
|
||||
ReportsServiceSettings reportsServiceSettings = new ReportsServiceSettings();
|
||||
reportsServiceSettings.setReportModuleOut("out");
|
||||
return reportsServiceSettings;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,924 @@
|
|||
package ru.spcex.clearing.reports.services;
|
||||
|
||||
import com.opencsv.CSVParser;
|
||||
import com.opencsv.CSVParserBuilder;
|
||||
import com.opencsv.CSVReader;
|
||||
import com.opencsv.CSVReaderBuilder;
|
||||
import com.opencsv.exceptions.CsvValidationException;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.*;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.reports.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.reports.config.ReportBuildersConfig;
|
||||
import ru.spcex.clearing.reports.config.TestConfig;
|
||||
import ru.spcex.clearing.reports.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.test.TestUtils;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
ValidationConfig.class,
|
||||
ReportService.class,
|
||||
ImdgTestConfig.class,
|
||||
KafkaTestConfig.class,
|
||||
ReportBuildersConfig.class,
|
||||
TestConfig.class
|
||||
})
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
public class ReportServiceTest {
|
||||
private static File outFolder;
|
||||
private final ExecutionFond testExecutionFond = new ExecutionFond();
|
||||
private final ExecutionDeposit testExecutionDeposit = new ExecutionDeposit();
|
||||
private final Registry testRegistry_1 = new Registry();
|
||||
private final Registry testRegistry_2 = new Registry();
|
||||
private final Company testCompany_1 = new Company();
|
||||
private final Company testCompany_2 = new Company();
|
||||
private final Company testCompanyHouse = new Company();
|
||||
private final Registry testRegistryForCompanyId_1 = new Registry();
|
||||
private final Registry testRegistryForCompanyId_2 = new Registry();
|
||||
private final Registry tm_tRegistry_1 = new Registry();
|
||||
private final Registry om_tRegistry_1 = new Registry();
|
||||
private final Registry ts_tRegistry_1 = new Registry();
|
||||
private final Registry os_tRegistry_1 = new Registry();
|
||||
private final Registry tm_tRegistry_2 = new Registry();
|
||||
private final Registry om_tRegistry_2 = new Registry();
|
||||
private final Registry ts_tRegistry_2 = new Registry();
|
||||
private final Registry os_tRegistry_2 = new Registry();
|
||||
private final Listing testListing_1 = new Listing();
|
||||
private final Listing testListing_2 = new Listing();
|
||||
private final FixedIncomeSecurity testFixedIncomeSecurity_1 = new FixedIncomeSecurity();
|
||||
private final FixedIncomeSecurity testFixedIncomeSecurity_2 = new FixedIncomeSecurity();
|
||||
private final TradingClearingRegistry testTradingClearingRegistry_1 = new TradingClearingRegistry();
|
||||
private final TradingClearingRegistry testTradingClearingRegistry_2 = new TradingClearingRegistry();
|
||||
private final PaymentInstruction testPaymentInstruction_1 = new PaymentInstruction();
|
||||
private final PaymentInstruction testPaymentInstruction_2 = new PaymentInstruction();
|
||||
private final Statement testStatement_1 = new Statement();
|
||||
private final Statement testStatement_2 = new Statement();
|
||||
private final STrades testSTrade = new STrades();
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
|
||||
private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
|
||||
private final String TEST_MARKET_1 = Market.fond.getKey();
|
||||
private final String TEST_MARKET_2 = Market.mkrs.getKey();
|
||||
private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
|
||||
private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
|
||||
private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
|
||||
private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
|
||||
private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
|
||||
private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
|
||||
private final String TEST_SIDE_1 = Side.SELL.getKey();
|
||||
private final String TEST_SIDE_2 = Side.BUY.getKey();
|
||||
private final String TEST_COVERAGE_STATUS_1 = Allowed.DENIED.getKey();
|
||||
private final String TEST_COVERAGE_STATUS_2 = Allowed.ALLOWED.getKey();
|
||||
private final Long TEST_SESSION_ID_1 = 10007L;
|
||||
private final Long TEST_SESSION_ID_2 = 10008L;
|
||||
private final Long TEST_SESSION_ID_3 = 10009L;
|
||||
private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
|
||||
private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
|
||||
private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
|
||||
private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
|
||||
private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
|
||||
private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
|
||||
private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
|
||||
private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
|
||||
private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
|
||||
private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
|
||||
private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
|
||||
private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
|
||||
private final BigDecimal TEST_OPEN_BALANCE_1 = BigDecimal.valueOf(3L);
|
||||
private final BigDecimal TEST_CLOSE_BALANCE_1 = BigDecimal.valueOf(780L);
|
||||
private final BigDecimal TEST_OPEN_BALANCE_2 = BigDecimal.valueOf(2L);
|
||||
private final BigDecimal TEST_CLOSE_BALANCE_2 = BigDecimal.valueOf(890L);
|
||||
private final BigDecimal TEST_CREDIT_1 = BigDecimal.valueOf(777777L);
|
||||
private final BigDecimal TEST_CREDIT_2 = BigDecimal.valueOf(999999L);
|
||||
private final BigDecimal TEST_DEBIT_1 = BigDecimal.valueOf(77777L);
|
||||
private final BigDecimal TEST_DEBIT_2 = BigDecimal.valueOf(99999L);
|
||||
private final LocalDate TEST_START_CLEARING_DATE = LocalDate.now();
|
||||
private final LocalDate TEST_END_CLEARING_DATE = LocalDate.now();
|
||||
private Imdg<ExecutionFond> executionFondImdg;
|
||||
private Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private Imdg<Listing> listingImdg;
|
||||
private Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
private Imdg<Statement> statementImdg;
|
||||
private Imdg<STrades> sTradeImdg;
|
||||
@Autowired
|
||||
private ReportService reportService;
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider imdgProvider;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
private Producer<String, Object> producer;
|
||||
|
||||
private static int reportRequestCnt = 0;
|
||||
private static int reportRequestWithSessionIdCnt = 0;
|
||||
private static int reportRequestWithSessionIdListCnt = 0;
|
||||
private static int reportRequestWithPeriodCnt = 0;
|
||||
|
||||
@BeforeAll
|
||||
public static void createTestFolder() {
|
||||
outFolder = new File("out");
|
||||
outFolder.mkdir();
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
public static void deleteTestFolder() throws IOException {
|
||||
FileUtils.deleteDirectory(outFolder);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(1)
|
||||
public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws IOException, CsvValidationException {
|
||||
clearTestDir();
|
||||
final Long oldSessionIdDeposit = testExecutionDeposit.getSessionId();
|
||||
final Long oldSessionIdFond = testExecutionFond.getSessionId();
|
||||
|
||||
ReportRequestWithSessionId reportRequestWithSessionId = new ReportRequestWithSessionId();
|
||||
reportRequestWithSessionId.setReportId(ReportType.OPERATIONAL_LIABILITIES_CLAIMS.getKey());
|
||||
reportRequestWithSessionId.setSessionId(TEST_SESSION_ID_1);
|
||||
|
||||
testExecutionDeposit.setSessionId(TEST_SESSION_ID_1);
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
|
||||
executionDepositImdg.update(testExecutionDeposit);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequestWithSessionId, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
testExecutionDeposit.setSessionId(oldSessionIdDeposit);
|
||||
testExecutionFond.setSessionId(oldSessionIdFond);
|
||||
executionDepositImdg.update(testExecutionDeposit);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(2)
|
||||
public void createReportTest_PERIOD_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequestWithSessionIdList reportRequestWithPeriod = new ReportRequestWithSessionIdList();
|
||||
reportRequestWithPeriod.setReportId(ReportType.PERIOD_LIABILITIES_CLAIMS.getKey());
|
||||
reportRequestWithPeriod.setSessionIdList(Arrays.asList(testExecutionDeposit.getSessionId(), testExecutionFond.getSessionId()));
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequestWithPeriod, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID_LIST,
|
||||
reportRequestWithSessionIdListCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(3)
|
||||
public void createReportTest_SUMMARY_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportType.SUMMARY_LIABILITIES_CLAIMS.getKey());
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT,
|
||||
reportRequestCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(4)
|
||||
public void createReportTest_OPERATIONAL_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
final Long oldRegistrySessionId_1 = testRegistry_1.getSessionId();
|
||||
final Long oldRegistrySessionId_2 = testRegistry_2.getSessionId();
|
||||
testRegistry_1.setSessionId(TEST_SESSION_ID_3);
|
||||
testRegistry_2.setSessionId(TEST_SESSION_ID_3);
|
||||
registryImdg.update(testRegistry_1);
|
||||
registryImdg.update(testRegistry_2);
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.OPERATIONAL_MONEY_CHANGE.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
testRegistry_1.setSessionId(oldRegistrySessionId_1);
|
||||
testRegistry_2.setSessionId(oldRegistrySessionId_2);
|
||||
registryImdg.update(testRegistry_1);
|
||||
registryImdg.update(testRegistry_2);
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(5)
|
||||
public void createReportTest_PERIOD_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequestWithPeriod reportRequest = new ReportRequestWithPeriod();
|
||||
reportRequest.setReportId(ReportType.PERIOD_MONEY_CHANGE.getKey());
|
||||
reportRequest.setStartDate(TEST_START_CLEARING_DATE);
|
||||
reportRequest.setEndDate(TEST_END_CLEARING_DATE);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_PERIOD,
|
||||
reportRequestWithPeriodCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
public void createReportTest_SUMMARY_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportType.SUMMARY_MONEY_CHANGE.getKey());
|
||||
TestUtils.clearAllInImdg(registryImdg);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT,
|
||||
reportRequestCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
registryImdg.insert(testRegistryForCompanyId_1);
|
||||
registryImdg.insert(testRegistryForCompanyId_2);
|
||||
registryImdg.insert(tm_tRegistry_1);
|
||||
registryImdg.insert(om_tRegistry_1);
|
||||
registryImdg.insert(ts_tRegistry_1);
|
||||
registryImdg.insert(os_tRegistry_1);
|
||||
registryImdg.insert(tm_tRegistry_2);
|
||||
registryImdg.insert(om_tRegistry_2);
|
||||
registryImdg.insert(ts_tRegistry_2);
|
||||
registryImdg.insert(os_tRegistry_2);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(7)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_1() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
// TEST INFTYPE_1
|
||||
testExecutionFond.setTradingDate(LocalDate.now().minus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_1"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(8)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_2() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
// TEST INFTYPE_2
|
||||
testExecutionFond.setTradingDate(LocalDate.now());
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_2"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(9)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_3() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
// TEST INFTYPE_3
|
||||
testExecutionFond.setSettlementDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_3"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(10)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_4() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
// TEST INFTYPE_4
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_4"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(11)
|
||||
public void createReportTest_UNFULFILLED_DEAL_REPORT() throws IOException, CsvValidationException {
|
||||
clearTestDir();
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.UNFULFILLED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
final String oldSTradeSettleCode = testSTrade.getSettleCode();
|
||||
final String oldSTradeOperation = testSTrade.getOperation();
|
||||
testSTrade.setSettleCode(testExecutionFond.getSettlementCode());
|
||||
testSTrade.setOperation(testExecutionFond.getSide());
|
||||
sTradeImdg.update(testSTrade);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/unfulfilled_deal_report_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate"));
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
testSTrade.setSettleCode(oldSTradeSettleCode);
|
||||
testSTrade.setOperation(oldSTradeOperation);
|
||||
sTradeImdg.update(testSTrade);
|
||||
}
|
||||
|
||||
|
||||
private void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
|
||||
if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
|
||||
CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
|
||||
CSVReader expectedCSVReader = new CSVReaderBuilder(new FileReader(expectedFile)).withCSVParser(csvParser).build();
|
||||
CSVReader actualCSVReader = new CSVReaderBuilder(new FileReader(actualFile)).withCSVParser(csvParser).build();
|
||||
|
||||
Map<String, Integer> expectedValueForColumn = new HashMap<>();
|
||||
Map<String, Integer> actualValueForColumn = new HashMap<>();
|
||||
|
||||
String[] expectedHeaders = expectedCSVReader.readNext();
|
||||
String[] actualHeaders = actualCSVReader.readNext();
|
||||
assertEquals(expectedHeaders.length, actualHeaders.length);
|
||||
|
||||
for (int headerIdx = 0; headerIdx < expectedHeaders.length; headerIdx++) {
|
||||
String expectedHeader = expectedHeaders[headerIdx];
|
||||
String actualHeader = actualHeaders[headerIdx];
|
||||
if (!columnsForSkip.contains(expectedHeader)) expectedValueForColumn.put(expectedHeader, headerIdx);
|
||||
if (!columnsForSkip.contains(actualHeader)) actualValueForColumn.put(actualHeader, headerIdx);
|
||||
}
|
||||
|
||||
do {
|
||||
String[] expectedLines = expectedCSVReader.readNext();
|
||||
String[] actualLines = actualCSVReader.readNext();
|
||||
if (expectedLines == null || actualLines == null) {
|
||||
if (expectedLines == null && actualLines == null) {
|
||||
break;
|
||||
}
|
||||
Assertions.fail("expected and actual lines not equal");
|
||||
}
|
||||
for (String expectedHeader : expectedValueForColumn.keySet()) {
|
||||
int expectedIdx = expectedValueForColumn.get(expectedHeader);
|
||||
int actualIdx = actualValueForColumn.get(expectedHeader);
|
||||
String expected = expectedLines[expectedIdx];
|
||||
String actual = actualLines[actualIdx];
|
||||
assertEquals(expected, actual, expectedHeader);
|
||||
}
|
||||
} while (true);
|
||||
|
||||
expectedCSVReader.close();
|
||||
actualCSVReader.close();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
|
||||
Long TEST_EXECUTION_FOND_ID = 888L;
|
||||
testExecutionFond.setId(TEST_EXECUTION_FOND_ID);
|
||||
Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
|
||||
testExecutionFond.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_1);
|
||||
testExecutionFond.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_1);
|
||||
testExecutionFond.setTradingDate(TEST_TRADING_DATE_1);
|
||||
Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
|
||||
testExecutionFond.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
|
||||
testExecutionFond.setMarket(TEST_MARKET_1);
|
||||
testExecutionFond.setPrice(TEST_PRICE_1);
|
||||
testExecutionFond.setLots(TEST_LOTS_1);
|
||||
testExecutionFond.setQuantity(TEST_QUANTITY_1);
|
||||
testExecutionFond.setInterestAmount(TEST_INTEREST_AMOUNT_1);
|
||||
testExecutionFond.setSide(TEST_SIDE_1);
|
||||
String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
|
||||
testExecutionFond.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_1);
|
||||
Long TEST_COMPANY_ID_1 = 1007L;
|
||||
testExecutionFond.setCompanyId(TEST_COMPANY_ID_1);
|
||||
Long TEST_DURATION_1 = 2007L;
|
||||
testExecutionFond.setDuration(TEST_DURATION_1);
|
||||
String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
|
||||
testExecutionFond.setSecurityFullName(TEST_SECURITY_FULL_NAME_1);
|
||||
String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
|
||||
testExecutionFond.setSecuritySymbol(TEST_SECURITY_SYMBOL_1);
|
||||
Long TEST_SECURITY_ID_1 = 3007L;
|
||||
testExecutionFond.setSecurityId(TEST_SECURITY_ID_1);
|
||||
Long TEST_COUNTER_PARTY_ID_1 = 4007L;
|
||||
testExecutionFond.setCounterPartyId(TEST_COUNTER_PARTY_ID_1);
|
||||
testExecutionFond.setCoverageStatus(TEST_COVERAGE_STATUS_1);
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
|
||||
testExecutionFond.setClearingDate(TEST_CLEARING_DATE_1);
|
||||
Long TEST_EXCHANGE_ORDER_ID = 20007L;
|
||||
testExecutionFond.setExchangeOrderId(TEST_EXCHANGE_ORDER_ID);
|
||||
testExecutionFond.setSettlementAmount(TEST_SETTLEMENT_AMOUNT);
|
||||
String TEST_COMMENT = "test-comment";
|
||||
testExecutionFond.setComment(TEST_COMMENT);
|
||||
Long TEST_CLIENT_CODE_ID = 222222L;
|
||||
testExecutionFond.setClientCodeId(TEST_CLIENT_CODE_ID);
|
||||
String TEST_SETTLEMENT_CODE = "test-settlement-code";
|
||||
testExecutionFond.setSettlementCode(TEST_SETTLEMENT_CODE);
|
||||
testExecutionFond.setSettlementDate(TEST_SETTLEMENT_DATE);
|
||||
testExecutionFond.setExchangeExecutionMicroseconds(TEST_EXCHANGE_EXECUTION_MICROSECONDS);
|
||||
testExecutionFond.setCreated(Instant.now());
|
||||
|
||||
Long TEST_EXECUTION_DEPOSIT_ID = 777L;
|
||||
testExecutionDeposit.setId(TEST_EXECUTION_DEPOSIT_ID);
|
||||
Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
|
||||
testExecutionDeposit.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_2);
|
||||
testExecutionDeposit.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_2);
|
||||
testExecutionDeposit.setTradingDate(TEST_TRADING_DATE_2);
|
||||
Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
|
||||
testExecutionDeposit.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
|
||||
testExecutionDeposit.setMarket(TEST_MARKET_2);
|
||||
testExecutionDeposit.setPrice(TEST_PRICE_2);
|
||||
testExecutionDeposit.setLots(TEST_LOTS_2);
|
||||
testExecutionDeposit.setQuantity(TEST_QUANTITY_2);
|
||||
testExecutionDeposit.setInterestAmount(TEST_INTEREST_AMOUNT_2);
|
||||
testExecutionDeposit.setSide(TEST_SIDE_2);
|
||||
String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
|
||||
testExecutionDeposit.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_2);
|
||||
Long TEST_COMPANY_ID_2 = 1008L;
|
||||
testExecutionDeposit.setCompanyId(TEST_COMPANY_ID_2);
|
||||
Long TEST_DURATION_2 = 2008L;
|
||||
testExecutionDeposit.setDuration(TEST_DURATION_2);
|
||||
String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
|
||||
testExecutionDeposit.setSecurityFullName(TEST_SECURITY_FULL_NAME_2);
|
||||
String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
|
||||
testExecutionDeposit.setSecuritySymbol(TEST_SECURITY_SYMBOL_2);
|
||||
Long TEST_SECURITY_ID_2 = 3008L;
|
||||
testExecutionDeposit.setSecurityId(TEST_SECURITY_ID_2);
|
||||
Long TEST_COUNTER_PARTY_ID_2 = 4008L;
|
||||
testExecutionDeposit.setCounterPartyId(TEST_COUNTER_PARTY_ID_2);
|
||||
testExecutionDeposit.setCoverageStatus(TEST_COVERAGE_STATUS_2);
|
||||
testExecutionDeposit.setSessionId(TEST_SESSION_ID_2);
|
||||
testExecutionDeposit.setClearingDate(TEST_CLEARING_DATE_2);
|
||||
testExecutionDeposit.setFirstLegAmount(TEST_FIRST_LEG_AMOUNT);
|
||||
testExecutionDeposit.setSecondLegAmount(TEST_SECOND_LEG_AMOUNT);
|
||||
testExecutionDeposit.setFirstLegSettlementDate(TEST_FIRST_LEG_SETTLEMENT_DATE);
|
||||
testExecutionDeposit.setSecondLegSettlementDate(TEST_SECOND_LEG_SETTLEMENT_DATE);
|
||||
String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
|
||||
testExecutionDeposit.setFirstLegSettlementCode(TEST_FIRST_LEG_SETTLEMENT_CODE);
|
||||
String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
|
||||
testExecutionDeposit.setSecondLegSettlementCode(TEST_SECOND_LEG_SETTLEMENT_CODE);
|
||||
String TEST_CONTRACT = "test_contract";
|
||||
testExecutionDeposit.setContract(TEST_CONTRACT);
|
||||
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
executionFondImdg.insert(testExecutionFond);
|
||||
|
||||
executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
executionDepositImdg.insert(testExecutionDeposit);
|
||||
|
||||
testCompany_1.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
testCompany_1.setId(TEST_COMPANY_ID_1);
|
||||
String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
|
||||
testCompany_1.setFullName(TEST_COMPANY_FULLNAME_1);
|
||||
testCompany_2.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
testCompany_2.setId(TEST_COMPANY_ID_2);
|
||||
String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
|
||||
testCompany_2.setFullName(TEST_COMPANY_FULLNAME_2);
|
||||
testCompanyHouse.setId(1L);
|
||||
testCompanyHouse.setFullName("COMPANY_HOUSE");
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companyImdg.insert(testCompany_1);
|
||||
companyImdg.insert(testCompany_2);
|
||||
companyImdg.insert(testCompanyHouse);
|
||||
|
||||
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
|
||||
Long TEST_REGISTRY_ID_1 = 999L;
|
||||
testRegistry_1.setId(TEST_REGISTRY_ID_1);
|
||||
testRegistry_1.setCompanyId(TEST_COMPANY_ID_1);
|
||||
testRegistry_1.setSecurityId(TEST_SECURITY_ID_1);
|
||||
Long TEST_PAYMT_ID_1 = 222L;
|
||||
testRegistry_1.setPaymentId(TEST_PAYMT_ID_1);
|
||||
String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
|
||||
testRegistry_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
|
||||
Long TEST_MONEY_ACCOUNT_1 = 11L;
|
||||
testRegistry_1.setAccountId(TEST_MONEY_ACCOUNT_1);
|
||||
String TEST_REGISTRY_CODE_1 = "test-registry-code-1";
|
||||
testRegistry_1.setRegistryCode(TEST_REGISTRY_CODE_1);
|
||||
testRegistry_1.setOpenBalance(TEST_OPEN_BALANCE_1);
|
||||
testRegistry_1.setCloseBalance(TEST_CLOSE_BALANCE_1);
|
||||
testRegistry_1.setCredit(TEST_CREDIT_1);
|
||||
testRegistry_1.setDebit(TEST_DEBIT_1);
|
||||
testRegistry_1.setClearingDate(TEST_START_CLEARING_DATE);
|
||||
testRegistry_1.setUpdated(Instant.now());
|
||||
Long TEST_REGISTRY_ID_2 = 666L;
|
||||
testRegistry_2.setId(TEST_REGISTRY_ID_2);
|
||||
testRegistry_2.setCompanyId(TEST_COMPANY_ID_2);
|
||||
testRegistry_2.setSecurityId(TEST_SECURITY_ID_2);
|
||||
Long TEST_PAYMT_ID_2 = 333L;
|
||||
testRegistry_2.setPaymentId(TEST_PAYMT_ID_2);
|
||||
String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
|
||||
testRegistry_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
|
||||
Long TEST_MONEY_ACCOUNT_2 = 12L;
|
||||
testRegistry_2.setAccountId(TEST_MONEY_ACCOUNT_2);
|
||||
String TEST_REGISTRY_CODE_2 = "test-registry-code-2";
|
||||
testRegistry_2.setRegistryCode(TEST_REGISTRY_CODE_2);
|
||||
testRegistry_2.setOpenBalance(TEST_OPEN_BALANCE_2);
|
||||
testRegistry_2.setCloseBalance(TEST_CLOSE_BALANCE_2);
|
||||
testRegistry_2.setCredit(TEST_CREDIT_2);
|
||||
testRegistry_2.setDebit(TEST_DEBIT_2);
|
||||
testRegistry_2.setClearingDate(TEST_END_CLEARING_DATE);
|
||||
testRegistry_2.setUpdated(Instant.now());
|
||||
testRegistryForCompanyId_1.setCompanyId(TEST_COMPANY_ID_1);
|
||||
testRegistryForCompanyId_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
|
||||
testRegistryForCompanyId_1.setUpdated(Instant.now());
|
||||
testRegistryForCompanyId_2.setCompanyId(TEST_COMPANY_ID_2);
|
||||
testRegistryForCompanyId_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
|
||||
testRegistryForCompanyId_2.setUpdated(Instant.now());
|
||||
tm_tRegistry_1.setRegistryCode("TM_T");
|
||||
tm_tRegistry_1.setBalance(BigDecimal.valueOf(779L));
|
||||
tm_tRegistry_1.setUpdated(Instant.now());
|
||||
om_tRegistry_1.setRegistryCode("OM_T");
|
||||
om_tRegistry_1.setBalance(BigDecimal.valueOf(2L));
|
||||
om_tRegistry_1.setUpdated(Instant.now());
|
||||
ts_tRegistry_1.setRegistryCode("TS_T");
|
||||
ts_tRegistry_1.setBalance(BigDecimal.valueOf(889L));
|
||||
ts_tRegistry_1.setUpdated(Instant.now());
|
||||
os_tRegistry_1.setRegistryCode("OS_T");
|
||||
os_tRegistry_1.setBalance(BigDecimal.valueOf(1L));
|
||||
os_tRegistry_1.setUpdated(Instant.now());
|
||||
tm_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
om_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
ts_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
os_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
tm_tRegistry_2.setRegistryCode("TM_T");
|
||||
tm_tRegistry_2.setBalance(BigDecimal.valueOf(779L));
|
||||
tm_tRegistry_2.setUpdated(Instant.now());
|
||||
om_tRegistry_2.setRegistryCode("OM_T");
|
||||
om_tRegistry_2.setBalance(BigDecimal.valueOf(2L));
|
||||
om_tRegistry_2.setUpdated(Instant.now());
|
||||
ts_tRegistry_2.setRegistryCode("TS_T");
|
||||
ts_tRegistry_2.setBalance(BigDecimal.valueOf(889L));
|
||||
ts_tRegistry_2.setUpdated(Instant.now());
|
||||
os_tRegistry_2.setRegistryCode("OS_T");
|
||||
os_tRegistry_2.setBalance(BigDecimal.valueOf(1L));
|
||||
os_tRegistry_2.setUpdated(Instant.now());
|
||||
tm_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
om_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
ts_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
os_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
registryImdg.insert(testRegistryForCompanyId_1);
|
||||
registryImdg.insert(testRegistryForCompanyId_2);
|
||||
registryImdg.insert(tm_tRegistry_1);
|
||||
registryImdg.insert(om_tRegistry_1);
|
||||
registryImdg.insert(ts_tRegistry_1);
|
||||
registryImdg.insert(os_tRegistry_1);
|
||||
registryImdg.insert(tm_tRegistry_2);
|
||||
registryImdg.insert(om_tRegistry_2);
|
||||
registryImdg.insert(ts_tRegistry_2);
|
||||
registryImdg.insert(os_tRegistry_2);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
|
||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
testListing_1.setSecurityId(TEST_SECURITY_ID_1);
|
||||
testListing_1.setLotSize(TEST_LOT_SIZE_1);
|
||||
String TEST_TRADING_CURRENCY_1 = "test-trading-currency-1";
|
||||
testListing_1.setTradingCurrency(TEST_TRADING_CURRENCY_1);
|
||||
testListing_2.setSecurityId(TEST_SECURITY_ID_2);
|
||||
testListing_2.setLotSize(TEST_LOT_SIZE_2);
|
||||
String TEST_TRADING_CURRENCY_2 = "test-trading-currency-2";
|
||||
testListing_2.setTradingCurrency(TEST_TRADING_CURRENCY_2);
|
||||
listingImdg.insert(testListing_1);
|
||||
listingImdg.insert(testListing_2);
|
||||
|
||||
testFixedIncomeSecurity_1.setSecurityId(TEST_SECURITY_ID_1);
|
||||
testFixedIncomeSecurity_1.setNominalValue(TEST_NOMINAL_1);
|
||||
testFixedIncomeSecurity_1.setCoupon(TEST_COUPON_1);
|
||||
testFixedIncomeSecurity_2.setSecurityId(TEST_SECURITY_ID_2);
|
||||
testFixedIncomeSecurity_2.setNominalValue(TEST_NOMINAL_2);
|
||||
testFixedIncomeSecurity_2.setCoupon(TEST_COUPON_2);
|
||||
fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
|
||||
fixedIncomeSecurityImdg.insert(testFixedIncomeSecurity_1);
|
||||
fixedIncomeSecurityImdg.insert(testFixedIncomeSecurity_2);
|
||||
|
||||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
testTradingClearingRegistry_1.setId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
|
||||
testTradingClearingRegistry_1.setMoneyAccountId(TEST_MONEY_ACCOUNT_1);
|
||||
Long TEST_DEPO_ACCOUNT_1 = 13L;
|
||||
testTradingClearingRegistry_1.setDepoAccountId(TEST_DEPO_ACCOUNT_1);
|
||||
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_1);
|
||||
testTradingClearingRegistry_2.setId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
|
||||
testTradingClearingRegistry_2.setMoneyAccountId(TEST_MONEY_ACCOUNT_2);
|
||||
Long TEST_DEPO_ACCOUNT_2 = 14L;
|
||||
testTradingClearingRegistry_2.setDepoAccountId(TEST_DEPO_ACCOUNT_2);
|
||||
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_2);
|
||||
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
testStatement_1.setAddresseeId(TEST_COMPANY_ID_1);
|
||||
testStatement_1.setCreated(Instant.now());
|
||||
testStatement_2.setAddresseeId(TEST_COMPANY_ID_2);
|
||||
testStatement_2.setCreated(Instant.now());
|
||||
statementImdg.insert(testStatement_1);
|
||||
statementImdg.insert(testStatement_2);
|
||||
|
||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
testPaymentInstruction_1.setId(TEST_PAYMT_ID_1);
|
||||
testPaymentInstruction_1.setCreditLeg_direction(InOutDirection.out.getKey());
|
||||
testPaymentInstruction_1.setPaymentDate(Instant.now());
|
||||
testPaymentInstruction_2.setId(TEST_PAYMT_ID_2);
|
||||
testPaymentInstruction_2.setCreditLeg_direction(InOutDirection.out.getKey());
|
||||
testPaymentInstruction_2.setPaymentDate(Instant.now());
|
||||
paymentInstructionImdg.insert(testPaymentInstruction_1);
|
||||
paymentInstructionImdg.insert(testPaymentInstruction_2);
|
||||
|
||||
sTradeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
testSTrade.setTradeNum(testExecutionFond.getExchangeExecutionId());
|
||||
testSTrade.setOperation(testExecutionFond.getSide());
|
||||
String TEST_SETTLE_CODE = "test-settle-code";
|
||||
testSTrade.setSettleCode(TEST_SETTLE_CODE);
|
||||
String TEST_CLASS_CODE = "test-class-code";
|
||||
testSTrade.setClassCode(TEST_CLASS_CODE);
|
||||
sTradeImdg.insert(testSTrade);
|
||||
}
|
||||
|
||||
private void clearTestDir() throws IOException {
|
||||
FileUtils.deleteDirectory(outFolder);
|
||||
outFolder.mkdir();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","07.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","17.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","27.05.2023","17.05.2023","27.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","27.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
"888","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
"777","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","Y","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:10:50","77777","17.05.2023T12:10:50"
|
||||
"666","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:10:50","99999","17.05.2023T12:10:50"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
"888","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
"777","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023","Y","15.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:18:01","77777","17.05.2023T12:18:01"
|
||||
"666","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:18:01","99999","17.05.2023T12:18:01"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
888,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
777,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023",Y,"15.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:25:42","77777","17.05.2023T12:25:42"
|
||||
"666","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:25:42","99999","17.05.2023T12:25:42"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,settleCode
|
||||
"888","3007","777","07.05.2023","test-class-code"
|
||||
|
|
|
@ -135,6 +135,10 @@ public class TestUtils {
|
|||
return getJsonBaseRequest(accountRequest, id, ActionType.DELETE);
|
||||
}
|
||||
|
||||
public static <T> String getJsonStringForSystem(T request, long id) {
|
||||
return getJsonBaseRequest(request, id, ActionType.SYSTEM);
|
||||
}
|
||||
|
||||
private static <T> String getJsonBaseRequest(T accountRequest, long id, ActionType actionType) {
|
||||
BaseRequest<T> baseRequest = new BaseRequest<>();
|
||||
baseRequest.setRequestPayload(accountRequest);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package ru.spcex.platform.enumeration;
|
||||
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
/**
|
||||
* Идентификатор отчета
|
||||
* todo сделать для них dictionary
|
||||
*/
|
||||
public enum ReportType implements IEnumKey {
|
||||
OPERATIONAL_LIABILITIES_CLAIMS("operational-liabilities-claims"),
|
||||
OPERATIONAL_MONEY_CHANGE("operational-money-change"),
|
||||
SUMMARY_LIABILITIES_CLAIMS("summary-liabilities-claims"),
|
||||
SUMMARY_MONEY_CHANGE("summary-money-change"),
|
||||
PERIOD_LIABILITIES_CLAIMS("period-liabilities-claims"),
|
||||
PERIOD_MONEY_CHANGE("period-money-change"),
|
||||
EXECUTED_DEAL_REPORT("executed-deal-report"),
|
||||
UNFULFILLED_DEAL_REPORT("unfulfilled-deal-report"),
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
||||
ReportType(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue