cls-52/53
This commit is contained in:
parent
0b27f29865
commit
52365c093f
8 changed files with 548 additions and 229 deletions
|
|
@ -1,15 +1,23 @@
|
||||||
package ru.spcex.clearing.reports;
|
package ru.spcex.clearing.reports;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.XStream;
|
||||||
|
import com.thoughtworks.xstream.io.naming.NoNameCoder;
|
||||||
|
import com.thoughtworks.xstream.io.xml.XppDriver;
|
||||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import ru.spcex.clearing.reports.notifications.REXNotificationBuilder;
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_B;
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_IV;
|
||||||
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
||||||
import ru.spcex.clearing.reports.services.ReportsService;
|
import ru.spcex.clearing.reports.services.ReportsService;
|
||||||
import ru.spcex.clearing.reports.services.builders.XMLReportBuilder;
|
import ru.spcex.clearing.reports.services.builders.XMLReportBuilder;
|
||||||
|
import ru.spcex.clearing.reports.services.collector.ReportPA_BT2_B_Collector;
|
||||||
|
import ru.spcex.clearing.reports.services.collector.ReportPA_BT2_IV_Collector;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -21,32 +29,49 @@ public class ReportsServiceApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
|
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
|
||||||
|
builder.run(args);
|
||||||
ConfigurableApplicationContext context = builder.run(args);
|
ConfigurableApplicationContext context = builder.run(args);
|
||||||
|
|
||||||
|
test(context);
|
||||||
|
|
||||||
//todo это тест. Переписать код:
|
//todo это тест. Переписать код:
|
||||||
Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
// Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
||||||
ImdgProvider imdg = context.getBean(ImdgProvider.class);
|
// ImdgProvider imdg = context.getBean(ImdgProvider.class);
|
||||||
log.info("Wait IMDG...");
|
// log.info("Wait IMDG...");
|
||||||
imdg.waitAvailable();
|
// imdg.waitAvailable();
|
||||||
log.info("Run generate report.");
|
// log.info("Run generate report.");
|
||||||
Map<String, ReportDataCollector> allReports = context.getBeansOfType(ReportDataCollector.class);
|
// Map<String, ReportDataCollector> allReports = context.getBeansOfType(ReportDataCollector.class);
|
||||||
log.info("Report types: {}", allReports);
|
// log.info("Report types: {}", allReports);
|
||||||
for (ReportDataCollector collector : allReports.values()) {
|
// for (ReportDataCollector collector : allReports.values()) {
|
||||||
log.info("Make report {}", collector);
|
// log.info("Make report {}", collector);
|
||||||
File outPath=new File(".");
|
// File outPath=new File(".");
|
||||||
XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), outPath);
|
// XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), outPath);
|
||||||
LocalDate date2 = LocalDate.now();
|
// LocalDate date2 = LocalDate.now();
|
||||||
LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
|
// LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
|
||||||
AbstractReport report = collector.collectReportWithPeriod(date1, date2);
|
// AbstractReport report = collector.collectReportWithPeriod(date1, date2);
|
||||||
xmlReportBuilder.createReport(report);
|
// xmlReportBuilder.createReport(report);
|
||||||
}
|
// }
|
||||||
log.info("Shutdown application after work");
|
// log.info("Shutdown application after work");
|
||||||
context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому.
|
// context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому.
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
}
|
}
|
||||||
ReportsService reportsService = new ReportsService();
|
// ReportsService reportsService = new ReportsService();
|
||||||
reportsService.writeXML();
|
// reportsService.writeXML();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void test(ConfigurableApplicationContext context) {
|
||||||
|
ImdgProvider imdg = context.getBean(ImdgProvider.class);
|
||||||
|
ReportPA_BT2_IV_Collector collector = new ReportPA_BT2_IV_Collector(imdg);
|
||||||
|
ReportPA_BT2_IV report = collector.collectReportWithPeriod(
|
||||||
|
LocalDate.of(2022, 12, 1),
|
||||||
|
LocalDate.of(2023, 1, 1)
|
||||||
|
);
|
||||||
|
XStream xStream = new XStream(new XppDriver(new NoNameCoder()));
|
||||||
|
xStream.processAnnotations(ReportPA_BT2_IV.class);
|
||||||
|
String out = xStream.toXML(report);
|
||||||
|
System.out.println(out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,15 @@ package ru.spcex.clearing.reports.reports.bt_12_2;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
import ru.spcex.clearing.reports.reports.ReportId;
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
||||||
|
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("netPositionBank")
|
@XStreamAlias("netPositionBank")
|
||||||
public class ReportPA_BT2_B extends ReportWithPeriod {
|
public class ReportPA_BT2_B extends ReportWithPeriod {
|
||||||
|
|
@ -14,111 +18,155 @@ public class ReportPA_BT2_B extends ReportWithPeriod {
|
||||||
@XStreamAlias("clearingMemberCategory")
|
@XStreamAlias("clearingMemberCategory")
|
||||||
private String clearingMemberCategory;
|
private String clearingMemberCategory;
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_fullName")
|
@XStreamAlias("rows")
|
||||||
private String liabilitiesClaimsAssetsFullName;
|
private List<Row> rows;
|
||||||
|
|
||||||
@XStreamAlias("company_clearingCode")
|
|
||||||
private String companyClearingCode;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_settlementDate")
|
|
||||||
private String liabilitiesClaimsAssetsSettlementDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_refundDate")
|
|
||||||
private String liabilitiesClaimsAssetsRefundDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_tradingDate")
|
|
||||||
private String liabilitiesClaimsAssetsTradingDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_contract")
|
|
||||||
private String liabilitiesClaimsAssetsContract;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity")
|
|
||||||
private String liabilitiesClaimsAssetsLiabilitiesQuantity;
|
|
||||||
|
|
||||||
@XStreamAlias("chargeCommission")
|
|
||||||
private String chargeCommission;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity")
|
|
||||||
private String liabilitiesClaimsAssetsClaimsQuantity;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_refundPaymentId")
|
|
||||||
private String liabilitiesClaimsAssetsRefundPaymentId;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_clearingStatus")
|
|
||||||
private String liabilitiesClaimsAssetsClearingStatus;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_comment")
|
|
||||||
private String liabilitiesClaimsAssetsComment;
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
@XStreamAlias("total")
|
||||||
private Total total;
|
private Total total;
|
||||||
|
|
||||||
|
|
||||||
public ReportPA_BT2_B(LocalDate startDate,
|
public ReportPA_BT2_B(LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate) {
|
||||||
String clearingMemberCategory,
|
|
||||||
String liabilitiesClaimsAssetsFullName,
|
|
||||||
String companyClearingCode,
|
|
||||||
String liabilitiesClaimsAssetsSettlementDate,
|
|
||||||
String liabilitiesClaimsAssetsRefundDate,
|
|
||||||
String liabilitiesClaimsAssetsTradingDate,
|
|
||||||
String liabilitiesClaimsAssetsContract,
|
|
||||||
String liabilitiesClaimsAssetsLiabilitiesQuantity,
|
|
||||||
String chargeCommission,
|
|
||||||
String liabilitiesClaimsAssetsClaimsQuantity,
|
|
||||||
String liabilitiesClaimsAssetsRefundPaymentId,
|
|
||||||
String liabilitiesClaimsAssetsClearingStatus,
|
|
||||||
String liabilitiesClaimsAssetsComment,
|
|
||||||
String claimsAmount,
|
|
||||||
String liabilitiesAmount,
|
|
||||||
String paymentAmount) {
|
|
||||||
super(ReportId.PA_BT2_B,
|
super(ReportId.PA_BT2_B,
|
||||||
"0.0.1",
|
"0.0.1",
|
||||||
"BT2",
|
"BT12.2",
|
||||||
"Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)",
|
"Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)",
|
||||||
startDate,
|
startDate,
|
||||||
endDate);
|
endDate);
|
||||||
this.clearingMemberCategory = clearingMemberCategory;
|
this.clearingMemberCategory = "B";
|
||||||
this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName;
|
|
||||||
this.companyClearingCode = companyClearingCode;
|
|
||||||
this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate;
|
|
||||||
this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate;
|
|
||||||
this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate;
|
|
||||||
this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract;
|
|
||||||
this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity;
|
|
||||||
this.chargeCommission = chargeCommission;
|
|
||||||
this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity;
|
|
||||||
this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId;
|
|
||||||
this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus;
|
|
||||||
this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment;
|
|
||||||
this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
public String getReportName(LocalDateTime reportDateTime) {
|
||||||
return "REPPA.BT12.2.B.%s-%s.%s".formatted(
|
return "REPPA.B.%s-%s.%s".formatted(
|
||||||
DATE_FORMATTER.format(startDate),
|
DATE_FORMATTER.format(startDate),
|
||||||
DATE_FORMATTER.format(endDate),
|
DATE_FORMATTER.format(endDate),
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
DATE_TIME_FORMATTER.format(reportDateTime)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Total getTotal() {
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotal(Total total) {
|
||||||
|
this.total = total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Row> getRows() {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRows(List<Row> rows) {
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
@XStreamAlias("total")
|
||||||
public static class Total {
|
public static class Total {
|
||||||
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("claimsAmount")
|
@XStreamAlias("claimsAmount")
|
||||||
private String claimsAmount;
|
private BigDecimal claimsAmount;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("liabilitiesAmount")
|
@XStreamAlias("liabilitiesAmount")
|
||||||
private String liabilitiesAmount;
|
private BigDecimal liabilitiesAmount;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("paymentAmount")
|
@XStreamAlias("paymentAmount")
|
||||||
private String paymentAmount;
|
private BigDecimal paymentAmount;
|
||||||
|
|
||||||
public Total(String claimsAmount, String liabilitiesAmount, String paymentAmount) {
|
public Total(BigDecimal claimsAmount, BigDecimal liabilitiesAmount, BigDecimal paymentAmount) {
|
||||||
this.claimsAmount = claimsAmount;
|
this.claimsAmount = claimsAmount;
|
||||||
this.liabilitiesAmount = liabilitiesAmount;
|
this.liabilitiesAmount = liabilitiesAmount;
|
||||||
this.paymentAmount = paymentAmount;
|
this.paymentAmount = paymentAmount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@XStreamAlias("row")
|
||||||
|
public static class Row {
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_fullName")
|
||||||
|
private String liabilitiesClaimsAssetsFullName;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("company_clearingCode")
|
||||||
|
private String companyClearingCode;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_settlementDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsSettlementDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_refundDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsRefundDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_tradingDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsTradingDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_contract")
|
||||||
|
private String liabilitiesClaimsAssetsContract;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity")
|
||||||
|
private BigDecimal liabilitiesClaimsAssetsLiabilitiesQuantity;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("chargeCommission")
|
||||||
|
private String chargeCommission;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity")
|
||||||
|
private BigDecimal liabilitiesClaimsAssetsClaimsQuantity;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_refundPaymentId")
|
||||||
|
private Long liabilitiesClaimsAssetsRefundPaymentId;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_clearingStatus")
|
||||||
|
private Long liabilitiesClaimsAssetsClearingStatus;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_comment")
|
||||||
|
private String liabilitiesClaimsAssetsComment;
|
||||||
|
|
||||||
|
public Row(Long id,
|
||||||
|
String liabilitiesClaimsAssetsFullName,
|
||||||
|
String companyClearingCode,
|
||||||
|
LocalDate liabilitiesClaimsAssetsSettlementDate,
|
||||||
|
LocalDate liabilitiesClaimsAssetsRefundDate,
|
||||||
|
LocalDate liabilitiesClaimsAssetsTradingDate,
|
||||||
|
String liabilitiesClaimsAssetsContract,
|
||||||
|
BigDecimal liabilitiesClaimsAssetsLiabilitiesQuantity,
|
||||||
|
String chargeCommission,
|
||||||
|
BigDecimal liabilitiesClaimsAssetsClaimsQuantity,
|
||||||
|
Long liabilitiesClaimsAssetsRefundPaymentId,
|
||||||
|
Long liabilitiesClaimsAssetsClearingStatus,
|
||||||
|
String liabilitiesClaimsAssetsComment) {
|
||||||
|
this.id = id;
|
||||||
|
this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName;
|
||||||
|
this.companyClearingCode = companyClearingCode;
|
||||||
|
this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate;
|
||||||
|
this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate;
|
||||||
|
this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate;
|
||||||
|
this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract;
|
||||||
|
this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity;
|
||||||
|
this.chargeCommission = chargeCommission;
|
||||||
|
this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity;
|
||||||
|
this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId;
|
||||||
|
this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus;
|
||||||
|
this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,15 @@ package ru.spcex.clearing.reports.reports.bt_12_2;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
import ru.spcex.clearing.reports.reports.ReportId;
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
||||||
|
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("netPositionInitiator")
|
@XStreamAlias("netPositionInitiator")
|
||||||
public class ReportPA_BT2_IV extends ReportWithPeriod {
|
public class ReportPA_BT2_IV extends ReportWithPeriod {
|
||||||
|
|
@ -14,84 +18,22 @@ public class ReportPA_BT2_IV extends ReportWithPeriod {
|
||||||
@XStreamAlias("clearingMemberCategory")
|
@XStreamAlias("clearingMemberCategory")
|
||||||
private String clearingMemberCategory;
|
private String clearingMemberCategory;
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_fullName")
|
@XStreamAlias("rows")
|
||||||
private String liabilitiesClaimsAssetsFullName;
|
private List<Row> rows;
|
||||||
|
|
||||||
@XStreamAlias("company_clearingCode")
|
|
||||||
private String companyClearingCode;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_settlementDate")
|
|
||||||
private String liabilitiesClaimsAssetsSettlementDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_refundDate")
|
|
||||||
private String liabilitiesClaimsAssetsRefundDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_tradingDate")
|
|
||||||
private String liabilitiesClaimsAssetsTradingDate;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_contract")
|
|
||||||
private String liabilitiesClaimsAssetsContract;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity")
|
|
||||||
private String liabilitiesClaimsAssetsLiabilitiesQuantity;
|
|
||||||
|
|
||||||
@XStreamAlias("chargeCommission")
|
|
||||||
private String chargeCommission;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity")
|
|
||||||
private String liabilitiesClaimsAssetsClaimsQuantity;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_refundPaymentId")
|
|
||||||
private String liabilitiesClaimsAssetsRefundPaymentId;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_clearingStatus")
|
|
||||||
private String liabilitiesClaimsAssetsClearingStatus;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesClaimsAssets_comment")
|
|
||||||
private String liabilitiesClaimsAssetsComment;
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
@XStreamAlias("total")
|
||||||
private Total total;
|
private Total total;
|
||||||
|
|
||||||
|
|
||||||
public ReportPA_BT2_IV(LocalDate startDate,
|
public ReportPA_BT2_IV(LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate) {
|
||||||
String clearingMemberCategory,
|
|
||||||
String liabilitiesClaimsAssetsFullName,
|
|
||||||
String companyClearingCode,
|
|
||||||
String liabilitiesClaimsAssetsSettlementDate,
|
|
||||||
String liabilitiesClaimsAssetsRefundDate,
|
|
||||||
String liabilitiesClaimsAssetsTradingDate,
|
|
||||||
String liabilitiesClaimsAssetsContract,
|
|
||||||
String liabilitiesClaimsAssetsLiabilitiesQuantity,
|
|
||||||
String chargeCommission,
|
|
||||||
String liabilitiesClaimsAssetsClaimsQuantity,
|
|
||||||
String liabilitiesClaimsAssetsRefundPaymentId,
|
|
||||||
String liabilitiesClaimsAssetsClearingStatus,
|
|
||||||
String liabilitiesClaimsAssetsComment,
|
|
||||||
String claimsAmount,
|
|
||||||
String liabilitiesAmount,
|
|
||||||
String paymentAmount) {
|
|
||||||
super(ReportId.PA_BT2_IV,
|
super(ReportId.PA_BT2_IV,
|
||||||
"0.0.1",
|
"0.0.1",
|
||||||
"BT2",
|
"BT2",
|
||||||
"Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)",
|
"Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)",
|
||||||
startDate,
|
startDate,
|
||||||
endDate);
|
endDate);
|
||||||
this.clearingMemberCategory = clearingMemberCategory;
|
this.clearingMemberCategory = "I,V";
|
||||||
this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName;
|
|
||||||
this.companyClearingCode = companyClearingCode;
|
|
||||||
this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate;
|
|
||||||
this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate;
|
|
||||||
this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate;
|
|
||||||
this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract;
|
|
||||||
this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity;
|
|
||||||
this.chargeCommission = chargeCommission;
|
|
||||||
this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity;
|
|
||||||
this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId;
|
|
||||||
this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus;
|
|
||||||
this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment;
|
|
||||||
this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -103,22 +45,125 @@ public class ReportPA_BT2_IV extends ReportWithPeriod {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Row> getRows() {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRows(List<Row> rows) {
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Total getTotal() {
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotal(Total total) {
|
||||||
|
this.total = total;
|
||||||
|
}
|
||||||
|
|
||||||
@XStreamAlias("total")
|
@XStreamAlias("total")
|
||||||
public static class Total {
|
public static class Total {
|
||||||
@XStreamAlias("claimsAmount")
|
@XStreamAlias("claimsAmount")
|
||||||
private String claimsAmount;
|
private BigDecimal claimsAmount;
|
||||||
|
|
||||||
@XStreamAlias("liabilitiesAmount")
|
@XStreamAlias("liabilitiesAmount")
|
||||||
private String liabilitiesAmount;
|
private BigDecimal liabilitiesAmount;
|
||||||
|
|
||||||
@XStreamAlias("paymentAmount")
|
@XStreamAlias("paymentAmount")
|
||||||
private String paymentAmount;
|
private BigDecimal paymentAmount;
|
||||||
|
|
||||||
public Total(String claimsAmount, String liabilitiesAmount, String paymentAmount) {
|
public Total(BigDecimal claimsAmount, BigDecimal liabilitiesAmount, BigDecimal paymentAmount) {
|
||||||
this.claimsAmount = claimsAmount;
|
this.claimsAmount = claimsAmount;
|
||||||
this.liabilitiesAmount = liabilitiesAmount;
|
this.liabilitiesAmount = liabilitiesAmount;
|
||||||
this.paymentAmount = paymentAmount;
|
this.paymentAmount = paymentAmount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@XStreamAlias("row")
|
||||||
|
public static class Row {
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_fullName")
|
||||||
|
private String liabilitiesClaimsAssetsFullName;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("company_clearingCode")
|
||||||
|
private String companyClearingCode;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_settlementDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsSettlementDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_refundDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsRefundDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_tradingDate")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private LocalDate liabilitiesClaimsAssetsTradingDate;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_contract")
|
||||||
|
private String liabilitiesClaimsAssetsContract;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity")
|
||||||
|
private BigDecimal liabilitiesClaimsAssetsLiabilitiesQuantity;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("chargeCommission")
|
||||||
|
private String chargeCommission;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity")
|
||||||
|
private BigDecimal liabilitiesClaimsAssetsClaimsQuantity;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_refundPaymentId")
|
||||||
|
private Long liabilitiesClaimsAssetsRefundPaymentId;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_clearingStatus")
|
||||||
|
private Long liabilitiesClaimsAssetsClearingStatus;
|
||||||
|
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("liabilitiesClaimsAssets_comment")
|
||||||
|
private String liabilitiesClaimsAssetsComment;
|
||||||
|
|
||||||
|
|
||||||
|
public Row(Long id,
|
||||||
|
String liabilitiesClaimsAssetsFullName,
|
||||||
|
String companyClearingCode,
|
||||||
|
LocalDate liabilitiesClaimsAssetsSettlementDate,
|
||||||
|
LocalDate liabilitiesClaimsAssetsRefundDate,
|
||||||
|
LocalDate liabilitiesClaimsAssetsTradingDate,
|
||||||
|
String liabilitiesClaimsAssetsContract,
|
||||||
|
BigDecimal liabilitiesClaimsAssetsLiabilitiesQuantity,
|
||||||
|
String chargeCommission,
|
||||||
|
BigDecimal liabilitiesClaimsAssetsClaimsQuantity,
|
||||||
|
Long liabilitiesClaimsAssetsRefundPaymentId,
|
||||||
|
Long liabilitiesClaimsAssetsClearingStatus,
|
||||||
|
String liabilitiesClaimsAssetsComment) {
|
||||||
|
this.id = id;
|
||||||
|
this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName;
|
||||||
|
this.companyClearingCode = companyClearingCode;
|
||||||
|
this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate;
|
||||||
|
this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate;
|
||||||
|
this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate;
|
||||||
|
this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract;
|
||||||
|
this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity;
|
||||||
|
this.chargeCommission = chargeCommission;
|
||||||
|
this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity;
|
||||||
|
this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId;
|
||||||
|
this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus;
|
||||||
|
this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -226,45 +226,45 @@ public class ReportsService {
|
||||||
|
|
||||||
|
|
||||||
/* ========= БТ 12.2 ========== */
|
/* ========= БТ 12.2 ========== */
|
||||||
ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(),
|
// ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(),
|
||||||
LocalDate.now(),
|
// LocalDate.now(),
|
||||||
"clearingMemberCategory",
|
// "clearingMemberCategory",
|
||||||
"liabilitiesClaimsAssetsFullName",
|
// "liabilitiesClaimsAssetsFullName",
|
||||||
"companyClearingCode",
|
// "companyClearingCode",
|
||||||
"liabilitiesClaimsAssetsSettlementDate",
|
// "liabilitiesClaimsAssetsSettlementDate",
|
||||||
"liabilitiesClaimsAssetsRefundDate",
|
// "liabilitiesClaimsAssetsRefundDate",
|
||||||
"liabilitiesClaimsAssetsTradingDate",
|
// "liabilitiesClaimsAssetsTradingDate",
|
||||||
"liabilitiesClaimsAssetsContract",
|
// "liabilitiesClaimsAssetsContract",
|
||||||
"liabilitiesClaimsAssetsLiabilitiesQuantity",
|
// "liabilitiesClaimsAssetsLiabilitiesQuantity",
|
||||||
"chargeCommission",
|
// "chargeCommission",
|
||||||
"liabilitiesClaimsAssetsClaimsQuantity",
|
// "liabilitiesClaimsAssetsClaimsQuantity",
|
||||||
"liabilitiesClaimsAssetsRefundPaymentId",
|
// "liabilitiesClaimsAssetsRefundPaymentId",
|
||||||
"liabilitiesClaimsAssetsClearingStatus",
|
// "liabilitiesClaimsAssetsClearingStatus",
|
||||||
"liabilitiesClaimsAssetsComment",
|
// "liabilitiesClaimsAssetsComment",
|
||||||
"claimsAmount",
|
// "claimsAmount",
|
||||||
"liabilitiesAmount",
|
// "liabilitiesAmount",
|
||||||
"paymentAmount");
|
// "paymentAmount");
|
||||||
log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv));
|
// log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv));
|
||||||
|
|
||||||
ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(),
|
// ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(),
|
||||||
LocalDate.now(),
|
// LocalDate.now(),
|
||||||
"clearingMemberCategory",
|
// "clearingMemberCategory",
|
||||||
"liabilitiesClaimsAssetsFullName",
|
// "liabilitiesClaimsAssetsFullName",
|
||||||
"companyClearingCode",
|
// "companyClearingCode",
|
||||||
"liabilitiesClaimsAssetsSettlementDate",
|
// "liabilitiesClaimsAssetsSettlementDate",
|
||||||
"liabilitiesClaimsAssetsRefundDate",
|
// "liabilitiesClaimsAssetsRefundDate",
|
||||||
"liabilitiesClaimsAssetsTradingDate",
|
// "liabilitiesClaimsAssetsTradingDate",
|
||||||
"liabilitiesClaimsAssetsContract",
|
// "liabilitiesClaimsAssetsContract",
|
||||||
"liabilitiesClaimsAssetsLiabilitiesQuantity",
|
// "liabilitiesClaimsAssetsLiabilitiesQuantity",
|
||||||
"chargeCommission",
|
// "chargeCommission",
|
||||||
"liabilitiesClaimsAssetsClaimsQuantity",
|
// "liabilitiesClaimsAssetsClaimsQuantity",
|
||||||
"liabilitiesClaimsAssetsRefundPaymentId",
|
// "liabilitiesClaimsAssetsRefundPaymentId",
|
||||||
"liabilitiesClaimsAssetsClearingStatus",
|
// "liabilitiesClaimsAssetsClearingStatus",
|
||||||
"liabilitiesClaimsAssetsComment",
|
// "liabilitiesClaimsAssetsComment",
|
||||||
"claimsAmount",
|
// "claimsAmount",
|
||||||
"liabilitiesAmount",
|
// "liabilitiesAmount",
|
||||||
"paymentAmount");
|
// "paymentAmount");
|
||||||
log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b));
|
// log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.builders;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class DOCXReportBuilder extends FileReportBuilder {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
protected DOCXReportBuilder(Class<? extends AbstractReport> reportClass, File templateResource) throws IOException {
|
|
||||||
super(reportClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File createReport(AbstractReport report) throws IOException {
|
|
||||||
// todo implement
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
|
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
||||||
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_B;
|
||||||
|
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
||||||
|
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 ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
||||||
|
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateHazelcast;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ReportPA_BT2_B_Collector extends ReportDataCollector<ReportPA_BT2_B> {
|
||||||
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
|
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||||
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
|
||||||
|
public ReportPA_BT2_B_Collector(ImdgProvider imdgProvider) {
|
||||||
|
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
||||||
|
LiabilitiesClaimsAssets.class
|
||||||
|
);
|
||||||
|
clearingStatusDictionaryImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_ClearingStatusDictionary,
|
||||||
|
ClearingStatusDictionary.class
|
||||||
|
);
|
||||||
|
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_ClearingMemberCategory,
|
||||||
|
ClearingMemberCategory.class
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportPA_BT2_B collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
|
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
||||||
|
|
||||||
|
ImdgPredicate clearingMemberCategoryPredicate = builder.equals("clearingMemberCategory", "B");
|
||||||
|
Collection<ClearingMemberCategory> clearingMemberCategories =
|
||||||
|
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
|
||||||
|
Set<Long> companyIds = clearingMemberCategories.stream()
|
||||||
|
.map(ClearingMemberCategory::getCompanyId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
ImdgPredicate refundDatePredicate = builder.and(
|
||||||
|
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
||||||
|
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
||||||
|
);
|
||||||
|
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
||||||
|
for (Long companyId : companyIds) {
|
||||||
|
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
||||||
|
}
|
||||||
|
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
||||||
|
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||||
|
|
||||||
|
ReportPA_BT2_B report = new ReportPA_BT2_B(startDate, endDate);
|
||||||
|
List<ReportPA_BT2_B.Row> rows = new ArrayList<>(liabilitiesClaimsAssets.size());
|
||||||
|
BigDecimal claimsAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal liabilitiesAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal paymentAmount = BigDecimal.ZERO;
|
||||||
|
for (LiabilitiesClaimsAssets liabilitiesClaimsAsset : liabilitiesClaimsAssets) {
|
||||||
|
ReportPA_BT2_B.Row row = new ReportPA_BT2_B.Row(
|
||||||
|
liabilitiesClaimsAsset.getId(),
|
||||||
|
liabilitiesClaimsAsset.getFullName(),
|
||||||
|
liabilitiesClaimsAsset.getClearingCode(),
|
||||||
|
liabilitiesClaimsAsset.getSettlementDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getSettlementDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getRefundDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getRefundDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getTradingDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getTradingDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getContract(),
|
||||||
|
liabilitiesClaimsAsset.getLiabilitiesQuantity(),
|
||||||
|
"NOT PRESENTED ON DB", // todo спросить в таске, в базе нету этого поля
|
||||||
|
liabilitiesClaimsAsset.getClaimsQuantity(),
|
||||||
|
liabilitiesClaimsAsset.getRefundPaymentId(),
|
||||||
|
liabilitiesClaimsAsset.getClearingStatus(),
|
||||||
|
liabilitiesClaimsAsset.getComment()
|
||||||
|
);
|
||||||
|
rows.add(row);
|
||||||
|
|
||||||
|
if (liabilitiesClaimsAsset.getClaimsQuantity() != null)
|
||||||
|
claimsAmount = claimsAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
||||||
|
|
||||||
|
if (liabilitiesClaimsAsset.getLiabilitiesQuantity() != null)
|
||||||
|
liabilitiesAmount = liabilitiesAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity());
|
||||||
|
|
||||||
|
paymentAmount = paymentAmount.add(BigDecimal.ZERO); // todo спросить в таске, в тз не указано поле для подсчёта
|
||||||
|
}
|
||||||
|
ReportPA_BT2_B.Total total = new ReportPA_BT2_B.Total(claimsAmount, liabilitiesAmount, paymentAmount);
|
||||||
|
report.setRows(rows);
|
||||||
|
report.setTotal(total);
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ReportPA_BT2_B> getReportClass() {
|
||||||
|
return ReportPA_BT2_B.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
|
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
||||||
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_B;
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_IV;
|
||||||
|
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
||||||
|
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 ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ReportPA_BT2_IV_Collector extends ReportDataCollector<ReportPA_BT2_IV> {
|
||||||
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
|
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||||
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
|
||||||
|
public ReportPA_BT2_IV_Collector(ImdgProvider imdgProvider) {
|
||||||
|
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
||||||
|
LiabilitiesClaimsAssets.class
|
||||||
|
);
|
||||||
|
clearingStatusDictionaryImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_ClearingStatusDictionary,
|
||||||
|
ClearingStatusDictionary.class
|
||||||
|
);
|
||||||
|
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_ClearingMemberCategory,
|
||||||
|
ClearingMemberCategory.class
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportPA_BT2_IV collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
|
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
||||||
|
|
||||||
|
ImdgPredicate clearingMemberCategoryPredicate = builder.or(
|
||||||
|
builder.equals("clearingMemberCategory", "I"),
|
||||||
|
builder.equals("clearingMemberCategory", "V")
|
||||||
|
);
|
||||||
|
Collection<ClearingMemberCategory> clearingMemberCategories =
|
||||||
|
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
|
||||||
|
Set<Long> companyIds = clearingMemberCategories.stream()
|
||||||
|
.map(ClearingMemberCategory::getCompanyId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
ImdgPredicate refundDatePredicate = builder.and(
|
||||||
|
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
||||||
|
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
||||||
|
);
|
||||||
|
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
||||||
|
for (Long companyId : companyIds) {
|
||||||
|
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
||||||
|
}
|
||||||
|
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
||||||
|
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
||||||
|
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||||
|
|
||||||
|
ReportPA_BT2_IV report = new ReportPA_BT2_IV(startDate, endDate);
|
||||||
|
List<ReportPA_BT2_IV.Row> rows = new ArrayList<>(liabilitiesClaimsAssets.size());
|
||||||
|
BigDecimal claimsAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal liabilitiesAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal paymentAmount = BigDecimal.ZERO;
|
||||||
|
for (LiabilitiesClaimsAssets liabilitiesClaimsAsset : liabilitiesClaimsAssets) {
|
||||||
|
ReportPA_BT2_IV.Row row = new ReportPA_BT2_IV.Row(
|
||||||
|
liabilitiesClaimsAsset.getId(),
|
||||||
|
liabilitiesClaimsAsset.getFullName(),
|
||||||
|
liabilitiesClaimsAsset.getClearingCode(),
|
||||||
|
liabilitiesClaimsAsset.getSettlementDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getSettlementDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getRefundDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getRefundDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getTradingDate() != null ? LocalDate.ofInstant(liabilitiesClaimsAsset.getTradingDate(), ZoneId.systemDefault()) : null,
|
||||||
|
liabilitiesClaimsAsset.getContract(),
|
||||||
|
liabilitiesClaimsAsset.getLiabilitiesQuantity(),
|
||||||
|
"NOT PRESENTED ON DB", // todo спросить в таске, в базе нету этого поля
|
||||||
|
liabilitiesClaimsAsset.getClaimsQuantity(),
|
||||||
|
liabilitiesClaimsAsset.getRefundPaymentId(),
|
||||||
|
liabilitiesClaimsAsset.getClearingStatus(),
|
||||||
|
liabilitiesClaimsAsset.getComment()
|
||||||
|
);
|
||||||
|
rows.add(row);
|
||||||
|
|
||||||
|
if (liabilitiesClaimsAsset.getClaimsQuantity() != null)
|
||||||
|
claimsAmount = claimsAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
||||||
|
|
||||||
|
if (liabilitiesClaimsAsset.getLiabilitiesQuantity() != null)
|
||||||
|
liabilitiesAmount = liabilitiesAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity());
|
||||||
|
|
||||||
|
paymentAmount = paymentAmount.add(BigDecimal.ZERO); // todo спросить в таске, в тз не указано поле для подсчёта
|
||||||
|
}
|
||||||
|
ReportPA_BT2_IV.Total total = new ReportPA_BT2_IV.Total(claimsAmount, liabilitiesAmount, paymentAmount);
|
||||||
|
report.setRows(rows);
|
||||||
|
report.setTotal(total);
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ReportPA_BT2_IV> getReportClass() {
|
||||||
|
return ReportPA_BT2_IV.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,12 +11,12 @@ reports-service.kafka-consumer.auto-offset-reset=latest
|
||||||
reports-service.kafka-consumer.linger-ms=1
|
reports-service.kafka-consumer.linger-ms=1
|
||||||
reports-service.kafka-consumer.buffer-memory=33554432
|
reports-service.kafka-consumer.buffer-memory=33554432
|
||||||
|
|
||||||
#reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
reports-service.kafka-producer.bootstrap-servers=localhost:9092
|
||||||
#reports-service.kafka-producer.acks=all
|
reports-service.kafka-producer.acks=all
|
||||||
#reports-service.kafka-producer.retries=0
|
reports-service.kafka-producer.retries=0
|
||||||
#reports-service.kafka-producer.batch-size=16384
|
reports-service.kafka-producer.batch-size=16384
|
||||||
#reports-service.kafka-producer.linger-ms=1
|
reports-service.kafka-producer.linger-ms=1
|
||||||
#reports-service.kafka-producer.buffer-memory=33554432
|
reports-service.kafka-producer.buffer-memory=33554432
|
||||||
|
|
||||||
reports-service.hazelcast.cluster-members=127.0.0.1:5701
|
reports-service.hazelcast.cluster-members=127.0.0.1:5701
|
||||||
#,10.200.200.181:5701
|
#,10.200.200.181:5701
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue