diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionCommon.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionCommon.java new file mode 100644 index 000000000..00793129d --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionCommon.java @@ -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; + } + +} diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDeposit.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDeposit.java index 5327b6ca6..3883d4507 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDeposit.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDeposit.java @@ -1,104 +1,20 @@ package ru.clearing.classes.statics.data.execution; -import ru.clearing.classes.objects.BusinessObject; -import ru.spcex.platform.classes.base.interfaces.IExecution; +import ru.clearing.classes.ConstSerializable; import java.math.BigDecimal; -import java.time.Instant; import java.time.LocalDate; -public class ExecutionDeposit extends BusinessObject implements IExecution { - private Long exchangeExecutionId; - private Instant exchangeExecutionTime; - private LocalDate tradingDate; - private Long tradingClearingRegistryId; - private String market; - private BigDecimal price; - private BigDecimal lots; - private BigDecimal quantity; +public class ExecutionDeposit extends ExecutionCommon { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + private BigDecimal firstLegAmount; private BigDecimal secondLegAmount; - private BigDecimal interestAmount; - private String side; - private String settlementCurrency; - private Long companyId; - private Long duration; private LocalDate firstLegSettlementDate; private LocalDate secondLegSettlementDate; private String firstLegSettlementCode; private String secondLegSettlementCode; - private String securityFullName; - private String securitySymbol; - private Long securityId; private String contract; - private Long counterPartyId; - private String coverageStatus; - private Long sessionId; - private LocalDate clearingDate; - - public Long getExchangeExecutionId() { - return exchangeExecutionId; - } - - public void setExchangeExecutionId(Long exchangeExecutionId) { - this.exchangeExecutionId = exchangeExecutionId; - } - - public Instant getExchangeExecutionTime() { - return exchangeExecutionTime; - } - - public void setExchangeExecutionTime(Instant exchangeExecutionTime) { - this.exchangeExecutionTime = exchangeExecutionTime; - } - - public LocalDate getTradingDate() { - return tradingDate; - } - - public void setTradingDate(LocalDate tradingDate) { - this.tradingDate = tradingDate; - } - - public Long getTradingClearingRegistryId() { - return tradingClearingRegistryId; - } - - public void setTradingClearingRegistryId(Long tradingClearingRegistryId) { - this.tradingClearingRegistryId = tradingClearingRegistryId; - } - - public String getMarket() { - return market; - } - - public void setMarket(String market) { - this.market = market; - } - - public BigDecimal getPrice() { - return price; - } - - public void setPrice(BigDecimal price) { - this.price = price; - } - - public BigDecimal getLots() { - return lots; - } - - public void setLots(BigDecimal lots) { - this.lots = lots; - } - - public BigDecimal getQuantity() { - return quantity; - } - - public void setQuantity(BigDecimal quantity) { - this.quantity = quantity; - } public BigDecimal getFirstLegAmount() { return firstLegAmount; @@ -116,46 +32,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution { this.secondLegAmount = secondLegAmount; } - public BigDecimal getInterestAmount() { - return interestAmount; - } - - public void setInterestAmount(BigDecimal interestAmount) { - this.interestAmount = interestAmount; - } - - public String getSide() { - return side; - } - - public void setSide(String side) { - this.side = side; - } - - public String getSettlementCurrency() { - return settlementCurrency; - } - - public void setSettlementCurrency(String settlementCurrency) { - this.settlementCurrency = settlementCurrency; - } - - public Long getCompanyId() { - return companyId; - } - - public void setCompanyId(Long companyId) { - this.companyId = companyId; - } - - public Long getDuration() { - return duration; - } - - public void setDuration(Long duration) { - this.duration = duration; - } - public LocalDate getFirstLegSettlementDate() { return firstLegSettlementDate; } @@ -188,30 +64,6 @@ public class ExecutionDeposit extends BusinessObject implements IExecution { this.secondLegSettlementCode = secondLegSettlementCode; } - public String getSecurityFullName() { - return securityFullName; - } - - public void setSecurityFullName(String securityFullName) { - this.securityFullName = securityFullName; - } - - public String getSecuritySymbol() { - return securitySymbol; - } - - public void setSecuritySymbol(String securitySymbol) { - this.securitySymbol = securitySymbol; - } - - public Long getSecurityId() { - return securityId; - } - - public void setSecurityId(Long securityId) { - this.securityId = securityId; - } - public String getContract() { return contract; } @@ -219,36 +71,4 @@ public class ExecutionDeposit extends BusinessObject implements IExecution { public void setContract(String contract) { this.contract = contract; } - - public Long getCounterPartyId() { - return counterPartyId; - } - - public void setCounterPartyId(Long counterPartyId) { - this.counterPartyId = counterPartyId; - } - - public String getCoverageStatus() { - return coverageStatus; - } - - public void setCoverageStatus(String coverageStatus) { - this.coverageStatus = coverageStatus; - } - - public Long getSessionId() { - return sessionId; - } - - public void setSessionId(Long sessionId) { - this.sessionId = sessionId; - } - - public LocalDate getClearingDate() { - return clearingDate; - } - - public void setClearingDate(LocalDate clearingDate) { - this.clearingDate = clearingDate; - } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java index 44d95e590..26057ad8c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java @@ -2,7 +2,6 @@ package ru.clearing.classes.statics.data.execution; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import ru.spcex.platform.classes.base.interfaces.IExecution; import java.math.BigDecimal; import java.time.Instant; @@ -13,252 +12,70 @@ import java.time.LocalDate; *

* DB table: EXECUTION_FOND **/ -public class ExecutionFond extends BusinessObject implements IExecution { +public class ExecutionFond extends ExecutionCommon { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private LocalDate clearingDate; - private Long exchangeExecutionId; - private String side; - private String market; - private LocalDate tradingDate; - private String securitySymbol; - private Long securityId; - private BigDecimal interestAmount; private Long exchangeOrderId; - private BigDecimal price; private BigDecimal settlementAmount; - private BigDecimal lots; - private BigDecimal quantity; - private Instant exchangeExecutionTime; - private Long duration; - private Long tradingClearingRegistryId; private String comment; private Long clientCodeId; private String settlementCode; - private Long companyId; - private Long counterPartyId; - private String securityFullName; private LocalDate settlementDate; - private String settlementCurrency; private Instant exchangeExecutionMicroseconds; - private String coverageStatus; - private Long sessionId; - - - public LocalDate getClearingDate() { - return clearingDate; - } - - public void setClearingDate(LocalDate value) { - this.clearingDate = value; - } - - public Long getExchangeExecutionId() { - return exchangeExecutionId; - } - - public void setExchangeExecutionId(Long value) { - this.exchangeExecutionId = value; - } - - public String getSide() { - return side; - } - - public void setSide(String value) { - this.side = value; - } - - public String getMarket() { - return market; - } - - public void setMarket(String value) { - this.market = value; - } - - public LocalDate getTradingDate() { - return tradingDate; - } - - public void setTradingDate(LocalDate value) { - this.tradingDate = value; - } - - public String getSecuritySymbol() { - return securitySymbol; - } - - public void setSecuritySymbol(String value) { - this.securitySymbol = value; - } - - public Long getSecurityId() { - return securityId; - } - - public void setSecurityId(Long value) { - this.securityId = value; - } - - public BigDecimal getInterestAmount() { - return interestAmount; - } - - public void setInterestAmount(BigDecimal value) { - this.interestAmount = value; - } public Long getExchangeOrderId() { return exchangeOrderId; } - public void setExchangeOrderId(Long value) { - this.exchangeOrderId = value; - } - - public BigDecimal getPrice() { - return price; - } - - public void setPrice(BigDecimal value) { - this.price = value; + public void setExchangeOrderId(Long exchangeOrderId) { + this.exchangeOrderId = exchangeOrderId; } public BigDecimal getSettlementAmount() { return settlementAmount; } - public void setSettlementAmount(BigDecimal value) { - this.settlementAmount = value; - } - - public BigDecimal getLots() { - return lots; - } - - public void setLots(BigDecimal value) { - this.lots = value; - } - - public BigDecimal getQuantity() { - return quantity; - } - - public void setQuantity(BigDecimal value) { - this.quantity = value; - } - - public Instant getExchangeExecutionTime() { - return exchangeExecutionTime; - } - - public void setExchangeExecutionTime(Instant value) { - this.exchangeExecutionTime = value; - } - - public Long getDuration() { - return duration; - } - - public void setDuration(Long value) { - this.duration = value; - } - - public Long getTradingClearingRegistryId() { - return tradingClearingRegistryId; - } - - public void setTradingClearingRegistryId(Long value) { - this.tradingClearingRegistryId = value; + public void setSettlementAmount(BigDecimal settlementAmount) { + this.settlementAmount = settlementAmount; } public String getComment() { return comment; } - public void setComment(String value) { - this.comment = value; + public void setComment(String comment) { + this.comment = comment; } public Long getClientCodeId() { return clientCodeId; } - public void setClientCodeId(Long value) { - this.clientCodeId = value; + public void setClientCodeId(Long clientCodeId) { + this.clientCodeId = clientCodeId; } public String getSettlementCode() { return settlementCode; } - public void setSettlementCode(String value) { - this.settlementCode = value; - } - - public Long getCompanyId() { - return companyId; - } - - public void setCompanyId(Long value) { - this.companyId = value; - } - - public Long getCounterPartyId() { - return counterPartyId; - } - - public void setCounterPartyId(Long value) { - this.counterPartyId = value; - } - - public String getSecurityFullName() { - return securityFullName; - } - - public void setSecurityFullName(String value) { - this.securityFullName = value; + public void setSettlementCode(String settlementCode) { + this.settlementCode = settlementCode; } public LocalDate getSettlementDate() { return settlementDate; } - public void setSettlementDate(LocalDate value) { - this.settlementDate = value; - } - - public String getSettlementCurrency() { - return settlementCurrency; - } - - public void setSettlementCurrency(String value) { - this.settlementCurrency = value; + public void setSettlementDate(LocalDate settlementDate) { + this.settlementDate = settlementDate; } public Instant getExchangeExecutionMicroseconds() { return exchangeExecutionMicroseconds; } - public void setExchangeExecutionMicroseconds(Instant value) { - this.exchangeExecutionMicroseconds = value; + public void setExchangeExecutionMicroseconds(Instant exchangeExecutionMicroseconds) { + this.exchangeExecutionMicroseconds = exchangeExecutionMicroseconds; } - - public String getCoverageStatus() { - return coverageStatus; - } - - public void setCoverageStatus(String value) { - this.coverageStatus = value; - } - - public Long getSessionId() { - return sessionId; - } - - public void setSessionId(Long value) { - this.sessionId = value; - } - } \ No newline at end of file diff --git a/clearing-parent/reports-service/pom.xml b/clearing-parent/reports-service/pom.xml index 969ee84ed..a5e83d1ba 100644 --- a/clearing-parent/reports-service/pom.xml +++ b/clearing-parent/reports-service/pom.xml @@ -40,17 +40,27 @@ jackson-dataformat-xml + com.thoughtworks.xstream xstream 1.4.19 + + org.apache.poi poi-ooxml 5.1.0 + + + com.opencsv + opencsv + 5.5.2 + + ru.spcex.clearing @@ -83,6 +93,24 @@ mockito-core test + + ru.spcex.clearing + security-util + + + ru.spcex.clearing + clearing-validation + + + ru.spcex.clearing + test-clearing + test + + + org.springframework.boot + spring-boot-test + test + diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 627e9bbf1..06efcbe60 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -1,8 +1,5 @@ package ru.spcex.clearing.reports; -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.naming.NoNameCoder; -import com.thoughtworks.xstream.io.xml.XppDriver; import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ConfigurableApplicationContext; import ru.spcex.clearing.reports.config.ReportCmdParser; -import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT; import ru.spcex.clearing.reports.services.QCommandExecutor; import ru.spcex.clearing.reports.services.ReportsServiceCommand; -import ru.spcex.clearing.reports.services.collector.ReportINACCNT_Collector; -import ru.spcex.platform.imdg.api.ImdgProvider; @SpringBootApplication public class ReportsServiceApplication { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/BeanConfiguration.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/BeanConfiguration.java new file mode 100644 index 000000000..c0730ce66 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/BeanConfiguration.java @@ -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); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ReportBuildersConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ReportBuildersConfig.java new file mode 100644 index 000000000..b88e8fd6f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ReportBuildersConfig.java @@ -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>> reportBuildersWithoutParams(ImdgProvider imdgProvider) { + Map>> 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>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) { + Map>> 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>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) { + Map>> resultMap = new HashMap<>(); + resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, List.of(new PeriodLiabilitiesClaimsReportBuilder(imdgProvider))); + return resultMap; + } + + @Bean("reportBuildersWithPeriodParams") + public Map>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) { + Map>> resultMap = new HashMap<>(); + resultMap.put(ReportType.PERIOD_MONEY_CHANGE, List.of(new PeriodMoneyChangeReportBuilder(imdgProvider))); + return resultMap; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java index 8352482f0..c8d0d3ad3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java @@ -18,7 +18,7 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; public class ReportsServiceSettings { private HazelcastClientParams hazelcast; private KafkaConsumerSettings kafkaConsumer; -// private KafkaProducerSettings kafkaProducer; + private KafkaProducerSettings kafkaProducer; private String reportModuleOut; public HazelcastClientParams getHazelcast() { @@ -37,13 +37,13 @@ public class ReportsServiceSettings { this.kafkaConsumer = kafkaConsumer; } -// public KafkaProducerSettings getKafkaProducer() { -// return kafkaProducer; -// } -// -// public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { -// this.kafkaProducer = kafkaProducer; -// } + public KafkaProducerSettings getKafkaProducer() { + return kafkaProducer; + } + + public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { + this.kafkaProducer = kafkaProducer; + } public String getReportModuleOut() { return reportModuleOut; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java new file mode 100644 index 000000000..f01155eaf --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java @@ -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> imdgForValidation(ImdgProvider imdgProvider) { + final Map> imdg = new HashMap<>(); + BiConsumer> 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 reportRequestValidator( + Map> imdgForValidation + ) { + return reportRequest -> { + ImdgValidationContext 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 reportRequestWithSessionIdValidator( + Map> imdgForValidation + ) { + return reportRequestWithSessionId -> { + ImdgValidationContext 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 reportRequestWithSessionIdListValidator( + Map> imdgForValidation + ) { + return reportRequestWithSessionIdList -> { + ImdgValidationContext 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 reportRequestWithPeriodValidator( + Map> imdgForValidation + ) { + return reportRequestWithPeriod -> { + ImdgValidationContext 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) + ); + }; + } + +} + + diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/errors/ReportError.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/errors/ReportError.java new file mode 100644 index 000000000..de9ba1fb1 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/errors/ReportError.java @@ -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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java index 27c7072af..c8b56a13e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java @@ -10,6 +10,7 @@ import java.time.format.DateTimeFormatter; /** * Общая шапка (атрибуты) для всех отчетов */ +@Deprecated public abstract class AbstractReport { protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); protected static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java new file mode 100644 index 000000000..aa1c830fb --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java @@ -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

тип параметров, используемых при построении отчета + */ +public abstract class CSVReportBuilder

{ + 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 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 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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java new file mode 100644 index 000000000..c344fc1d2 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java @@ -0,0 +1,7 @@ +package ru.spcex.clearing.reports.reports; + +/** + * Класс для формирования отчета без параметров + */ +public class EmptyParams { +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PeriodParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PeriodParams.java new file mode 100644 index 000000000..4d30c335a --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PeriodParams.java @@ -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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java index a235a2a83..1d66b3ebc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java @@ -5,6 +5,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; /** * Идентификаторы отчётов */ +@Deprecated public enum ReportId implements IEnumKey { PA_B("REPPA.B"), PA_IV("REPPA.IV"), @@ -22,8 +23,18 @@ public enum ReportId implements IEnumKey { BR_0420312_P1("REPBR.0420312_р1-1"), BR_0420312_P2("REPBR.0420312_р1-2"), BR_0420312_P3("REPBR.0420312_р1-3"), BR_0420312_P4("REPBR.0420312_р1-4"), BR_0420312_P5("REPBR.0420312_р1-5"), BR_0420312_P6("REPBR.0420312_р1-6"), BR_0420312_P7("REPBR.0420312_р1-7"), BR_0420312_P8("REPBR.0420312_р3-1"), - BR_0420312_P9("REPBR.0420312_р3-2"), BR_0420312_P10("REPBR.0420312_р3-3"); + BR_0420312_P9("REPBR.0420312_р3-2"), BR_0420312_P10("REPBR.0420312_р3-3"), + OPERATIONAL_LIABILITIES_CLAIMS("operational_liabilities_claims"), + OPERATIONAL_MONEY_CHANGE("operational_money_change"), + SUMMARY_LIABILITIES_CLAIMS("summary_liabilities_claims"), + SUMMARY_L_MONEY_CHANGE("summary_lmoney_change"), + PERIOD_LIABILITIES_CLAIMS("period_liabilities_claims"), + PERIOD_MONEY_CHANGE("period_money_change"), + EXECUTED_DEAL_REPORT("executed_deal_report"), + UNFULFILLED_DEAL_REPORT("unfulfilled_deal_report"), + + ; private final String key; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java index e86e5007c..051362750 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import java.time.LocalDate; +@Deprecated public abstract class ReportWithClearingStatus extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("clearingStatus") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java index 2895b8b4b..e7e6d7376 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java @@ -2,24 +2,23 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; import java.time.LocalDate; /** * Шапка для отчётов, содержащих startDate и endDate */ +@Deprecated public abstract class ReportWithPeriod extends AbstractReport { @XStreamAsAttribute @XStreamAlias("startDate") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) +// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) protected LocalDate startDate; @XStreamAsAttribute @XStreamAlias("endDate") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) +// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) protected LocalDate endDate; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java new file mode 100644 index 000000000..2b198bf17 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java @@ -0,0 +1,18 @@ +package ru.spcex.clearing.reports.reports; + +import java.util.List; + +/** + * Параметры для формирования отчета по списку SessionId + */ +public class SessionIdListParams { + private List sessionIdList; + + public List getSessionIdList() { + return sessionIdList; + } + + public void setSessionIdList(List sessionIdList) { + this.sessionIdList = sessionIdList; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java new file mode 100644 index 000000000..e2a529e6b --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java @@ -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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java new file mode 100644 index 000000000..3affaeedb --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java @@ -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 extends CSVReportBuilder { + protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); + protected final Imdg executionFondImdg; + private final Imdg companyImdg; + private final Imdg sTradesImdg; + + private final String[] headers = { + "id", "securityId", "tradeNo", "tradeDate", "tradeTime", + "settleDate", "settleCode", "price", "quanity", "value" + }; + private List 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 getLines() { + return lines; + } + + @Override + public ReportType getReportType() { + return ReportType.EXECUTED_DEAL_REPORT; + } + + protected abstract Collection getExecutionFondsForReport(T params); + + @Override + protected void collect(T params) { + Collection 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); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java new file mode 100644 index 000000000..065ff9f5e --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java @@ -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 { + + 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 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()) + ) + ); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java new file mode 100644 index 000000000..72fadba5e --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java @@ -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 { + + 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 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()) + ) + ); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java new file mode 100644 index 000000000..0e3c8e934 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java @@ -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 { + + 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 getExecutionFondsForReport(SessionIdParam params) { + ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); + return executionFondImdg.getCollectionObjectsByPredicate(pb.greater("settlementDate", LocalDate.now())); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java new file mode 100644 index 000000000..1135aab9f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -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 { + + 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 getExecutionFondsForReport(SessionIdParam params) { + ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); + return executionFondImdg.getCollectionObjectsByPredicate( + pb.and( + pb.equals("coverageStatus", Allowed.DENIED.getKey()), + pb.equals("settlementDate", LocalDate.now()) + ) + ); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java new file mode 100644 index 000000000..8c505c261 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java @@ -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

extends CSVReportBuilder

{ + protected final Imdg executionFondImdg; + protected final Imdg executionDepositImdg; + protected final Imdg companyImdg; + protected final Imdg registryImdg; + protected final Imdg

listingImdg; + protected final Imdg fixedIncomeSecurityImdg; + protected final Imdg 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 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 getLines() { + return lines; + } + + protected abstract Collection getExecutionFondsForReport(P params); + + protected abstract Collection getExecutionDepositsForReport(P params); + + @Override + protected void collect(P params) { + Collection executionFonds = getExecutionFondsForReport(params); + Collection executionDeposits = getExecutionDepositsForReport(params); + + List 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 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); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/MoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/MoneyChangeReportBuilder.java new file mode 100644 index 000000000..b72a2a004 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/MoneyChangeReportBuilder.java @@ -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

extends CSVReportBuilder

{ + protected final Imdg registryImdg; + protected final Imdg companyImdg; + protected final Imdg

listingImdg; + protected final Imdg statementImdg; + protected final Imdg 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 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 getLines() { + return lines; + } + + protected abstract Collection getRegistryForReport(P param); + + @Override + protected void collect(P params) { + Collection 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); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java new file mode 100644 index 000000000..dd7e6f9d5 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java @@ -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 { + public OperationalLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection getExecutionFondsForReport(SessionIdParam params) { + return executionFondImdg.getCollectionObjectsByFieldValues( + Map.of("sessionId", params.getSessionId()) + ); + } + + @Override + protected Collection 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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java new file mode 100644 index 000000000..24a1283d6 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java @@ -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 { + public OperationalMoneyChangeReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection 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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java new file mode 100644 index 000000000..4d5532b07 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java @@ -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 { + + 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 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 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])) + ); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java new file mode 100644 index 000000000..6e35c0cab --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java @@ -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 { + + public PeriodMoneyChangeReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection 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; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java new file mode 100644 index 000000000..50de7bac2 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java @@ -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 { + public SummaryLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection getExecutionFondsForReport(EmptyParams params) { + return executionFondImdg.getAllValues(); + } + + @Override + protected Collection 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; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java new file mode 100644 index 000000000..a636c5911 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java @@ -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 { + public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection 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; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java new file mode 100644 index 000000000..249b53211 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java @@ -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 { + private final Imdg executionFondImdg; + private final Imdg companyImdg; + private final Imdg sTradesImdg; + private final String[] headers = { + "id", "securityId", "tradeNo", "tradeDate", "settleCode" + }; + private List 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 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 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); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_B.java similarity index 98% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_B.java index 1f3c7ae98..d638fbf44 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_B.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_12_2; +package ru.spcex.clearing.reports.reports.bt.bt_12_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("netPositionBank") +@Deprecated public class ReportPA_B extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_IV.java similarity index 98% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_IV.java index 12d124dc7..a989f5a03 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_12_2/ReportPA_IV.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_12_2; +package ru.spcex.clearing.reports.reports.bt.bt_12_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("netPositionInitiator") +@Deprecated public class ReportPA_IV extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCIN.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java similarity index 87% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCIN.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java index 3b8a7171b..c10a38e33 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCIN.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java @@ -1,12 +1,9 @@ -package ru.spcex.clearing.reports.reports.bt_13; +package ru.spcex.clearing.reports.reports.bt.bt_13; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; import ru.spcex.clearing.reports.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportId; -import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; -import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter; import java.time.LocalDate; import java.time.LocalDateTime; @@ -15,13 +12,14 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("incomingDocuments") +@Deprecated public class ReportDOCIN extends AbstractReport { /** * Дата в формате: dd.MM.yyyy */ @XStreamAsAttribute @XStreamAlias("date") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) +// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) private final LocalDate date; /** @@ -29,7 +27,7 @@ public class ReportDOCIN extends AbstractReport { */ @XStreamAsAttribute @XStreamAlias("time") - @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) +// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) private final LocalTime time; @XStreamAlias("rows") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCOUT.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java similarity index 87% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCOUT.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java index 05f22cc48..be4037989 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/ReportDOCOUT.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java @@ -1,12 +1,9 @@ -package ru.spcex.clearing.reports.reports.bt_13; +package ru.spcex.clearing.reports.reports.bt.bt_13; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; import ru.spcex.clearing.reports.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportId; -import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; -import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter; import java.time.LocalDate; import java.time.LocalDateTime; @@ -15,13 +12,14 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("incomingDocuments") +@Deprecated public class ReportDOCOUT extends AbstractReport { /** * Дата в формате: dd.MM.yyyy */ @XStreamAsAttribute @XStreamAlias("date") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) +// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) private final LocalDate date; /** @@ -29,7 +27,7 @@ public class ReportDOCOUT extends AbstractReport { */ @XStreamAsAttribute @XStreamAlias("time") - @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) +// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) private final LocalTime time; @XStreamAlias("rows") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/ReportINACCNT.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java similarity index 86% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/ReportINACCNT.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java index 3b1221020..32d9cad93 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/ReportINACCNT.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java @@ -1,12 +1,9 @@ -package ru.spcex.clearing.reports.reports.bt_16_5; +package ru.spcex.clearing.reports.reports.bt.bt_16_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; import ru.spcex.clearing.reports.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportId; -import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; -import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter; import java.time.LocalDate; import java.time.LocalDateTime; @@ -15,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("accountBalanceInfo") +@Deprecated public class ReportINACCNT extends AbstractReport { @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") @@ -25,7 +23,7 @@ public class ReportINACCNT extends AbstractReport { */ @XStreamAsAttribute @XStreamAlias("date") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) +// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) private final LocalDate date; /** @@ -33,7 +31,7 @@ public class ReportINACCNT extends AbstractReport { */ @XStreamAsAttribute @XStreamAlias("time") - @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) +// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"}) private final LocalTime time; @XStreamAlias("rows") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P1.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P1.java index 67aafde5b..bd317a145 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P1.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_1; +package ru.spcex.clearing.reports.reports.bt.bt_17_1; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearedLiabilities") +@Deprecated public class ReportBR_0420315_P1 extends ReportWithClearingStatus { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P2.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P2.java index 7520ed7f0..dd013a1ff 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_1/ReportBR_0420315_P2.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_1; +package ru.spcex.clearing.reports.reports.bt.bt_17_1; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -10,6 +10,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; @XStreamAlias("clearedLiabilitiesTotal") +@Deprecated public class ReportBR_0420315_P2 extends ReportWithPeriod { @XStreamAlias("rows") private Info_0420315_P2 rows; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_2/ReportBR_0420317.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_2/ReportBR_0420317.java index 94009f5c6..167b889de 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_2/ReportBR_0420317.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_2; +package ru.spcex.clearing.reports.reports.bt.bt_17_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingServiceStatus") +@Deprecated public class ReportBR_0420317 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_3/ReportBR_0420318.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_3/ReportBR_0420318.java index e42c06933..0a4d1529c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_3/ReportBR_0420318.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_3; +package ru.spcex.clearing.reports.reports.bt.bt_17_3; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("unfundedLiabilities") +@Deprecated public class ReportBR_0420318 extends ReportWithClearingStatus { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P1.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P1.java index a72ecca3b..55fede8b5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P1.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_4; +package ru.spcex.clearing.reports.reports.bt.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("accountTransactionLiabilities") +@Deprecated public class ReportBR_0420314_P1 extends ReportWithClearingStatus { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P2.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P2.java index f4019dfdd..1feed5112 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_4/ReportBR_0420314_P2.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_4; +package ru.spcex.clearing.reports.reports.bt.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("accountTransactionTurnover") +@Deprecated public class ReportBR_0420314_P2 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P1.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P1.java index 03e5cbc05..3e6492797 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P1.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage1") +@Deprecated public class ReportBR_0420312_P1 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P10.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P10.java index 08a428309..32ad2e543 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P10.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage10") +@Deprecated public class ReportBR_0420312_P10 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P2.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P2.java index 22706fb9d..6e0043854 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P2.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage2") +@Deprecated public class ReportBR_0420312_P2 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P3.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P3.java index 4b78a1b87..79ec3df44 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P3.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage3") +@Deprecated public class ReportBR_0420312_P3 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P4.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P4.java index d7aa87a9f..e8350d3b7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P4.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage4") +@Deprecated public class ReportBR_0420312_P4 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P5.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P5.java index 9132d81db..5579eaf22 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P5.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage5") +@Deprecated public class ReportBR_0420312_P5 extends ReportWithPeriod { @XStreamAsAttribute diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P6.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P6.java index 00a273649..7f8220da6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P6.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage6") +@Deprecated public class ReportBR_0420312_P6 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P7.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P7.java index c35b4230c..fa809a07e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P7.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage7") +@Deprecated public class ReportBR_0420312_P7 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P8.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P8.java index eff2fb7a7..51d6c3345 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P8.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage8") +@Deprecated public class ReportBR_0420312_P8 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P9.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P9.java index 92c5e7f68..24e899539 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_17_5/ReportBR_0420312_P9.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; +package ru.spcex.clearing.reports.reports.bt.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingCoverage9") +@Deprecated public class ReportBR_0420312_P9 extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("destination") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java new file mode 100644 index 000000000..2718a3053 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java @@ -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 reportRequestValidator; + private final Function reportRequestWithSessionIdValidator; + private final Function reportRequestWithSessionIdListValidator; + private final Function reportRequestWithPeriodValidator; + private final Map>> reportBuildersWithoutParams; + private final Map>> reportBuildersWithSessionIdParam; + private final Map>> reportBuildersWithSessionIdListParam; + private final Map>> reportBuildersWithPeriodParams; + + private final File outFolder; + + public ReportService(Consumer kafkaQueue, + Producer kafkaResponseQueue, + UserRoleVerification userRoleVerification, + ValidationHelper validationHelper, + ReportsServiceSettings reportsServiceSettings, + @Qualifier("reportBuildersWithoutParams") + Map>> reportBuildersWithoutParams, + @Qualifier("reportBuildersWithSessionIdParam") + Map>> reportBuildersWithSessionIdParam, + @Qualifier("reportBuildersWithSessionIdListParam") + Map>> reportBuildersWithSessionIdListParam, + @Qualifier("reportBuildersWithPeriodParams") + Map>> reportBuildersWithPeriodParams, + @Qualifier("reportRequestValidator") + Function reportRequestValidator, + @Qualifier("reportRequestWithSessionIdValidator") + Function reportRequestWithSessionIdValidator, + @Qualifier("reportRequestWithSessionIdListValidator") + Function reportRequestWithSessionIdListValidator, + @Qualifier("reportRequestWithPeriodValidator") + Function 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 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> builders = reportBuildersWithoutParams.get( + IEnumKey.getEnumByKey(ReportType.class, req.getReportId()) + ); + List outFilenames = new ArrayList<>(); + for (CSVReportBuilder 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 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> builders = reportBuildersWithSessionIdParam.get( + IEnumKey.getEnumByKey(ReportType.class, req.getReportId()) + ); + List outFilenames = new ArrayList<>(); + for (CSVReportBuilder 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 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> builders = reportBuildersWithSessionIdListParam.get( + IEnumKey.getEnumByKey(ReportType.class, req.getReportId()) + ); + List outFilenames = new ArrayList<>(); + for (CSVReportBuilder 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 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> builders = reportBuildersWithPeriodParams.get( + IEnumKey.getEnumByKey(ReportType.class, req.getReportId()) + ); + List outFilenames = new ArrayList<>(); + for (CSVReportBuilder 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; + } + + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index dcde34308..04e9c6e79 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -5,6 +5,7 @@ import ru.spcex.clearing.reports.reports.AbstractReport; import java.io.File; import java.io.IOException; +@Deprecated public abstract class FileReportBuilder { protected final Class reportClass; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index 2dd5e8546..baafed9b4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -12,6 +12,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.time.LocalDateTime; +@Deprecated public class XMLReportBuilder extends FileReportBuilder { private final Logger log = LoggerFactory.getLogger(getClass()); protected final XStream xStream; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_B_Collector.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_B_Collector.java index 22f76e2b2..89d132aaf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_B_Collector.java @@ -1,10 +1,10 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_12_2; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_B; +import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_B; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.imdg.api.Imdg; @@ -20,6 +20,7 @@ import java.util.Set; import java.util.stream.Collectors; @Component +@Deprecated public class ReportPA_B_Collector extends ReportWithPeriodCollector { private final Imdg liabilitiesClaimsAssetsImdg; private final Imdg clearingMemberCategoryImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_IV_Collector.java similarity index 97% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_IV_Collector.java index c7620a313..b14a4978e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_12_2/ReportPA_IV_Collector.java @@ -1,11 +1,11 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_12_2; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; import ru.clearing.platform.dictionary.ClearingStatusDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV; +import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_IV; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.imdg.api.Imdg; @@ -20,6 +20,7 @@ import java.util.Set; import java.util.stream.Collectors; @Component +@Deprecated public class ReportPA_IV_Collector extends ReportWithPeriodCollector { private final Imdg liabilitiesClaimsAssetsImdg; private final Imdg clearingStatusDictionaryImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCIN_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCIN_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCIN_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCIN_Collector.java index d0f6a9723..4376a8adf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCIN_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCIN_Collector.java @@ -1,11 +1,11 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_13; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.journal.InDocumentJournal; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN; +import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCIN; import ru.spcex.clearing.reports.services.SimpleReportCollector; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -17,6 +17,7 @@ import java.time.LocalTime; import java.util.Collection; @Component +@Deprecated public class ReportDOCIN_Collector extends SimpleReportCollector { protected final Logger log = LoggerFactory.getLogger(getClass()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCOUT_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCOUT_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCOUT_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCOUT_Collector.java index 012000faf..3e613a82d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportDOCOUT_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_13/ReportDOCOUT_Collector.java @@ -1,11 +1,11 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_13; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.journal.OutDocumentJournal; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT; +import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCOUT; import ru.spcex.clearing.reports.services.SimpleReportCollector; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -17,6 +17,7 @@ import java.time.LocalTime; import java.util.Collection; @Component +@Deprecated public class ReportDOCOUT_Collector extends SimpleReportCollector { protected final Logger log = LoggerFactory.getLogger(getClass()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportINACCNT_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_16_5/ReportINACCNT_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportINACCNT_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_16_5/ReportINACCNT_Collector.java index 8ec532b53..ef8f26a24 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportINACCNT_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_16_5/ReportINACCNT_Collector.java @@ -1,10 +1,10 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_16_5; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.account.AccountBalance; import ru.clearing.classes.statics.data.company.Company; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT; +import ru.spcex.clearing.reports.reports.bt.bt_16_5.ReportINACCNT; import ru.spcex.clearing.reports.services.ReportForClearingCodeCollector; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.imdg.api.Imdg; @@ -19,6 +19,7 @@ import java.util.Set; import java.util.stream.Collectors; @Component +@Deprecated public class ReportINACCNT_Collector extends ReportForClearingCodeCollector { private final Imdg accountBalanceImdg; private final Imdg companyImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P1_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P1_Collector.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P1_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P1_Collector.java index 3f4f9f381..6acb0fb0b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P1_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P1_Collector.java @@ -1,16 +1,17 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_17_1; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; -import ru.clearing.classes.statics.data.misc.Listing; +import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.platform.dictionary.ClearingStatusDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1; +import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P1; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.ClearingStatus; import ru.spcex.platform.enumeration.Market; @@ -22,6 +23,7 @@ import java.time.LocalDate; import java.util.*; @Component +@Deprecated public class ReportBR_0420315_P1_Collector extends ReportWithPeriodCollector { protected static final List ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P2_collector.java similarity index 92% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P2_collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P2_collector.java index 648f69cd0..9085d5c76 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420315_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_1/ReportBR_0420315_P2_collector.java @@ -1,56 +1,57 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.HashSet; - -@Component -public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - - long liabilitiesAmount; - BigDecimal contractorQty = BigDecimal.ZERO; - { - HashSet collectedToSumm = new HashSet<>(); - for (LiabilitiesClaimsAssets lContract : liabilities) { - if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) { - collectedToSumm.add(lContract.getContract()); - contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity()); - } - } - liabilitiesAmount = collectedToSumm.size(); - } - - ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate); - reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty), - toString(liabilitiesAmount))); - - return reportBR_0420315_p2; - } - - @Override - public Class getReportClass() { - return ReportBR_0420315_P2.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_1; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P2; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.HashSet; + +@Component +@Deprecated +public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + + long liabilitiesAmount; + BigDecimal contractorQty = BigDecimal.ZERO; + { + HashSet collectedToSumm = new HashSet<>(); + for (LiabilitiesClaimsAssets lContract : liabilities) { + if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) { + collectedToSumm.add(lContract.getContract()); + contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity()); + } + } + liabilitiesAmount = collectedToSumm.size(); + } + + ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate); + reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty), + toString(liabilitiesAmount))); + + return reportBR_0420315_p2; + } + + @Override + public Class getReportClass() { + return ReportBR_0420315_P2.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_2/ReportBR_0420317_Collector.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_2/ReportBR_0420317_Collector.java index c0d7748b0..383fe89f4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_2/ReportBR_0420317_Collector.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_17_2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -6,7 +6,7 @@ import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.relation.Relation; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; +import ru.spcex.clearing.reports.reports.bt.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.Map; @Component +@Deprecated public class ReportBR_0420317_Collector extends ReportWithPeriodCollector { private Imdg companyImdg; private Imdg relationImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_3/ReportBR_0420318_Collector.java similarity index 96% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_3/ReportBR_0420318_Collector.java index fa512d506..2ef561446 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_3/ReportBR_0420318_Collector.java @@ -1,15 +1,16 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_17_3; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.company.ClearingMemberCategory; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318; +import ru.spcex.clearing.reports.reports.bt.bt_17_3.ReportBR_0420318; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; @@ -22,6 +23,7 @@ import java.util.List; import java.util.Map; @Component +@Deprecated public class ReportBR_0420318_Collector extends ReportWithPeriodCollector { private Imdg liabilitiesClaimsAssetsImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P1_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P1_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P1_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P1_Collector.java index 75e0d3f0c..bf4022354 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P1_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P1_Collector.java @@ -1,99 +1,101 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.company.ClearingMemberCategory; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.clearing.platform.dictionary.ClearingStatusDictionary; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.ClearingStatus; -import ru.spcex.platform.enumeration.DocumentTypes; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.time.LocalDate; -import java.util.Collection; -import java.util.Map; - -/** - * accountTransactionLiabilities - */ -@Component -public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector { - private Imdg companyImdg; - private Imdg companySymbolsImdg; - private Imdg clearingMemberCategoryImdg; - private Imdg liabilitiesClaimsAssetsImdg; - private Imdg clearingStatusDictionaryImdg; - - protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey(); - - @Autowired - public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); - clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class); - } - - protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { - CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( - "companySymbol", docType.getKey(), - "companyId", companyId - )); - return companySymbol; - } - - - @Override - public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR", - ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" - ); - final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK" - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId); - - for (LiabilitiesClaimsAssets liability: liabilities) { - final Long companyId = liability.getCompanyId(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); - continue; - } - Collection cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId)); - String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory); - - CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId()); - CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); - CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); - - ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1( - toString(company.getClearingCode()), - toString(companySymbolCntr == null? null : companySymbolCntr.getId()), - toString(company.getFullName()), - toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()), - toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()), - toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить - toString(liability.getRefundPaymentId()), - toString(liability.getTradingDate()), - toString(liability.getLiabilitiesQuantity()) - ); - reportBR_0420312P1.getRows().add(info_0420314P1); - } - - return reportBR_0420312P1; - } - - @Override - public Class getReportClass() { - return ReportBR_0420314_P1.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_4; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.ClearingMemberCategory; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.ClearingStatusDictionary; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P1; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.enumeration.ClearingStatus; +import ru.spcex.platform.enumeration.DocumentTypes; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.Map; + +/** + * accountTransactionLiabilities + */ +@Component +@Deprecated +public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector { + private Imdg companyImdg; + private Imdg companySymbolsImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg liabilitiesClaimsAssetsImdg; + private Imdg clearingStatusDictionaryImdg; + + protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey(); + + @Autowired + public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; + } + + + @Override + public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR", + ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" + ); + final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK" + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId); + + for (LiabilitiesClaimsAssets liability: liabilities) { + final Long companyId = liability.getCompanyId(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company == null) { + log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); + continue; + } + Collection cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId)); + String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory); + + CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId()); + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + + ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1( + toString(company.getClearingCode()), + toString(companySymbolCntr == null? null : companySymbolCntr.getId()), + toString(company.getFullName()), + toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()), + toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()), + toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить + toString(liability.getRefundPaymentId()), + toString(liability.getTradingDate()), + toString(liability.getLiabilitiesQuantity()) + ); + reportBR_0420312P1.getRows().add(info_0420314P1); + } + + return reportBR_0420312P1; + } + + @Override + public Class getReportClass() { + return ReportBR_0420314_P1.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P2_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P2_Collector.java index c49781d95..14ce6e0bf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_4/ReportBR_0420314_P2_Collector.java @@ -1,129 +1,131 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.account.AccountBalance; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.payment.PaymentInstruction; -import ru.clearing.classes.statics.data.profile.ProfileDocument; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P2; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.AccountType; -import ru.spcex.platform.enumeration.DocumentTypes; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; -import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; - -import java.math.BigDecimal; -import java.time.Instant; -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * accountTransactionLiabilities - */ -@Component -public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector { - private Imdg companyImdg; - private Imdg paymentInstructionImdg; - private Imdg accountBalanceImdg; - private Imdg profileDocumentImdg; - - @Autowired - public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); - accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); - profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); - } - - Collection searchPaymentInstruction(LocalDate startDate, LocalDate endDate) { - ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder(); - Instant dateTimeLo = toInstantStartDay(startDate); - Instant dateTimeHi = toInstantEndDay(endDate); - ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi)); - Collection paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p); - return paymentInstructionsAll; - } - - @Override - public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate, - "", "BR" - ); - - Collection paymentInstructionsAll = searchPaymentInstruction(startDate, endDate); - - Map> companyIdPyPaymtInstruction = - MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId); - - for (Map.Entry> entry : companyIdPyPaymtInstruction.entrySet()) { - final Long companyId = entry.getKey(); - List paymentInstructionsByCompany = entry.getValue(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Company not found, id={}", companyId); - continue; - } - ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of( - "companyId", companyId, - "documentType", DocumentTypes.cntr.getKey() - )); - AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of( - "accountType", AccountType.Clrn.getKey(), - "companyId", companyId - )); - - String documentTypeStr = null; - if (profileDocumentCntr != null) { - documentTypeStr = profileDocumentCntr.getNumber(); - if (profileDocumentCntr.getValidFromDate() != null) { - if (StringUtils.isEmpty(documentTypeStr)) { - documentTypeStr = ""; - } else { - documentTypeStr += " "; - } - documentTypeStr += toString(profileDocumentCntr.getValidFromDate()); - } - } - - BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream() - .map(PaymentInstruction::getCreditLeg_amount) - .filter(Objects::nonNull) - .reduce(BigDecimal::add) - .orElse(BigDecimal.ZERO); - BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream() - .map(PaymentInstruction::getDebitLeg_amount) - .filter(Objects::nonNull) - .reduce(BigDecimal::add) - .orElse(BigDecimal.ZERO); - - - ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2( - toString(company.getClearingCode()), - toString(documentTypeStr), - toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()), - toString(paymentInstruction_creditLeg_amount), - toString(paymentInstructiont_debitLeg_amount), - toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount()) - ); - - reportBR_0420312P2.getRows().add(info_0420314P2); - } - - return reportBR_0420312P2; - } - - @Override - public Class getReportClass() { - return ReportBR_0420314_P2.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_4; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.account.AccountBalance; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.payment.PaymentInstruction; +import ru.clearing.classes.statics.data.profile.ProfileDocument; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P2; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.DocumentTypes; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * accountTransactionLiabilities + */ +@Component +@Deprecated +public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector { + private Imdg companyImdg; + private Imdg paymentInstructionImdg; + private Imdg accountBalanceImdg; + private Imdg profileDocumentImdg; + + @Autowired + public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); + accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); + profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); + } + + Collection searchPaymentInstruction(LocalDate startDate, LocalDate endDate) { + ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder(); + Instant dateTimeLo = toInstantStartDay(startDate); + Instant dateTimeHi = toInstantEndDay(endDate); + ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi)); + Collection paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p); + return paymentInstructionsAll; + } + + @Override + public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate, + "", "BR" + ); + + Collection paymentInstructionsAll = searchPaymentInstruction(startDate, endDate); + + Map> companyIdPyPaymtInstruction = + MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId); + + for (Map.Entry> entry : companyIdPyPaymtInstruction.entrySet()) { + final Long companyId = entry.getKey(); + List paymentInstructionsByCompany = entry.getValue(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company == null) { + log.warn("Company not found, id={}", companyId); + continue; + } + ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of( + "companyId", companyId, + "documentType", DocumentTypes.cntr.getKey() + )); + AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of( + "accountType", AccountType.Clrn.getKey(), + "companyId", companyId + )); + + String documentTypeStr = null; + if (profileDocumentCntr != null) { + documentTypeStr = profileDocumentCntr.getNumber(); + if (profileDocumentCntr.getValidFromDate() != null) { + if (StringUtils.isEmpty(documentTypeStr)) { + documentTypeStr = ""; + } else { + documentTypeStr += " "; + } + documentTypeStr += toString(profileDocumentCntr.getValidFromDate()); + } + } + + BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream() + .map(PaymentInstruction::getCreditLeg_amount) + .filter(Objects::nonNull) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO); + BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream() + .map(PaymentInstruction::getDebitLeg_amount) + .filter(Objects::nonNull) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO); + + + ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2( + toString(company.getClearingCode()), + toString(documentTypeStr), + toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()), + toString(paymentInstruction_creditLeg_amount), + toString(paymentInstructiont_debitLeg_amount), + toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount()) + ); + + reportBR_0420312P2.getRows().add(info_0420314P2); + } + + return reportBR_0420312P2; + } + + @Override + public Class getReportClass() { + return ReportBR_0420314_P2.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P10_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P10_Collector.java similarity index 91% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P10_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P10_Collector.java index 553afb7df..c2c39feb3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P10_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P10_Collector.java @@ -1,48 +1,49 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P10; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - - BigDecimal liabilitiesQuantitySum = liabilities.stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - - ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate); - ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum)); - reportBR_0420312P10.getRows().add(reportInfo); - - return reportBR_0420312P10; - } - - @Override - public Class getReportClass() { - return ReportBR_0420312_P10.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P10; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + + BigDecimal liabilitiesQuantitySum = liabilities.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate); + ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum)); + reportBR_0420312P10.getRows().add(reportInfo); + + return reportBR_0420312P10; + } + + @Override + public Class getReportClass() { + return ReportBR_0420312_P10.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P1_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P1_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P1_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P1_Collector.java index 2daa9d14c..a71ff3df7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P1_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P1_Collector.java @@ -1,83 +1,85 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.company.ClearingMemberCategory; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.DocumentTypes; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -@Component -public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector { - private final Imdg companyImdg; - private final Imdg companySymbolsImdg; - private final Imdg clearingMemberCategoryImdg; - private final Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); - } - - protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { - CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( - "companySymbol", docType.getKey(), - "companyId", companyId - )); - return companySymbol; - } - - @Override - public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR"); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); - - for (Map.Entry> companyEntry : indexByCompany.entrySet()) { - final Long companyId = companyEntry.getKey(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); - continue; - } - CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); - CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); - ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); - String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); - ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1( - toString(company.getClearingCode()), - toString(companyId), - toString(company.getFullName()), - companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()), - companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()), - toString(company.getProfile().getCountryCode()), - toString(clearingMemberCategory)); - reportBR_0420312P1.getRows().add(info_0420312_p1); - } - - return reportBR_0420312P1; - } - - - @Override - public Class getReportClass() { - return ReportBR_0420312_P1.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.ClearingMemberCategory; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P1; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.enumeration.DocumentTypes; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Component +@Deprecated +public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector { + private final Imdg companyImdg; + private final Imdg companySymbolsImdg; + private final Imdg clearingMemberCategoryImdg; + private final Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; + } + + @Override + public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR"); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company == null) { + log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); + continue; + } + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); + ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1( + toString(company.getClearingCode()), + toString(companyId), + toString(company.getFullName()), + companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()), + companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()), + toString(company.getProfile().getCountryCode()), + toString(clearingMemberCategory)); + reportBR_0420312P1.getRows().add(info_0420312_p1); + } + + return reportBR_0420312P1; + } + + + @Override + public Class getReportClass() { + return ReportBR_0420312_P1.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P2_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P2_Collector.java similarity index 92% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P2_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P2_Collector.java index 80a98b782..dbae68ea5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P2_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P2_Collector.java @@ -1,61 +1,63 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P2; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR"); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); - - for (Map.Entry> companyEntry : indexByCompany.entrySet()) { - final Long companyId = companyEntry.getKey(); - List companyLiabilities=companyEntry.getValue(); - - BigDecimal liabilitiesQuantitySum = companyLiabilities.stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - - ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2( - toString(companyId), - toString(liabilitiesQuantitySum) - ); - reportBR_0420312P1.getRows().add(info_0420312_p2); - } - - return reportBR_0420312P1; - } - - - @Override - public Class getReportClass() { - return ReportBR_0420312_P2.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P2; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR"); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + List companyLiabilities=companyEntry.getValue(); + + BigDecimal liabilitiesQuantitySum = companyLiabilities.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2( + toString(companyId), + toString(liabilitiesQuantitySum) + ); + reportBR_0420312P1.getRows().add(info_0420312_p2); + } + + return reportBR_0420312P1; + } + + + @Override + public Class getReportClass() { + return ReportBR_0420312_P2.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P3_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P3_Collector.java similarity index 92% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P3_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P3_Collector.java index afbd0b0a5..64a0256c5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P3_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P3_Collector.java @@ -1,11 +1,12 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P3; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P3; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -17,6 +18,7 @@ import java.util.Map; import java.util.Objects; @Component +@Deprecated public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector { private Imdg liabilitiesClaimsAssetsImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P4_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P4_Collector.java similarity index 91% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P4_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P4_Collector.java index c80af2543..9a16262ef 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P4_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P4_Collector.java @@ -1,48 +1,49 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P4; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - - BigDecimal liabilitiesQuantitySum = liabilities.stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - - ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate); - ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum)); - reportBR_0420312P4.getRows().add(reportInfo); - - return reportBR_0420312P4; - } - - @Override - public Class getReportClass() { - return ReportBR_0420312_P4.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P4; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + + BigDecimal liabilitiesQuantitySum = liabilities.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate); + ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum)); + reportBR_0420312P4.getRows().add(reportInfo); + + return reportBR_0420312P4; + } + + @Override + public Class getReportClass() { + return ReportBR_0420312_P4.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P5_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P5_Collector.java similarity index 91% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P5_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P5_Collector.java index c309da1fe..5d247cdce 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P5_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P5_Collector.java @@ -1,48 +1,49 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P5; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - - BigDecimal liabilitiesQuantitySum = liabilities.stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - - ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate); - ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum)); - reportBR_0420312P5.getRows().add(reportInfo); - - return reportBR_0420312P5; - } - - @Override - public Class getReportClass() { - return ReportBR_0420312_P5.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P5; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + + BigDecimal liabilitiesQuantitySum = liabilities.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate); + ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum)); + reportBR_0420312P5.getRows().add(reportInfo); + + return reportBR_0420312P5; + } + + @Override + public Class getReportClass() { + return ReportBR_0420312_P5.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P6_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P6_Collector.java similarity index 91% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P6_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P6_Collector.java index acd227d15..0a38c56d8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P6_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P6_Collector.java @@ -1,48 +1,49 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P6; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector { - private Imdg liabilitiesClaimsAssetsImdg; - - @Autowired - public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) { - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - } - - @Override - public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - - BigDecimal liabilitiesQuantitySum = liabilities.stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - - ReportBR_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate); - ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum)); - reportBR_0420312P5.getRows().add(reportInfo); - - return reportBR_0420312P5; - } - - @Override - public Class getReportClass() { - return ReportBR_0420312_P6.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P6; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + + BigDecimal liabilitiesQuantitySum = liabilities.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + ReportBR_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate); + ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum)); + reportBR_0420312P5.getRows().add(reportInfo); + + return reportBR_0420312P5; + } + + @Override + public Class getReportClass() { + return ReportBR_0420312_P6.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P7_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P7_Collector.java similarity index 92% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P7_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P7_Collector.java index 9e03ee953..b4bea17d7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P7_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P7_Collector.java @@ -1,10 +1,10 @@ -package ru.spcex.clearing.reports.services.collector; +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P7; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P7; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -15,6 +15,7 @@ import java.util.Collection; import java.util.Objects; @Component +@Deprecated public class ReportBR_0420312_P7_Collector extends ReportWithPeriodCollector { private Imdg liabilitiesClaimsAssetsImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P8_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P8_Collector.java similarity index 95% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P8_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P8_Collector.java index 76f53b9fc..82fd2e196 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P8_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P8_Collector.java @@ -1,98 +1,100 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.company.ClearingMemberCategory; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.clearing.platform.dictionary.CurrencyCodeDictionary; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P8; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.DocumentTypes; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -@Component -public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector { - private Imdg companyImdg; - private Imdg companySymbolsImdg; - private Imdg clearingMemberCategoryImdg; - private Imdg liabilitiesClaimsAssetsImdg; - private Imdg currencyCodeDictionaryImdg; - - @Autowired - public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); - currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class); - } - - protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { - CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( - "companySymbol", docType.getKey(), - "companyId", companyId - )); - return companySymbol; - } - - @Override - public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); - - for (Map.Entry> companyEntry : indexByCompany.entrySet()) { - final Long companyId = companyEntry.getKey(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); - continue; - } - CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); - CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); - ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); - String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); - - - List companyLiabilities = companyEntry.getValue(); - Map> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency); - for (Map.Entry> currencyEntry : indexByCurrency.entrySet()) { - String currencyCode = currencyEntry.getKey(); - Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode); - if (currencyId == null) { - log.warn("No currency found for code \"{}\"", currencyEntry.getKey()); - } - ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8( - toString(currencyId), - toString(companyId), - toString(company.getFullName()), - companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()), - companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()), - toString(company.getProfile().getCountryCode()), - toString(clearingMemberCategory) - ); - reportBR_0420312P8.getRows().add(info_0420312_p8); - } - } - - return reportBR_0420312P8; - } - - - @Override - public Class getReportClass() { - return ReportBR_0420312_P8.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.ClearingMemberCategory; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.CurrencyCodeDictionary; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P8; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.enumeration.DocumentTypes; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Component +@Deprecated +public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector { + private Imdg companyImdg; + private Imdg companySymbolsImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg liabilitiesClaimsAssetsImdg; + private Imdg currencyCodeDictionaryImdg; + + @Autowired + public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; + } + + @Override + public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company == null) { + log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); + continue; + } + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); + + + List companyLiabilities = companyEntry.getValue(); + Map> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency); + for (Map.Entry> currencyEntry : indexByCurrency.entrySet()) { + String currencyCode = currencyEntry.getKey(); + Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode); + if (currencyId == null) { + log.warn("No currency found for code \"{}\"", currencyEntry.getKey()); + } + ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8( + toString(currencyId), + toString(companyId), + toString(company.getFullName()), + companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()), + companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()), + toString(company.getProfile().getCountryCode()), + toString(clearingMemberCategory) + ); + reportBR_0420312P8.getRows().add(info_0420312_p8); + } + } + + return reportBR_0420312P8; + } + + + @Override + public Class getReportClass() { + return ReportBR_0420312_P8.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P9_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P9_Collector.java similarity index 94% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P9_Collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P9_Collector.java index 025956f07..a9dcb279d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420312_P9_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/bt/bt_17_5/ReportBR_0420312_P9_Collector.java @@ -1,80 +1,82 @@ -package ru.spcex.clearing.reports.services.collector; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; -import ru.clearing.platform.dictionary.CurrencyCodeDictionary; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P9; -import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -@Component -public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector { - private Imdg companyImdg; - private Imdg liabilitiesClaimsAssetsImdg; - private Imdg currencyCodeDictionaryImdg; - - @Autowired - public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); - currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class); - } - - @Override - public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - validateDateRange(startDate, endDate); - - ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate); - - Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); - Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); - - for (Map.Entry> companyEntry : indexByCompany.entrySet()) { - final Long companyId = companyEntry.getKey(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); - continue; - } - List companyLiabilities = companyEntry.getValue(); - Map> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency); - for (Map.Entry> currencyEntry : indexByCurrency.entrySet()) { - String currencyCode = currencyEntry.getKey(); - Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode); - if (currencyId == null) { - log.warn("No currency found for code \"{}\"", currencyEntry.getKey()); - } - BigDecimal sumOfLiabilities = currencyEntry.getValue().stream() - .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) - .filter(Objects::nonNull) - .reduce(BigDecimal::add) - .orElse(BigDecimal.ZERO); - ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9( - toString(currencyId), - toString(companyId), - toString(currencyCode), - toString(sumOfLiabilities) - ); - reportBR_0420312P9.getRows().add(info_0420312_p9); - } - } - - return reportBR_0420312P9; - } - - @Override - public Class getReportClass() { - return ReportBR_0420312_P9.class; - } -} +package ru.spcex.clearing.reports.services.collector.bt.bt_17_5; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.CurrencyCodeDictionary; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P9; +import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; +import ru.spcex.clearing.reports.services.collector.MapUtil; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Component +@Deprecated +public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector { + private Imdg companyImdg; + private Imdg liabilitiesClaimsAssetsImdg; + private Imdg currencyCodeDictionaryImdg; + + @Autowired + public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class); + } + + @Override + public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + validateDateRange(startDate, endDate); + + ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate); + + Collection liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company == null) { + log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId); + continue; + } + List companyLiabilities = companyEntry.getValue(); + Map> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency); + for (Map.Entry> currencyEntry : indexByCurrency.entrySet()) { + String currencyCode = currencyEntry.getKey(); + Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode); + if (currencyId == null) { + log.warn("No currency found for code \"{}\"", currencyEntry.getKey()); + } + BigDecimal sumOfLiabilities = currencyEntry.getValue().stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO); + ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9( + toString(currencyId), + toString(companyId), + toString(currencyCode), + toString(sumOfLiabilities) + ); + reportBR_0420312P9.getRows().add(info_0420312_p9); + } + } + + return reportBR_0420312P9; + } + + @Override + public Class getReportClass() { + return ReportBR_0420312_P9.class; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ChildElementForWrite.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ChildElementForWrite.java deleted file mode 100644 index 4a6b5c215..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ChildElementForWrite.java +++ /dev/null @@ -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; - } - -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ElementWithAttributeOnly.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ElementWithAttributeOnly.java deleted file mode 100644 index aa5d185ed..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/ElementWithAttributeOnly.java +++ /dev/null @@ -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; - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalDateConverter.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalDateConverter.java deleted file mode 100644 index ff4762875..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalDateConverter.java +++ /dev/null @@ -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) : ""; - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java deleted file mode 100644 index 0bcb2a347..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java +++ /dev/null @@ -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) : ""; - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/RootElementForWrite.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/RootElementForWrite.java deleted file mode 100644 index e10dd6ddf..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/RootElementForWrite.java +++ /dev/null @@ -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 testList = new ArrayList<>(); - - @XStreamImplicit - private List 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 getTestList() { - return testList; - } - - public void setTestList(List testList) { - this.testList = testList; - } - - public List getTestListTwo() { - return testListTwo; - } - - public void setTestListTwo(List 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; - } - -} - diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index ed2aa2053..fdf19a25d 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -1,4 +1,6 @@ - +reports-service.hazelcast.cluster-members=127.0.0.1:5701 +reports-service.hazelcast.login=dev +reports-service.hazelcast.password=dev-pass reports-service.kafka-consumer.bootstrap-servers=localhost:9092 reports-service.kafka-consumer.group-id=dev-group-balance-service @@ -8,16 +10,11 @@ reports-service.kafka-consumer.auto-offset-reset=latest reports-service.kafka-consumer.linger-ms=1 reports-service.kafka-consumer.buffer-memory=33554432 -#reports-service.kafka-producer.bootstrap-servers=localhost:9092 -#reports-service.kafka-producer.acks=all -#reports-service.kafka-producer.retries=0 -#reports-service.kafka-producer.batch-size=16384 -#reports-service.kafka-producer.linger-ms=1 -#reports-service.kafka-producer.buffer-memory=33554432 - -reports-service.hazelcast.cluster-members=127.0.0.1:5701 - #,10.200.200.181:5701 -reports-service.hazelcast.login=dev -reports-service.hazelcast.password=dev-pass +reports-service.kafka-producer.bootstrap-servers=localhost:9092 +reports-service.kafka-producer.acks=all +reports-service.kafka-producer.retries=0 +reports-service.kafka-producer.batch-size=16384 +reports-service.kafka-producer.linger-ms=1 +reports-service.kafka-producer.buffer-memory=33554432 reports-service.ReportModuleOut=./report_out diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java new file mode 100644 index 000000000..4133bd829 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java @@ -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; + } + +} diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java new file mode 100644 index 000000000..a0e09f150 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java @@ -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 executionFondImdg; + private Imdg executionDepositImdg; + private Imdg companyImdg; + private Imdg registryImdg; + private Imdg listingImdg; + private Imdg fixedIncomeSecurityImdg; + private Imdg tradingClearingRegistryImdg; + private Imdg paymentInstructionImdg; + private Imdg statementImdg; + private Imdg sTradeImdg; + @Autowired + private ReportService reportService; + @Autowired + @Qualifier("hazelcastServiceTest") + private ImdgProvider imdgProvider; + + @Autowired + @Qualifier("mockProducer") + private Producer 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 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 expectedValueForColumn = new HashMap<>(); + Map 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(); + } +} diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv new file mode 100644 index 000000000..e56f1778b --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv new file mode 100644 index 000000000..0e82e2d79 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv new file mode 100644 index 000000000..473063b11 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv new file mode 100644 index 000000000..fae8b0a3f --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_empty_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_empty_expected.csv new file mode 100644 index 000000000..a5e3347ef --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/KS_BR_PFX64_empty_expected.csv @@ -0,0 +1 @@ +id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_liabilities_claims_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_liabilities_claims_expected.csv new file mode 100644 index 000000000..262bcead4 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_liabilities_claims_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_money_change_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_money_change_expected.csv new file mode 100644 index 000000000..0e4a9fb03 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/operational_money_change_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_liabilities_claims_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_liabilities_claims_expected.csv new file mode 100644 index 000000000..56594dd85 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_liabilities_claims_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_money_change_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_money_change_expected.csv new file mode 100644 index 000000000..655fa902b --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/period_money_change_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_liabilities_claims_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_liabilities_claims_expected.csv new file mode 100644 index 000000000..7f5048002 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_liabilities_claims_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_money_change_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_money_change_expected.csv new file mode 100644 index 000000000..a9085ae59 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/summary_money_change_expected.csv @@ -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" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/unfulfilled_deal_report_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/unfulfilled_deal_report_expected.csv new file mode 100644 index 000000000..866e1ccdb --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/unfulfilled_deal_report_expected.csv @@ -0,0 +1,2 @@ +id,securityId,tradeNo,tradeDate,settleCode +"888","3007","777","07.05.2023","test-class-code" diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java index 322141ff7..3e794ee5d 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java @@ -135,6 +135,10 @@ public class TestUtils { return getJsonBaseRequest(accountRequest, id, ActionType.DELETE); } + public static String getJsonStringForSystem(T request, long id) { + return getJsonBaseRequest(request, id, ActionType.SYSTEM); + } + private static String getJsonBaseRequest(T accountRequest, long id, ActionType actionType) { BaseRequest baseRequest = new BaseRequest<>(); baseRequest.setRequestPayload(accountRequest); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java new file mode 100644 index 000000000..411efd74a --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java @@ -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; + } + +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 81efc6be3..2b584427c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -71,6 +71,11 @@ public interface Consts { String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update"; String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; + String CREATE_REPORT = "create-report"; + String CREATE_REPORT_FOR_SESSION_ID = "create-report-for-session-id"; + String CREATE_REPORT_FOR_SESSION_ID_LIST = "create-report-for-session-id-list"; + String CREATE_REPORT_FOR_PERIOD = "create-report-for-period"; + @Deprecated String ACCOUNT_NEW_SDF01 = "account-new-sdf01"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java index 17952def1..3cd4c9aca 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java @@ -1,6 +1,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.platform.enumeration.ReportType; /** * Запрос отчёта (без параметров) report-service @@ -8,10 +9,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class ReportRequest { /** * Идентификатор отчёта - * см. {@link ru.spcex.clearing.reports.reports.ReportsEnum} + * см. {@link ReportType} */ @JsonProperty - protected String reportId; + public String reportId; public String getReportId() { return reportId; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java similarity index 89% rename from platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java rename to platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java index 4f4c80c75..983d92d8e 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java @@ -11,16 +11,16 @@ import java.time.LocalDate; /** * Запрос отчёта с периодом report-service */ -public class ReportWithPeriodRequest extends ReportRequest { +public class ReportRequestWithPeriod extends ReportRequest { @JsonSerialize(using = LocalDateSerializer.class) @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty - protected LocalDate startDate; + public LocalDate startDate; @JsonSerialize(using = LocalDateSerializer.class) @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty - protected LocalDate endDate; + public LocalDate endDate; public LocalDate getStartDate() { return startDate; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java new file mode 100644 index 000000000..c065ad6b4 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java @@ -0,0 +1,22 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.reports; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Запрос на построение отчета по SessionId + */ +public class ReportRequestWithSessionId extends ReportRequest { + /** + * Идентификатор сессии + */ + @JsonProperty + public Long sessionId; + + public Long getSessionId() { + return sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java new file mode 100644 index 000000000..d5f9bce77 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.reports; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +/** + * Запрос на построение отчета по списку SessionId + */ +public class ReportRequestWithSessionIdList extends ReportRequest { + /** + * Идентификатор сессии + */ + @JsonProperty + public List sessionId; + + public List getSessionIdList() { + return sessionId; + } + + public void setSessionIdList(List sessionId) { + this.sessionId = sessionId; + } +}