cls-52/53

This commit is contained in:
akulikov 2023-01-09 19:16:19 +03:00
parent 0b27f29865
commit 52365c093f
8 changed files with 548 additions and 229 deletions

View file

@ -1,15 +1,23 @@
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;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
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.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.ReportsService;
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 java.io.File;
@ -21,32 +29,49 @@ public class ReportsServiceApplication {
public static void main(String[] args) {
try {
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
builder.run(args);
ConfigurableApplicationContext context = builder.run(args);
test(context);
//todo это тест. Переписать код:
Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
ImdgProvider imdg = context.getBean(ImdgProvider.class);
log.info("Wait IMDG...");
imdg.waitAvailable();
log.info("Run generate report.");
Map<String, ReportDataCollector> allReports = context.getBeansOfType(ReportDataCollector.class);
log.info("Report types: {}", allReports);
for (ReportDataCollector collector : allReports.values()) {
log.info("Make report {}", collector);
File outPath=new File(".");
XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), outPath);
LocalDate date2 = LocalDate.now();
LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
AbstractReport report = collector.collectReportWithPeriod(date1, date2);
xmlReportBuilder.createReport(report);
}
log.info("Shutdown application after work");
context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому.
// Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
// ImdgProvider imdg = context.getBean(ImdgProvider.class);
// log.info("Wait IMDG...");
// imdg.waitAvailable();
// log.info("Run generate report.");
// Map<String, ReportDataCollector> allReports = context.getBeansOfType(ReportDataCollector.class);
// log.info("Report types: {}", allReports);
// for (ReportDataCollector collector : allReports.values()) {
// log.info("Make report {}", collector);
// File outPath=new File(".");
// XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), outPath);
// LocalDate date2 = LocalDate.now();
// LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
// AbstractReport report = collector.collectReportWithPeriod(date1, date2);
// xmlReportBuilder.createReport(report);
// }
// log.info("Shutdown application after work");
// context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому.
} catch (Throwable e) {
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
System.exit(-1);
}
ReportsService reportsService = new ReportsService();
reportsService.writeXML();
// ReportsService reportsService = new ReportsService();
// 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);
}
}

View file

@ -2,11 +2,15 @@ package ru.spcex.clearing.reports.reports.bt_12_2;
import com.thoughtworks.xstream.annotations.XStreamAlias;
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.ReportWithPeriod;
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@XStreamAlias("netPositionBank")
public class ReportPA_BT2_B extends ReportWithPeriod {
@ -14,111 +18,155 @@ public class ReportPA_BT2_B extends ReportWithPeriod {
@XStreamAlias("clearingMemberCategory")
private String clearingMemberCategory;
@XStreamAlias("liabilitiesClaimsAssets_fullName")
private String liabilitiesClaimsAssetsFullName;
@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("rows")
private List<Row> rows;
@XStreamAlias("total")
private Total total;
public ReportPA_BT2_B(LocalDate startDate,
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) {
LocalDate endDate) {
super(ReportId.PA_BT2_B,
"0.0.1",
"BT2",
"BT12.2",
"Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)",
startDate,
endDate);
this.clearingMemberCategory = clearingMemberCategory;
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);
this.clearingMemberCategory = "B";
}
@Override
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(endDate),
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")
public static class Total {
@XStreamAsAttribute
@XStreamAlias("claimsAmount")
private String claimsAmount;
private BigDecimal claimsAmount;
@XStreamAsAttribute
@XStreamAlias("liabilitiesAmount")
private String liabilitiesAmount;
private BigDecimal liabilitiesAmount;
@XStreamAsAttribute
@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.liabilitiesAmount = liabilitiesAmount;
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;
}
}
}

View file

