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;
|
package ru.clearing.classes.statics.data.execution;
|
||||||
|
|
||||||
import ru.clearing.classes.objects.BusinessObject;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.interfaces.IExecution;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class ExecutionDeposit extends BusinessObject implements IExecution {
|
public class ExecutionDeposit extends ExecutionCommon {
|
||||||
private Long exchangeExecutionId;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
private Instant exchangeExecutionTime;
|
|
||||||
private LocalDate tradingDate;
|
|
||||||
private Long tradingClearingRegistryId;
|
|
||||||
private String market;
|
|
||||||
private BigDecimal price;
|
|
||||||
private BigDecimal lots;
|
|
||||||
private BigDecimal quantity;
|
|
||||||
private BigDecimal firstLegAmount;
|
private BigDecimal firstLegAmount;
|
||||||
private BigDecimal secondLegAmount;
|
private BigDecimal secondLegAmount;
|
||||||
private BigDecimal interestAmount;
|
|
||||||
private String side;
|
|
||||||
private String settlementCurrency;
|
|
||||||
private Long companyId;
|
|
||||||
private Long duration;
|
|
||||||
private LocalDate firstLegSettlementDate;
|
private LocalDate firstLegSettlementDate;
|
||||||
private LocalDate secondLegSettlementDate;
|
private LocalDate secondLegSettlementDate;
|
||||||
private String firstLegSettlementCode;
|
private String firstLegSettlementCode;
|
||||||
private String secondLegSettlementCode;
|
private String secondLegSettlementCode;
|
||||||
private String securityFullName;
|
|
||||||
private String securitySymbol;
|
|
||||||
private Long securityId;
|
|
||||||
private String contract;
|
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() {
|
public BigDecimal getFirstLegAmount() {
|
||||||
return firstLegAmount;
|
return firstLegAmount;
|
||||||
|
|
@ -116,46 +32,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
||||||
this.secondLegAmount = secondLegAmount;
|
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() {
|
public LocalDate getFirstLegSettlementDate() {
|
||||||
return firstLegSettlementDate;
|
return firstLegSettlementDate;
|
||||||
}
|
}
|
||||||
|
|
@ -188,30 +64,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
||||||
this.secondLegSettlementCode = secondLegSettlementCode;
|
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() {
|
public String getContract() {
|
||||||
return contract;
|
return contract;
|
||||||
}
|
}
|
||||||
|
|
@ -219,36 +71,4 @@ public class ExecutionDeposit extends BusinessObject implements IExecution {
|
||||||
public void setContract(String contract) {
|
public void setContract(String contract) {
|
||||||
this.contract = 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.ConstSerializable;
|
||||||
import ru.clearing.classes.objects.BusinessObject;
|
import ru.clearing.classes.objects.BusinessObject;
|
||||||
import ru.spcex.platform.classes.base.interfaces.IExecution;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -13,252 +12,70 @@ import java.time.LocalDate;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: EXECUTION_FOND
|
* DB table: EXECUTION_FOND
|
||||||
**/
|
**/
|
||||||
public class ExecutionFond extends BusinessObject implements IExecution {
|
public class ExecutionFond extends ExecutionCommon {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
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 Long exchangeOrderId;
|
||||||
private BigDecimal price;
|
|
||||||
private BigDecimal settlementAmount;
|
private BigDecimal settlementAmount;
|
||||||
private BigDecimal lots;
|
|
||||||
private BigDecimal quantity;
|
|
||||||
private Instant exchangeExecutionTime;
|
|
||||||
private Long duration;
|
|
||||||
private Long tradingClearingRegistryId;
|
|
||||||
private String comment;
|
private String comment;
|
||||||
private Long clientCodeId;
|
private Long clientCodeId;
|
||||||
private String settlementCode;
|
private String settlementCode;
|
||||||
private Long companyId;
|
|
||||||
private Long counterPartyId;
|
|
||||||
private String securityFullName;
|
|
||||||
private LocalDate settlementDate;
|
private LocalDate settlementDate;
|
||||||
private String settlementCurrency;
|
|
||||||
private Instant exchangeExecutionMicroseconds;
|
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() {
|
public Long getExchangeOrderId() {
|
||||||
return exchangeOrderId;
|
return exchangeOrderId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExchangeOrderId(Long value) {
|
public void setExchangeOrderId(Long exchangeOrderId) {
|
||||||
this.exchangeOrderId = value;
|
this.exchangeOrderId = exchangeOrderId;
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrice(BigDecimal value) {
|
|
||||||
this.price = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getSettlementAmount() {
|
public BigDecimal getSettlementAmount() {
|
||||||
return settlementAmount;
|
return settlementAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSettlementAmount(BigDecimal value) {
|
public void setSettlementAmount(BigDecimal settlementAmount) {
|
||||||
this.settlementAmount = value;
|
this.settlementAmount = settlementAmount;
|
||||||
}
|
|
||||||
|
|
||||||
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 String getComment() {
|
public String getComment() {
|
||||||
return comment;
|
return comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setComment(String value) {
|
public void setComment(String comment) {
|
||||||
this.comment = value;
|
this.comment = comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getClientCodeId() {
|
public Long getClientCodeId() {
|
||||||
return clientCodeId;
|
return clientCodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClientCodeId(Long value) {
|
public void setClientCodeId(Long clientCodeId) {
|
||||||
this.clientCodeId = value;
|
this.clientCodeId = clientCodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSettlementCode() {
|
public String getSettlementCode() {
|
||||||
return settlementCode;
|
return settlementCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSettlementCode(String value) {
|
public void setSettlementCode(String settlementCode) {
|
||||||
this.settlementCode = value;
|
this.settlementCode = settlementCode;
|
||||||
}
|
|
||||||
|
|
||||||
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 LocalDate getSettlementDate() {
|
public LocalDate getSettlementDate() {
|
||||||
return settlementDate;
|
return settlementDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSettlementDate(LocalDate value) {
|
public void setSettlementDate(LocalDate settlementDate) {
|
||||||
this.settlementDate = value;
|
this.settlementDate = settlementDate;
|
||||||
}
|
|
||||||
|
|
||||||
public String getSettlementCurrency() {
|
|
||||||
return settlementCurrency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSettlementCurrency(String value) {
|
|
||||||
this.settlementCurrency = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Instant getExchangeExecutionMicroseconds() {
|
public Instant getExchangeExecutionMicroseconds() {
|
||||||
return exchangeExecutionMicroseconds;
|
return exchangeExecutionMicroseconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExchangeExecutionMicroseconds(Instant value) {
|
public void setExchangeExecutionMicroseconds(Instant exchangeExecutionMicroseconds) {
|
||||||
this.exchangeExecutionMicroseconds = value;
|
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>
|
<artifactId>jackson-dataformat-xml</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- XML -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.thoughtworks.xstream</groupId>
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
<artifactId>xstream</artifactId>
|
<artifactId>xstream</artifactId>
|
||||||
<version>1.4.19</version>
|
<version>1.4.19</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- DOC -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.poi</groupId>
|
<groupId>org.apache.poi</groupId>
|
||||||
<artifactId>poi-ooxml</artifactId>
|
<artifactId>poi-ooxml</artifactId>
|
||||||
<version>5.1.0</version>
|
<version>5.1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- CSV -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.opencsv</groupId>
|
||||||
|
<artifactId>opencsv</artifactId>
|
||||||
|
<version>5.5.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- IMDG clearing system -->
|
<!-- IMDG clearing system -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.spcex.clearing</groupId>
|
<groupId>ru.spcex.clearing</groupId>
|
||||||
|
|
@ -83,6 +93,24 @@
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</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>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
package ru.spcex.clearing.reports;
|
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.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -10,11 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import ru.spcex.clearing.reports.config.ReportCmdParser;
|
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.QCommandExecutor;
|
||||||
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
|
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
|
||||||
import ru.spcex.clearing.reports.services.collector.ReportINACCNT_Collector;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class ReportsServiceApplication {
|
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 {
|
public class ReportsServiceSettings {
|
||||||
private HazelcastClientParams hazelcast;
|
private HazelcastClientParams hazelcast;
|
||||||
private KafkaConsumerSettings kafkaConsumer;
|
private KafkaConsumerSettings kafkaConsumer;
|
||||||
// private KafkaProducerSettings kafkaProducer;
|
private KafkaProducerSettings kafkaProducer;
|
||||||
private String reportModuleOut;
|
private String reportModuleOut;
|
||||||
|
|
||||||
public HazelcastClientParams getHazelcast() {
|
public HazelcastClientParams getHazelcast() {
|
||||||
|
|
@ -37,13 +37,13 @@ public class ReportsServiceSettings {
|
||||||
this.kafkaConsumer = kafkaConsumer;
|
this.kafkaConsumer = kafkaConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public KafkaProducerSettings getKafkaProducer() {
|
public KafkaProducerSettings getKafkaProducer() {
|
||||||
// return kafkaProducer;
|
return kafkaProducer;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
|
public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
|
||||||
// this.kafkaProducer = kafkaProducer;
|
this.kafkaProducer = kafkaProducer;
|
||||||
// }
|
}
|
||||||
|
|
||||||
public String getReportModuleOut() {
|
public String getReportModuleOut() {
|
||||||
return reportModuleOut;
|
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 {
|
public abstract class AbstractReport {
|
||||||
protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
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");
|
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 {
|
public enum ReportId implements IEnumKey {
|
||||||
PA_B("REPPA.B"), PA_IV("REPPA.IV"),
|
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_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_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;
|
private final String key;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public abstract class ReportWithClearingStatus extends ReportWithPeriod {
|
public abstract class ReportWithClearingStatus extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("clearingStatus")
|
@XStreamAlias("clearingStatus")
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,23 @@ package ru.spcex.clearing.reports.reports;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
|
||||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Шапка для отчётов, содержащих startDate и endDate
|
* Шапка для отчётов, содержащих startDate и endDate
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public abstract class ReportWithPeriod extends AbstractReport {
|
public abstract class ReportWithPeriod extends AbstractReport {
|
||||||
|
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("startDate")
|
@XStreamAlias("startDate")
|
||||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
protected LocalDate startDate;
|
protected LocalDate startDate;
|
||||||
|
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("endDate")
|
@XStreamAlias("endDate")
|
||||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
protected LocalDate endDate;
|
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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("netPositionBank")
|
@XStreamAlias("netPositionBank")
|
||||||
|
@Deprecated
|
||||||
public class ReportPA_B extends ReportWithPeriod {
|
public class ReportPA_B extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("clearingMemberCategory")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("netPositionInitiator")
|
@XStreamAlias("netPositionInitiator")
|
||||||
|
@Deprecated
|
||||||
public class ReportPA_IV extends ReportWithPeriod {
|
public class ReportPA_IV extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("clearingMemberCategory")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
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.AbstractReport;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
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.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -15,13 +12,14 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("incomingDocuments")
|
@XStreamAlias("incomingDocuments")
|
||||||
|
@Deprecated
|
||||||
public class ReportDOCIN extends AbstractReport {
|
public class ReportDOCIN extends AbstractReport {
|
||||||
/**
|
/**
|
||||||
* Дата в формате: dd.MM.yyyy
|
* Дата в формате: dd.MM.yyyy
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("date")
|
@XStreamAlias("date")
|
||||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
private final LocalDate date;
|
private final LocalDate date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -29,7 +27,7 @@ public class ReportDOCIN extends AbstractReport {
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("time")
|
@XStreamAlias("time")
|
||||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||||
private final LocalTime time;
|
private final LocalTime time;
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
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.AbstractReport;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
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.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -15,13 +12,14 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("incomingDocuments")
|
@XStreamAlias("incomingDocuments")
|
||||||
|
@Deprecated
|
||||||
public class ReportDOCOUT extends AbstractReport {
|
public class ReportDOCOUT extends AbstractReport {
|
||||||
/**
|
/**
|
||||||
* Дата в формате: dd.MM.yyyy
|
* Дата в формате: dd.MM.yyyy
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("date")
|
@XStreamAlias("date")
|
||||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
private final LocalDate date;
|
private final LocalDate date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -29,7 +27,7 @@ public class ReportDOCOUT extends AbstractReport {
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("time")
|
@XStreamAlias("time")
|
||||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||||
private final LocalTime time;
|
private final LocalTime time;
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
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.AbstractReport;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
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.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -15,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("accountBalanceInfo")
|
@XStreamAlias("accountBalanceInfo")
|
||||||
|
@Deprecated
|
||||||
public class ReportINACCNT extends AbstractReport {
|
public class ReportINACCNT extends AbstractReport {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("clearingMemberCategory")
|
@XStreamAlias("clearingMemberCategory")
|
||||||
|
|
@ -25,7 +23,7 @@ public class ReportINACCNT extends AbstractReport {
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("date")
|
@XStreamAlias("date")
|
||||||
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
private final LocalDate date;
|
private final LocalDate date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -33,7 +31,7 @@ public class ReportINACCNT extends AbstractReport {
|
||||||
*/
|
*/
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("time")
|
@XStreamAlias("time")
|
||||||
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||||
private final LocalTime time;
|
private final LocalTime time;
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -14,6 +14,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilities")
|
@XStreamAlias("clearedLiabilities")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -10,6 +10,7 @@ import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilitiesTotal")
|
@XStreamAlias("clearedLiabilitiesTotal")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
||||||
@XStreamAlias("rows")
|
@XStreamAlias("rows")
|
||||||
private Info_0420315_P2 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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingServiceStatus")
|
@XStreamAlias("clearingServiceStatus")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420317 extends ReportWithPeriod {
|
public class ReportBR_0420317 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -13,6 +13,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("unfundedLiabilities")
|
@XStreamAlias("unfundedLiabilities")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420318 extends ReportWithClearingStatus {
|
public class ReportBR_0420318 extends ReportWithClearingStatus {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("accountTransactionLiabilities")
|
@XStreamAlias("accountTransactionLiabilities")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
|
public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -11,6 +11,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("accountTransactionTurnover")
|
@XStreamAlias("accountTransactionTurnover")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420314_P2 extends ReportWithPeriod {
|
public class ReportBR_0420314_P2 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -11,6 +11,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage1")
|
@XStreamAlias("clearingCoverage1")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P1 extends ReportWithPeriod {
|
public class ReportBR_0420312_P1 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage10")
|
@XStreamAlias("clearingCoverage10")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P10 extends ReportWithPeriod {
|
public class ReportBR_0420312_P10 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage2")
|
@XStreamAlias("clearingCoverage2")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P2 extends ReportWithPeriod {
|
public class ReportBR_0420312_P2 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage3")
|
@XStreamAlias("clearingCoverage3")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P3 extends ReportWithPeriod {
|
public class ReportBR_0420312_P3 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage4")
|
@XStreamAlias("clearingCoverage4")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P4 extends ReportWithPeriod {
|
public class ReportBR_0420312_P4 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage5")
|
@XStreamAlias("clearingCoverage5")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P5 extends ReportWithPeriod {
|
public class ReportBR_0420312_P5 extends ReportWithPeriod {
|
||||||
|
|
||||||
@XStreamAsAttribute
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage6")
|
@XStreamAlias("clearingCoverage6")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P6 extends ReportWithPeriod {
|
public class ReportBR_0420312_P6 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage7")
|
@XStreamAlias("clearingCoverage7")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P7 extends ReportWithPeriod {
|
public class ReportBR_0420312_P7 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage8")
|
@XStreamAlias("clearingCoverage8")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P8 extends ReportWithPeriod {
|
public class ReportBR_0420312_P8 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage9")
|
@XStreamAlias("clearingCoverage9")
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P9 extends ReportWithPeriod {
|
public class ReportBR_0420312_P9 extends ReportWithPeriod {
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@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.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public abstract class FileReportBuilder {
|
public abstract class FileReportBuilder {
|
||||||
protected final Class<? extends AbstractReport> reportClass;
|
protected final Class<? extends AbstractReport> reportClass;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class XMLReportBuilder extends FileReportBuilder {
|
public class XMLReportBuilder extends FileReportBuilder {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
protected final XStream xStream;
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -20,6 +20,7 @@ import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -20,6 +20,7 @@ import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.SimpleReportCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -17,6 +17,7 @@ import java.time.LocalTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.SimpleReportCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -17,6 +17,7 @@ import java.time.LocalTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.ReportForClearingCodeCollector;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -19,6 +19,7 @@ import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
||||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
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.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.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.liabilities.LiabilitiesClaimsAssets;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Listing;
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ReportWithPeriodCollector;
|
||||||
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||||
import ru.spcex.platform.enumeration.Market;
|
import ru.spcex.platform.enumeration.Market;
|
||||||
|
|
@ -22,6 +23,7 @@ import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420315_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420315_P1> {
|
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());
|
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;
|
package ru.spcex.clearing.reports.services.collector.bt.bt_17_1;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2;
|
import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P2;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector<ReportBR_0420315_P2> {
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector<ReportBR_0420315_P2> {
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) {
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
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) {
|
@Override
|
||||||
validateDateRange(startDate, endDate);
|
public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
long liabilitiesAmount;
|
|
||||||
BigDecimal contractorQty = BigDecimal.ZERO;
|
long liabilitiesAmount;
|
||||||
{
|
BigDecimal contractorQty = BigDecimal.ZERO;
|
||||||
HashSet<String> collectedToSumm = new HashSet<>();
|
{
|
||||||
for (LiabilitiesClaimsAssets lContract : liabilities) {
|
HashSet<String> collectedToSumm = new HashSet<>();
|
||||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
for (LiabilitiesClaimsAssets lContract : liabilities) {
|
||||||
collectedToSumm.add(lContract.getContract());
|
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
||||||
contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity());
|
collectedToSumm.add(lContract.getContract());
|
||||||
}
|
contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity());
|
||||||
}
|
}
|
||||||
liabilitiesAmount = collectedToSumm.size();
|
}
|
||||||
}
|
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),
|
ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate);
|
||||||
toString(liabilitiesAmount)));
|
reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty),
|
||||||
|
toString(liabilitiesAmount)));
|
||||||
return reportBR_0420315_p2;
|
|
||||||
}
|
return reportBR_0420315_p2;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420315_P2> getReportClass() {
|
@Override
|
||||||
return ReportBR_0420315_P2.class;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -20,6 +20,7 @@ import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420317_Collector extends ReportWithPeriodCollector<ReportBR_0420317> {
|
public class ReportBR_0420317_Collector extends ReportWithPeriodCollector<ReportBR_0420317> {
|
||||||
private Imdg<Company> companyImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<Relation> relationImdg;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.Company;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
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.LiabilitiesClaimsAssets;
|
||||||
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ReportWithPeriodCollector;
|
||||||
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
@ -22,6 +23,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420318_Collector extends ReportWithPeriodCollector<ReportBR_0420318> {
|
public class ReportBR_0420318_Collector extends ReportWithPeriodCollector<ReportBR_0420318> {
|
||||||
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
|
|
@ -1,99 +1,101 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.Map;
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
/**
|
|
||||||
* accountTransactionLiabilities
|
/**
|
||||||
*/
|
* accountTransactionLiabilities
|
||||||
@Component
|
*/
|
||||||
public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P1> {
|
@Component
|
||||||
private Imdg<Company> companyImdg;
|
@Deprecated
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P1> {
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||||
|
|
||||||
@Autowired
|
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
||||||
public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) {
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.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(),
|
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||||
"companyId", companyId
|
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
));
|
"companySymbol", docType.getKey(),
|
||||||
return companySymbol;
|
"companyId", companyId
|
||||||
}
|
));
|
||||||
|
return companySymbol;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
@Override
|
||||||
|
public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR",
|
validateDateRange(startDate, endDate);
|
||||||
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
|
||||||
);
|
ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR",
|
||||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
||||||
|
);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
||||||
|
|
||||||
for (LiabilitiesClaimsAssets liability: liabilities) {
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
||||||
final Long companyId = liability.getCompanyId();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
for (LiabilitiesClaimsAssets liability: liabilities) {
|
||||||
if (company == null) {
|
final Long companyId = liability.getCompanyId();
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
continue;
|
if (company == null) {
|
||||||
}
|
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
continue;
|
||||||
String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory);
|
}
|
||||||
|
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
||||||
CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId());
|
String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory);
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId());
|
||||||
|
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||||
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1(
|
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||||
toString(company.getClearingCode()),
|
|
||||||
toString(companySymbolCntr == null? null : companySymbolCntr.getId()),
|
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1(
|
||||||
toString(company.getFullName()),
|
toString(company.getClearingCode()),
|
||||||
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
toString(companySymbolCntr == null? null : companySymbolCntr.getId()),
|
||||||
toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()),
|
toString(company.getFullName()),
|
||||||
toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить
|
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
||||||
toString(liability.getRefundPaymentId()),
|
toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()),
|
||||||
toString(liability.getTradingDate()),
|
toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить
|
||||||
toString(liability.getLiabilitiesQuantity())
|
toString(liability.getRefundPaymentId()),
|
||||||
);
|
toString(liability.getTradingDate()),
|
||||||
reportBR_0420312P1.getRows().add(info_0420314P1);
|
toString(liability.getLiabilitiesQuantity())
|
||||||
}
|
);
|
||||||
|
reportBR_0420312P1.getRows().add(info_0420314P1);
|
||||||
return reportBR_0420312P1;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P1;
|
||||||
@Override
|
}
|
||||||
public Class<ReportBR_0420314_P1> getReportClass() {
|
|
||||||
return ReportBR_0420314_P1.class;
|
@Override
|
||||||
}
|
public Class<ReportBR_0420314_P1> getReportClass() {
|
||||||
}
|
return ReportBR_0420314_P1.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,129 +1,131 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P2;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
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.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
/**
|
|
||||||
* accountTransactionLiabilities
|
/**
|
||||||
*/
|
* accountTransactionLiabilities
|
||||||
@Component
|
*/
|
||||||
public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P2> {
|
@Component
|
||||||
private Imdg<Company> companyImdg;
|
@Deprecated
|
||||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P2> {
|
||||||
private Imdg<AccountBalance> accountBalanceImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||||
|
private Imdg<AccountBalance> accountBalanceImdg;
|
||||||
@Autowired
|
private Imdg<ProfileDocument> profileDocumentImdg;
|
||||||
public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
@Autowired
|
||||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) {
|
||||||
accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.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);
|
Collection<PaymentInstruction> searchPaymentInstruction(LocalDate startDate, LocalDate endDate) {
|
||||||
Instant dateTimeHi = toInstantEndDay(endDate);
|
ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder();
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi));
|
Instant dateTimeLo = toInstantStartDay(startDate);
|
||||||
Collection<PaymentInstruction> paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p);
|
Instant dateTimeHi = toInstantEndDay(endDate);
|
||||||
return paymentInstructionsAll;
|
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);
|
@Override
|
||||||
|
public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate,
|
validateDateRange(startDate, endDate);
|
||||||
"", "BR"
|
|
||||||
);
|
ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate,
|
||||||
|
"", "BR"
|
||||||
Collection<PaymentInstruction> paymentInstructionsAll = searchPaymentInstruction(startDate, endDate);
|
);
|
||||||
|
|
||||||
Map<Long, List<PaymentInstruction>> companyIdPyPaymtInstruction =
|
Collection<PaymentInstruction> paymentInstructionsAll = searchPaymentInstruction(startDate, endDate);
|
||||||
MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId);
|
|
||||||
|
Map<Long, List<PaymentInstruction>> companyIdPyPaymtInstruction =
|
||||||
for (Map.Entry<Long, List<PaymentInstruction>> entry : companyIdPyPaymtInstruction.entrySet()) {
|
MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId);
|
||||||
final Long companyId = entry.getKey();
|
|
||||||
List<PaymentInstruction> paymentInstructionsByCompany = entry.getValue();
|
for (Map.Entry<Long, List<PaymentInstruction>> entry : companyIdPyPaymtInstruction.entrySet()) {
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
final Long companyId = entry.getKey();
|
||||||
if (company == null) {
|
List<PaymentInstruction> paymentInstructionsByCompany = entry.getValue();
|
||||||
log.warn("Company not found, id={}", companyId);
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
continue;
|
if (company == null) {
|
||||||
}
|
log.warn("Company not found, id={}", companyId);
|
||||||
ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of(
|
continue;
|
||||||
"companyId", companyId,
|
}
|
||||||
"documentType", DocumentTypes.cntr.getKey()
|
ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
));
|
"companyId", companyId,
|
||||||
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of(
|
"documentType", DocumentTypes.cntr.getKey()
|
||||||
"accountType", AccountType.Clrn.getKey(),
|
));
|
||||||
"companyId", companyId
|
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
));
|
"accountType", AccountType.Clrn.getKey(),
|
||||||
|
"companyId", companyId
|
||||||
String documentTypeStr = null;
|
));
|
||||||
if (profileDocumentCntr != null) {
|
|
||||||
documentTypeStr = profileDocumentCntr.getNumber();
|
String documentTypeStr = null;
|
||||||
if (profileDocumentCntr.getValidFromDate() != null) {
|
if (profileDocumentCntr != null) {
|
||||||
if (StringUtils.isEmpty(documentTypeStr)) {
|
documentTypeStr = profileDocumentCntr.getNumber();
|
||||||
documentTypeStr = "";
|
if (profileDocumentCntr.getValidFromDate() != null) {
|
||||||
} else {
|
if (StringUtils.isEmpty(documentTypeStr)) {
|
||||||
documentTypeStr += " ";
|
documentTypeStr = "";
|
||||||
}
|
} else {
|
||||||
documentTypeStr += toString(profileDocumentCntr.getValidFromDate());
|
documentTypeStr += " ";
|
||||||
}
|
}
|
||||||
}
|
documentTypeStr += toString(profileDocumentCntr.getValidFromDate());
|
||||||
|
}
|
||||||
BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream()
|
}
|
||||||
.map(PaymentInstruction::getCreditLeg_amount)
|
|
||||||
.filter(Objects::nonNull)
|
BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream()
|
||||||
.reduce(BigDecimal::add)
|
.map(PaymentInstruction::getCreditLeg_amount)
|
||||||
.orElse(BigDecimal.ZERO);
|
.filter(Objects::nonNull)
|
||||||
BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream()
|
.reduce(BigDecimal::add)
|
||||||
.map(PaymentInstruction::getDebitLeg_amount)
|
.orElse(BigDecimal.ZERO);
|
||||||
.filter(Objects::nonNull)
|
BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream()
|
||||||
.reduce(BigDecimal::add)
|
.map(PaymentInstruction::getDebitLeg_amount)
|
||||||
.orElse(BigDecimal.ZERO);
|
.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),
|
ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2(
|
||||||
toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()),
|
toString(company.getClearingCode()),
|
||||||
toString(paymentInstruction_creditLeg_amount),
|
toString(documentTypeStr),
|
||||||
toString(paymentInstructiont_debitLeg_amount),
|
toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()),
|
||||||
toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount())
|
toString(paymentInstruction_creditLeg_amount),
|
||||||
);
|
toString(paymentInstructiont_debitLeg_amount),
|
||||||
|
toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount())
|
||||||
reportBR_0420312P2.getRows().add(info_0420314P2);
|
);
|
||||||
}
|
|
||||||
|
reportBR_0420312P2.getRows().add(info_0420314P2);
|
||||||
return reportBR_0420312P2;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P2;
|
||||||
@Override
|
}
|
||||||
public Class<ReportBR_0420314_P2> getReportClass() {
|
|
||||||
return ReportBR_0420314_P2.class;
|
@Override
|
||||||
}
|
public Class<ReportBR_0420314_P2> getReportClass() {
|
||||||
}
|
return ReportBR_0420314_P2.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,48 +1,49 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P10;
|
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P10;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P10> {
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P10> {
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) {
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
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) {
|
@Override
|
||||||
validateDateRange(startDate, endDate);
|
public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||||
.filter(Objects::nonNull)
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
.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_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate);
|
||||||
reportBR_0420312P10.getRows().add(reportInfo);
|
ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum));
|
||||||
|
reportBR_0420312P10.getRows().add(reportInfo);
|
||||||
return reportBR_0420312P10;
|
|
||||||
}
|
return reportBR_0420312P10;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P10> getReportClass() {
|
@Override
|
||||||
return ReportBR_0420312_P10.class;
|
public Class<ReportBR_0420312_P10> getReportClass() {
|
||||||
}
|
return ReportBR_0420312_P10.class;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,83 +1,85 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
@Component
|
|
||||||
public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P1> {
|
@Component
|
||||||
private final Imdg<Company> companyImdg;
|
@Deprecated
|
||||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P1> {
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
@Autowired
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) {
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.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(),
|
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||||
"companyId", companyId
|
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
));
|
"companySymbol", docType.getKey(),
|
||||||
return companySymbol;
|
"companyId", companyId
|
||||||
}
|
));
|
||||||
|
return companySymbol;
|
||||||
@Override
|
}
|
||||||
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
@Override
|
||||||
|
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
|
validateDateRange(startDate, endDate);
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||||
if (company == null) {
|
final Long companyId = companyEntry.getKey();
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
continue;
|
if (company == null) {
|
||||||
}
|
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
continue;
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
}
|
||||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
||||||
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
|
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||||
toString(company.getClearingCode()),
|
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
||||||
toString(companyId),
|
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
|
||||||
toString(company.getFullName()),
|
toString(company.getClearingCode()),
|
||||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
toString(companyId),
|
||||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
toString(company.getFullName()),
|
||||||
toString(company.getProfile().getCountryCode()),
|
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||||
toString(clearingMemberCategory));
|
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||||
reportBR_0420312P1.getRows().add(info_0420312_p1);
|
toString(company.getProfile().getCountryCode()),
|
||||||
}
|
toString(clearingMemberCategory));
|
||||||
|
reportBR_0420312P1.getRows().add(info_0420312_p1);
|
||||||
return reportBR_0420312P1;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P1;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P1> getReportClass() {
|
|
||||||
return ReportBR_0420312_P1.class;
|
@Override
|
||||||
}
|
public Class<ReportBR_0420312_P1> getReportClass() {
|
||||||
}
|
return ReportBR_0420312_P1.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,61 +1,63 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P2;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
import java.math.BigDecimal;
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
@Component
|
|
||||||
public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P2> {
|
@Component
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
@Deprecated
|
||||||
|
public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P2> {
|
||||||
@Autowired
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
@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);
|
@Override
|
||||||
|
public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR");
|
validateDateRange(startDate, endDate);
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR");
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||||
|
final Long companyId = companyEntry.getKey();
|
||||||
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2(
|
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||||
toString(companyId),
|
|
||||||
toString(liabilitiesQuantitySum)
|
ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2(
|
||||||
);
|
toString(companyId),
|
||||||
reportBR_0420312P1.getRows().add(info_0420312_p2);
|
toString(liabilitiesQuantitySum)
|
||||||
}
|
);
|
||||||
|
reportBR_0420312P1.getRows().add(info_0420312_p2);
|
||||||
return reportBR_0420312P1;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P1;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P2> getReportClass() {
|
|
||||||
return ReportBR_0420312_P2.class;
|
@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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ReportWithPeriodCollector;
|
||||||
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
|
@ -17,6 +18,7 @@ import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> {
|
public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> {
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
|
|
||||||
|
|
@ -1,48 +1,49 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P4;
|
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P4;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P4> {
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P4> {
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) {
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
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) {
|
@Override
|
||||||
validateDateRange(startDate, endDate);
|
public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||||
.filter(Objects::nonNull)
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
.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_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate);
|
||||||
reportBR_0420312P4.getRows().add(reportInfo);
|
ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum));
|
||||||
|
reportBR_0420312P4.getRows().add(reportInfo);
|
||||||
return reportBR_0420312P4;
|
|
||||||
}
|
return reportBR_0420312P4;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P4> getReportClass() {
|
@Override
|
||||||
return ReportBR_0420312_P4.class;
|
public Class<ReportBR_0420312_P4> getReportClass() {
|
||||||
}
|
return ReportBR_0420312_P4.class;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,48 +1,49 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P5;
|
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P5;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P5> {
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P5> {
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) {
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
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) {
|
@Override
|
||||||
validateDateRange(startDate, endDate);
|
public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||||
.filter(Objects::nonNull)
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
.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_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate);
|
||||||
reportBR_0420312P5.getRows().add(reportInfo);
|
ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum));
|
||||||
|
reportBR_0420312P5.getRows().add(reportInfo);
|
||||||
return reportBR_0420312P5;
|
|
||||||
}
|
return reportBR_0420312P5;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P5> getReportClass() {
|
@Override
|
||||||
return ReportBR_0420312_P5.class;
|
public Class<ReportBR_0420312_P5> getReportClass() {
|
||||||
}
|
return ReportBR_0420312_P5.class;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,48 +1,49 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P6;
|
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P6;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P6> {
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P6> {
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) {
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
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) {
|
@Override
|
||||||
validateDateRange(startDate, endDate);
|
public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
||||||
.filter(Objects::nonNull)
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
.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_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate);
|
||||||
reportBR_0420312P5.getRows().add(reportInfo);
|
ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum));
|
||||||
|
reportBR_0420312P5.getRows().add(reportInfo);
|
||||||
return reportBR_0420312P5;
|
|
||||||
}
|
return reportBR_0420312P5;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P6> getReportClass() {
|
@Override
|
||||||
return ReportBR_0420312_P6.class;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.clearing.reports.services.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -15,6 +15,7 @@ import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class ReportBR_0420312_P7_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P7> {
|
public class ReportBR_0420312_P7_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P7> {
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
|
|
||||||
|
|
@ -1,98 +1,100 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
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.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P8;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
@Component
|
|
||||||
public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P8> {
|
@Component
|
||||||
private Imdg<Company> companyImdg;
|
@Deprecated
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P8> {
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||||
public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) {
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.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(),
|
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
||||||
"companyId", companyId
|
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
));
|
"companySymbol", docType.getKey(),
|
||||||
return companySymbol;
|
"companyId", companyId
|
||||||
}
|
));
|
||||||
|
return companySymbol;
|
||||||
@Override
|
}
|
||||||
public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
@Override
|
||||||
|
public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate);
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||||
if (company == null) {
|
final Long companyId = companyEntry.getKey();
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
continue;
|
if (company == null) {
|
||||||
}
|
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
continue;
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
}
|
||||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
||||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
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()) {
|
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||||
String currencyCode = currencyEntry.getKey();
|
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||||
if (currencyId == null) {
|
String currencyCode = currencyEntry.getKey();
|
||||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||||
}
|
if (currencyId == null) {
|
||||||
ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8(
|
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||||
toString(currencyId),
|
}
|
||||||
toString(companyId),
|
ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8(
|
||||||
toString(company.getFullName()),
|
toString(currencyId),
|
||||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
toString(companyId),
|
||||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
toString(company.getFullName()),
|
||||||
toString(company.getProfile().getCountryCode()),
|
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
||||||
toString(clearingMemberCategory)
|
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
||||||
);
|
toString(company.getProfile().getCountryCode()),
|
||||||
reportBR_0420312P8.getRows().add(info_0420312_p8);
|
toString(clearingMemberCategory)
|
||||||
}
|
);
|
||||||
}
|
reportBR_0420312P8.getRows().add(info_0420312_p8);
|
||||||
|
}
|
||||||
return reportBR_0420312P8;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P8;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P8> getReportClass() {
|
|
||||||
return ReportBR_0420312_P8.class;
|
@Override
|
||||||
}
|
public Class<ReportBR_0420312_P8> getReportClass() {
|
||||||
}
|
return ReportBR_0420312_P8.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,80 +1,82 @@
|
||||||
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P9;
|
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.ReportWithPeriodCollector;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
import java.math.BigDecimal;
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
@Component
|
|
||||||
public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P9> {
|
@Component
|
||||||
private Imdg<Company> companyImdg;
|
@Deprecated
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P9> {
|
||||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
private Imdg<Company> companyImdg;
|
||||||
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
@Autowired
|
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
||||||
public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
@Autowired
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) {
|
||||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
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);
|
@Override
|
||||||
|
public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate);
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||||
if (company == null) {
|
final Long companyId = companyEntry.getKey();
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
continue;
|
if (company == null) {
|
||||||
}
|
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
continue;
|
||||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
}
|
||||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
||||||
String currencyCode = currencyEntry.getKey();
|
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
||||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
||||||
if (currencyId == null) {
|
String currencyCode = currencyEntry.getKey();
|
||||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
||||||
}
|
if (currencyId == null) {
|
||||||
BigDecimal sumOfLiabilities = currencyEntry.getValue().stream()
|
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
}
|
||||||
.filter(Objects::nonNull)
|
BigDecimal sumOfLiabilities = currencyEntry.getValue().stream()
|
||||||
.reduce(BigDecimal::add)
|
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
||||||
.orElse(BigDecimal.ZERO);
|
.filter(Objects::nonNull)
|
||||||
ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9(
|
.reduce(BigDecimal::add)
|
||||||
toString(currencyId),
|
.orElse(BigDecimal.ZERO);
|
||||||
toString(companyId),
|
ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9(
|
||||||
toString(currencyCode),
|
toString(currencyId),
|
||||||
toString(sumOfLiabilities)
|
toString(companyId),
|
||||||
);
|
toString(currencyCode),
|
||||||
reportBR_0420312P9.getRows().add(info_0420312_p9);
|
toString(sumOfLiabilities)
|
||||||
}
|
);
|
||||||
}
|
reportBR_0420312P9.getRows().add(info_0420312_p9);
|
||||||
|
}
|
||||||
return reportBR_0420312P9;
|
}
|
||||||
}
|
|
||||||
|
return reportBR_0420312P9;
|
||||||
@Override
|
}
|
||||||
public Class<ReportBR_0420312_P9> getReportClass() {
|
|
||||||
return ReportBR_0420312_P9.class;
|
@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.bootstrap-servers=localhost:9092
|
||||||
reports-service.kafka-consumer.group-id=dev-group-balance-service
|
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.linger-ms=1
|
||||||
reports-service.kafka-consumer.buffer-memory=33554432
|
reports-service.kafka-consumer.buffer-memory=33554432
|
||||||
|
|
||||||
#reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
||||||
#reports-service.kafka-producer.acks=all
|
reports-service.kafka-producer.acks=all
|
||||||
#reports-service.kafka-producer.retries=0
|
reports-service.kafka-producer.retries=0
|
||||||
#reports-service.kafka-producer.batch-size=16384
|
reports-service.kafka-producer.batch-size=16384
|
||||||
#reports-service.kafka-producer.linger-ms=1
|
reports-service.kafka-producer.linger-ms=1
|
||||||
#reports-service.kafka-producer.buffer-memory=33554432
|
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.ReportModuleOut=./report_out
|
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);
|
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) {
|
private static <T> String getJsonBaseRequest(T accountRequest, long id, ActionType actionType) {
|
||||||
BaseRequest<T> baseRequest = new BaseRequest<>();
|
BaseRequest<T> baseRequest = new BaseRequest<>();
|
||||||
baseRequest.setRequestPayload(accountRequest);
|
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