@ -2,11 +2,15 @@ package ru.spcex.clearing.reports.reports.bt_12_2;
import com.thoughtworks.xstream.annotations.XStreamAlias;
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.ReportWithPeriod;
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@XStreamAlias("netPositionInitiator")
public class ReportPA_BT2_IV extends ReportWithPeriod {
@ -14,84 +18,22 @@ public class ReportPA_BT2_IV extends ReportWithPeriod {
@XStreamAlias("clearingMemberCategory")
private String clearingMemberCategory;
@XStreamAlias("liabilitiesClaimsAssets_fullName")
private String liabilitiesClaimsAssetsFullName;
@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("rows")
private List<Row> rows;
@XStreamAlias("total")
private Total total;
public ReportPA_BT2_IV(LocalDate startDate,
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) {
LocalDate endDate) {
super(ReportId.PA_BT2_IV,
"0.0.1",
"BT2",
"Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)",
startDate,
endDate);
this.clearingMemberCategory = clearingMemberCategory;
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);
this.clearingMemberCategory = "I,V";
}
@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")
public static class Total {
@XStreamAlias("claimsAmount")
private String claimsAmount;
private BigDecimal claimsAmount;
@XStreamAlias("liabilitiesAmount")
private String liabilitiesAmount;
private BigDecimal liabilitiesAmount;
@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.liabilitiesAmount = liabilitiesAmount;
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;
}
}
}

View file

@ -226,45 +226,45 @@ public class ReportsService {
/* ========= БТ 12.2 ========== */
ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(),
LocalDate.now(),
"clearingMemberCategory",
"liabilitiesClaimsAssetsFullName",
"companyClearingCode",
"liabilitiesClaimsAssetsSettlementDate",
"liabilitiesClaimsAssetsRefundDate",
"liabilitiesClaimsAssetsTradingDate",
"liabilitiesClaimsAssetsContract",
"liabilitiesClaimsAssetsLiabilitiesQuantity",
"chargeCommission",
"liabilitiesClaimsAssetsClaimsQuantity",
"liabilitiesClaimsAssetsRefundPaymentId",
"liabilitiesClaimsAssetsClearingStatus",
"liabilitiesClaimsAssetsComment",
"claimsAmount",
"liabilitiesAmount",
"paymentAmount");
log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv));
// ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(),
// LocalDate.now(),
// "clearingMemberCategory",
// "liabilitiesClaimsAssetsFullName",
// "companyClearingCode",
// "liabilitiesClaimsAssetsSettlementDate",
// "liabilitiesClaimsAssetsRefundDate",
// "liabilitiesClaimsAssetsTradingDate",
// "liabilitiesClaimsAssetsContract",
// "liabilitiesClaimsAssetsLiabilitiesQuantity",
// "chargeCommission",
// "liabilitiesClaimsAssetsClaimsQuantity",
// "liabilitiesClaimsAssetsRefundPaymentId",
// "liabilitiesClaimsAssetsClearingStatus",
// "liabilitiesClaimsAssetsComment",
// "claimsAmount",
// "liabilitiesAmount",
// "paymentAmount");
// log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv));
ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(),
LocalDate.now(),
"clearingMemberCategory",
"liabilitiesClaimsAssetsFullName",
"companyClearingCode",
"liabilitiesClaimsAssetsSettlementDate",
"liabilitiesClaimsAssetsRefundDate",
"liabilitiesClaimsAssetsTradingDate",
"liabilitiesClaimsAssetsContract",
"liabilitiesClaimsAssetsLiabilitiesQuantity",
"chargeCommission",
"liabilitiesClaimsAssetsClaimsQuantity",
"liabilitiesClaimsAssetsRefundPaymentId",
"liabilitiesClaimsAssetsClearingStatus",
"liabilitiesClaimsAssetsComment",
"claimsAmount",
"liabilitiesAmount",
"paymentAmount");
log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b));
// ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(),
// LocalDate.now(),
// "clearingMemberCategory",
// "liabilitiesClaimsAssetsFullName",
// "companyClearingCode",
// "liabilitiesClaimsAssetsSettlementDate",
// "liabilitiesClaimsAssetsRefundDate",
// "liabilitiesClaimsAssetsTradingDate",
// "liabilitiesClaimsAssetsContract",
// "liabilitiesClaimsAssetsLiabilitiesQuantity",
// "chargeCommission",
// "liabilitiesClaimsAssetsClaimsQuantity",
// "liabilitiesClaimsAssetsRefundPaymentId",
// "liabilitiesClaimsAssetsClearingStatus",
// "liabilitiesClaimsAssetsComment",
// "claimsAmount",
// "liabilitiesAmount",
// "paymentAmount");
// log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b));

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -11,12 +11,12 @@ 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.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