.
This commit is contained in:
parent
16a443b137
commit
d70b537364
10 changed files with 352 additions and 245 deletions
|
|
@ -0,0 +1,23 @@
|
||||||
|
package ru.spcex.clearing.reports.reports;
|
||||||
|
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
public enum Destination implements IEnumKey {
|
||||||
|
BR("BR"), _1C("1C");
|
||||||
|
|
||||||
|
private final String key;
|
||||||
|
|
||||||
|
Destination(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getKey() {
|
||||||
|
return this.key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equalsByKey(String key) {
|
||||||
|
return IEnumKey.super.equalsByKey(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
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 ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XStreamAlias("accountBalanceInfo")
|
||||||
|
public class ReportINACCNT extends AbstractReport {
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("clearingMemberCategory")
|
||||||
|
private final String companyClearingCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Дата в формате: dd.MM.yyyy
|
||||||
|
*/
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("date")
|
||||||
|
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
||||||
|
private final LocalDate date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Время в формате: hh:mm:ss
|
||||||
|
*/
|
||||||
|
@XStreamAsAttribute
|
||||||
|
@XStreamAlias("time")
|
||||||
|
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
||||||
|
private final LocalTime time;
|
||||||
|
|
||||||
|
@XStreamAlias("rows")
|
||||||
|
private List<Row> rows;
|
||||||
|
|
||||||
|
public ReportINACCNT(String companyClearingCode, LocalDate date, LocalTime time) {
|
||||||
|
super(ReportId.BT16_5,
|
||||||
|
"0.0.1",
|
||||||
|
"BT16.5",
|
||||||
|
"Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга");
|
||||||
|
this.companyClearingCode = companyClearingCode;
|
||||||
|
this.date = date;
|
||||||
|
this.time = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReportName(LocalDateTime reportDateTime) {
|
||||||
|
return "INACCNT.%s.%s".formatted(
|
||||||
|
companyClearingCode,
|
||||||
|
DATE_TIME_FORMATTER.format(reportDateTime)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Row> getRows() {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRows(List<Row> rows) {
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XStreamAlias("row")
|
||||||
|
public record Row(@XStreamAsAttribute @XStreamAlias("id") Long id,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("clearingHouse") String clearingHouse,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("accountBalance_account") String accountBalanceAccount,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("accountBalance_openAccount") String accountBalanceOpenAccount,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("accountBalance_debitAccount") String accountBalanceDebitAccount,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("accountBalance_creditAccount") String accountBalanceCreditAccount,
|
||||||
|
@XStreamAsAttribute @XStreamAlias("accountBalance_closeAccount") String accountBalanceCloseAccount) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,8 +2,11 @@ package ru.spcex.clearing.reports.reports.bt_17_1;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
import ru.spcex.clearing.reports.reports.Destination;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
import ru.spcex.clearing.reports.reports.ReportId;
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
||||||
|
import ru.spcex.platform.enumeration.ClearingMemberCategoryD;
|
||||||
|
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -12,7 +15,6 @@ import java.util.List;
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilities")
|
@XStreamAlias("clearedLiabilities")
|
||||||
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
||||||
|
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@XStreamAlias("destination")
|
||||||
private String destination;
|
private String destination;
|
||||||
|
|
@ -25,61 +27,25 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
||||||
private final List<Info_0420315_P1> rows = new ArrayList<>();
|
private final List<Info_0420315_P1> rows = new ArrayList<>();
|
||||||
|
|
||||||
public ReportBR_0420315_P1(LocalDate startDate,
|
public ReportBR_0420315_P1(LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate) {
|
||||||
String destination,
|
|
||||||
String clearingMemberCategory,
|
|
||||||
String clearingStatus) {
|
|
||||||
super(ReportId.BR_0420315_P1,
|
super(ReportId.BR_0420315_P1,
|
||||||
"0.0.1",
|
"0.0.1",
|
||||||
"0420315",
|
"0420315",
|
||||||
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1",
|
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1",
|
||||||
startDate,
|
startDate,
|
||||||
endDate,
|
endDate,
|
||||||
clearingStatus);
|
ClearingStatus.OK.getKey());
|
||||||
this.destination = destination;
|
this.destination = Destination.BR.getKey();
|
||||||
this.clearingMemberCategory = clearingMemberCategory;
|
this.clearingMemberCategory = "%s,%s".formatted(
|
||||||
|
ClearingMemberCategoryD.I.getKey(),
|
||||||
|
"V"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Info_0420315_P1> getRows() {
|
public List<Info_0420315_P1> getRows() {
|
||||||
return rows;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public static class Info_0420315_P1 {
|
|
||||||
@XStreamAlias("company_id")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String companyId;
|
|
||||||
|
|
||||||
@XStreamAlias("company_fullName")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String companyFullName;
|
|
||||||
|
|
||||||
@XStreamAlias("listing_market")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String listingMarket;
|
|
||||||
|
|
||||||
@XStreamAlias("contract_qty")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String contractQty;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilities_amount")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String liabilitiesAmount;
|
|
||||||
|
|
||||||
public Info_0420315_P1(String companyId,
|
|
||||||
String companyFullName,
|
|
||||||
String listingMarket,
|
|
||||||
String contractQty,
|
|
||||||
String liabilitiesAmount) {
|
|
||||||
this.companyId = companyId;
|
|
||||||
this.companyFullName = companyFullName;
|
|
||||||
this.listingMarket = listingMarket;
|
|
||||||
this.contractQty = contractQty;
|
|
||||||
this.liabilitiesAmount = liabilitiesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
public String getReportName(LocalDateTime reportDateTime) {
|
||||||
return "REPBR.0420315.P1.%s-%s.%s".formatted(
|
return "REPBR.0420315.P1.%s-%s.%s".formatted(
|
||||||
|
|
@ -88,4 +54,12 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
DATE_TIME_FORMATTER.format(reportDateTime)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@XStreamAlias("row")
|
||||||
|
public record Info_0420315_P1(@XStreamAlias("company_id") @XStreamAsAttribute String companyId,
|
||||||
|
@XStreamAlias("company_fullName") @XStreamAsAttribute String companyFullName,
|
||||||
|
@XStreamAlias("listing_market") @XStreamAsAttribute String listingMarket,
|
||||||
|
@XStreamAlias("contract_qty") @XStreamAsAttribute String contractQty,
|
||||||
|
@XStreamAlias("liabilities_amount") @XStreamAsAttribute String liabilitiesAmount) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports.bt_17_1;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
|
import ru.spcex.clearing.reports.reports.Destination;
|
||||||
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;
|
||||||
|
|
||||||
|
|
@ -10,13 +11,12 @@ import java.time.LocalDateTime;
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilitiesTotal")
|
@XStreamAlias("clearedLiabilitiesTotal")
|
||||||
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
||||||
|
@XStreamAlias("rows")
|
||||||
|
private final Info_0420315_P2 rows;
|
||||||
@XStreamAsAttribute
|
@XStreamAsAttribute
|
||||||
@XStreamAlias("destination")
|
@XStreamAlias("destination")
|
||||||
private String destination;
|
private String destination;
|
||||||
|
|
||||||
@XStreamAlias("total")
|
|
||||||
private final Info_0420315_P2 total;
|
|
||||||
|
|
||||||
public ReportBR_0420315_P2(LocalDate startDate,
|
public ReportBR_0420315_P2(LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate,
|
||||||
String destination,
|
String destination,
|
||||||
|
|
@ -28,49 +28,14 @@ public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
||||||
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2",
|
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2",
|
||||||
startDate,
|
startDate,
|
||||||
endDate);
|
endDate);
|
||||||
this.destination = destination;
|
this.destination = Destination.BR.getKey();
|
||||||
total = new Info_0420315_P2(contractQty, liabilitiesAmount);
|
rows = new Info_0420315_P2(contractQty, liabilitiesAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Info_0420315_P2 getTotal() {
|
public Info_0420315_P2 getRows() {
|
||||||
return total;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class Info_0420315_P2 {
|
|
||||||
@XStreamAlias("contract_qty")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String contractQty;
|
|
||||||
|
|
||||||
@XStreamAlias("liabilities_amount")
|
|
||||||
@XStreamAsAttribute
|
|
||||||
private String liabilitiesAmount;
|
|
||||||
|
|
||||||
|
|
||||||
public Info_0420315_P2(String contractQty, String liabilitiesAmount) {
|
|
||||||
this.contractQty = contractQty;
|
|
||||||
this.liabilitiesAmount = liabilitiesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getContractQty() {
|
|
||||||
return contractQty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContractQty(String contractQty) {
|
|
||||||
this.contractQty = contractQty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLiabilitiesAmount() {
|
|
||||||
return liabilitiesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLiabilitiesAmount(String liabilitiesAmount) {
|
|
||||||
this.liabilitiesAmount = liabilitiesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
public String getReportName(LocalDateTime reportDateTime) {
|
||||||
return "REPBR.0420315.P2.%s-%s.%s".formatted(
|
return "REPBR.0420315.P2.%s-%s.%s".formatted(
|
||||||
|
|
@ -80,4 +45,8 @@ public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public record Info_0420315_P2(@XStreamAlias("contract_qty") @XStreamAsAttribute String contractQty,
|
||||||
|
@XStreamAlias("liabilities_amount") @XStreamAsAttribute String liabilitiesAmount) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
import ru.spcex.clearing.reports.reports.ReportId;
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
||||||
|
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -19,15 +20,15 @@ public class ReportBR_0420318 extends ReportWithClearingStatus {
|
||||||
@XStreamAlias("rows")
|
@XStreamAlias("rows")
|
||||||
private final List<Info_0420318> rows = new ArrayList<>();
|
private final List<Info_0420318> rows = new ArrayList<>();
|
||||||
|
|
||||||
public ReportBR_0420318(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) {
|
public ReportBR_0420318(LocalDate startDate, LocalDate endDate) {
|
||||||
super(ReportId.BR_0420318,
|
super(ReportId.BR_0420318,
|
||||||
"0.0.1",
|
"0.0.1",
|
||||||
"0420318",
|
"0420318",
|
||||||
"Сведения о неисполненных обязательствах",
|
"Сведения о неисполненных обязательствах",
|
||||||
startDate,
|
startDate,
|
||||||
endDate,
|
endDate,
|
||||||
clearingStatus);
|
ClearingStatus.FAIL.getKey());
|
||||||
this.destination = destination;
|
this.destination = "BR";
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Info_0420318> getRows() {
|
public List<Info_0420318> getRows() {
|
||||||
|
|
|
||||||
|
|
@ -55,10 +55,7 @@ public class ReportsService {
|
||||||
/* ========= БТ 17.1 ========== */
|
/* ========= БТ 17.1 ========== */
|
||||||
// todo see ReportDataCollector
|
// todo see ReportDataCollector
|
||||||
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(),
|
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(),
|
||||||
LocalDate.now(),
|
LocalDate.now());
|
||||||
"BR",
|
|
||||||
"clearingMemberCategory",
|
|
||||||
"clearingStatus");
|
|
||||||
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId",
|
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId",
|
||||||
"companyFullName",
|
"companyFullName",
|
||||||
"listingMarket",
|
"listingMarket",
|
||||||
|
|
@ -95,7 +92,7 @@ public class ReportsService {
|
||||||
|
|
||||||
|
|
||||||
/* ========= БТ 17.3 ========== */
|
/* ========= БТ 17.3 ========== */
|
||||||
ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now(), "clearingStatus", "BR");
|
ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now());
|
||||||
ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318(
|
ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318(
|
||||||
"liabilitiesClaimsAssetsFullName",
|
"liabilitiesClaimsAssetsFullName",
|
||||||
"companySymbolsCode",
|
"companySymbolsCode",
|
||||||
|
|
|
||||||
|
|
@ -1,146 +1,142 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.misc.Listing;
|
import ru.clearing.classes.statics.data.misc.Listing;
|
||||||
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1;
|
import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1;
|
||||||
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
import ru.spcex.platform.enumeration.ClearingStatus;
|
||||||
import ru.spcex.platform.enumeration.Market;
|
import ru.spcex.platform.enumeration.Market;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class Bt17_1_P1_collector extends ReportDataCollector<ReportBR_0420315_P1> {
|
public class ReportBR_0420315_Collector extends ReportDataCollector<ReportBR_0420315_P1> {
|
||||||
protected static final List<String> ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey());
|
protected static final List<String> ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey());
|
||||||
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
||||||
|
|
||||||
private Imdg<Company> companyImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||||
private Imdg<Listing> listingImdg;
|
private Imdg<Listing> listingImdg;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public Bt17_1_P1_collector(ImdgProvider imdgProvider) {
|
public ReportBR_0420315_Collector(ImdgProvider imdgProvider) {
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
||||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param onMarket Market.mkrs.getKey()
|
* @param onMarket Market.mkrs.getKey()
|
||||||
* @param securityId liability.getSecurityId()
|
* @param securityId liability.getSecurityId()
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected Listing findListing(Market onMarket, Long securityId) {
|
protected Listing findListing(Market onMarket, Long securityId) {
|
||||||
Map qParam = new HashMap<>();
|
Map qParam = new HashMap<>();
|
||||||
qParam.put("market", onMarket.getKey());
|
qParam.put("market", onMarket.getKey());
|
||||||
qParam.put("securityId", securityId);
|
qParam.put("securityId", securityId);
|
||||||
return listingImdg.getSingleObjectByFieldValues(qParam);
|
return listingImdg.getSingleObjectByFieldValues(qParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> searchLiabilitiesClaimsAssets(LocalDate startDate, LocalDate endDate, Long allowClearingStatusId) {
|
Collection<LiabilitiesClaimsAssets> searchLiabilitiesClaimsAssets(LocalDate startDate, LocalDate endDate, Long allowClearingStatusId) {
|
||||||
// String ql = String.format("'%s' <= refundDate and refundDate <= '%s' and clearingStatus=%s",
|
// String ql = String.format("'%s' <= refundDate and refundDate <= '%s' and clearingStatus=%s",
|
||||||
// formatToIMDGInstant(startDate), formatToIMDGInstant(endDate), allowClearingStatusId);
|
// formatToIMDGInstant(startDate), formatToIMDGInstant(endDate), allowClearingStatusId);
|
||||||
// Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql);
|
// Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql);
|
||||||
|
|
||||||
ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
||||||
Instant dateTimeLo = toInstantStartDay(startDate);
|
Instant dateTimeLo = toInstantStartDay(startDate);
|
||||||
Instant dateTimeHi = toInstantStartDay(endDate);
|
Instant dateTimeHi = toInstantStartDay(endDate);
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("refundDate", dateTimeLo), pb.lessEqual("refundDate", dateTimeHi),
|
ImdgPredicate p = pb.and(pb.greatEqual("refundDate", dateTimeLo), pb.lessEqual("refundDate", dateTimeHi),
|
||||||
pb.equals("clearingStatus", allowClearingStatusId));
|
pb.equals("clearingStatus", allowClearingStatusId));
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p);
|
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p);
|
||||||
return liabilities;
|
return liabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReportBR_0420315_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
public ReportBR_0420315_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
validateDateRange(startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate,
|
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate);
|
||||||
"BR",
|
|
||||||
"I,V", // cmc.getClearingMemberCategory()
|
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
||||||
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
|
||||||
);
|
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(startDate, endDate, allowClearingStatusId);
|
||||||
|
|
||||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
||||||
|
company_for:
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(startDate, endDate, allowClearingStatusId);
|
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
||||||
|
final Long companyId = companyEntry.getKey();
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
List<LiabilitiesClaimsAssets> liabilitiesOfCompany = companyEntry.getValue();
|
||||||
company_for:
|
Company company = companyImdg.getSingleObjectByID(companyId);
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
if (company != null) {
|
||||||
final Long companyId = companyEntry.getKey();
|
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
||||||
List<LiabilitiesClaimsAssets> liabilitiesOfCompany = companyEntry.getValue();
|
boolean checkCategory = cmcLst.stream()
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
.anyMatch(cmc -> ALLOW_CLEARING_MEMBER_CATEGORY.contains(cmc.getClearingMemberCategory()));
|
||||||
if (company != null) {
|
if (!checkCategory) {
|
||||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
// фильтруются <> I, V
|
||||||
boolean checkCategory = cmcLst.stream()
|
log.trace("Filtered company[{}] ClearingMemberCategory no match: {}",
|
||||||
.anyMatch(cmc -> ALLOW_CLEARING_MEMBER_CATEGORY.contains(cmc.getClearingMemberCategory()));
|
companyId, cmcLst);
|
||||||
if (!checkCategory) {
|
continue company_for;
|
||||||
// фильтруются <> I, V
|
}
|
||||||
log.trace("Filtered company[{}] ClearingMemberCategory no match: {}",
|
|
||||||
companyId, cmcLst);
|
HashSet<String> onMarket = new HashSet<>();
|
||||||
continue company_for;
|
|
||||||
}
|
long contractorQty;
|
||||||
|
double liabilitiesAmount = 0;
|
||||||
HashSet<String> onMarket = new HashSet<>();
|
{
|
||||||
|
HashSet<String> collectedToSumm = new HashSet<>(); // чтобы дважды не посчитать 1 и тот же контракт
|
||||||
long contractorQty;
|
HashSet<Long> onMarketSecurity=new HashSet<>();
|
||||||
double liabilitiesAmount = 0;
|
for (LiabilitiesClaimsAssets lContract : liabilitiesOfCompany) {
|
||||||
{
|
if (!onMarketSecurity.contains(lContract.getSecurityId())) {
|
||||||
HashSet<String> collectedToSumm = new HashSet<>(); // чтобы дважды не посчитать 1 и тот же контракт
|
Listing listing = findListing(Market.mkrs, lContract.getSecurityId());
|
||||||
HashSet<Long> onMarketSecurity=new HashSet<>();
|
if (listing!= null) {
|
||||||
for (LiabilitiesClaimsAssets lContract : liabilitiesOfCompany) {
|
onMarket.add(listing.getMarket());
|
||||||
if (!onMarketSecurity.contains(lContract.getSecurityId())) {
|
}
|
||||||
Listing listing = findListing(Market.mkrs, lContract.getSecurityId());
|
onMarketSecurity.add(lContract.getSecurityId());
|
||||||
if (listing!= null) {
|
}
|
||||||
onMarket.add(listing.getMarket());
|
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())
|
||||||
}
|
&& !collectedToSumm.contains(lContract.getContract())) {
|
||||||
onMarketSecurity.add(lContract.getSecurityId());
|
collectedToSumm.add(lContract.getContract());
|
||||||
}
|
liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue();
|
||||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())
|
}
|
||||||
&& !collectedToSumm.contains(lContract.getContract())) {
|
}
|
||||||
collectedToSumm.add(lContract.getContract());
|
contractorQty = collectedToSumm.size();
|
||||||
liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue();
|
}
|
||||||
}
|
String onMarketString = StringUtils.join(onMarket, ",");
|
||||||
}
|
if (onMarket.size() != 1) { // Сейчас по коду ожидается один listing.market="MKRS" но потом могут быть несколько
|
||||||
contractorQty = collectedToSumm.size();
|
log.warn("Market for companyId[{}]: {}", companyId, onMarketString);
|
||||||
}
|
}
|
||||||
String onMarketString = StringUtils.join(onMarket, ",");
|
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1(company.getId().toString(),
|
||||||
if (onMarket.size() != 1) { // Сейчас по коду ожидается один listing.market="MKRS" но потом могут быть несколько
|
company.getFullName(),
|
||||||
log.warn("Market for companyId[{}]: {}", companyId, onMarketString);
|
onMarketString,
|
||||||
}
|
toString(contractorQty),
|
||||||
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1(company.getId().toString(),
|
toString(liabilitiesAmount));
|
||||||
company.getFullName(),
|
reportBR_0420315_p1.getRows().add(info_0420315_p1);
|
||||||
onMarketString,
|
}
|
||||||
toString(contractorQty),
|
}
|
||||||
toString(liabilitiesAmount));
|
|
||||||
reportBR_0420315_p1.getRows().add(info_0420315_p1);
|
return reportBR_0420315_p1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
return reportBR_0420315_p1;
|
public Class<ReportBR_0420315_P1> getReportClass() {
|
||||||
}
|
return ReportBR_0420315_P1.class;
|
||||||
|
}
|
||||||
@Override
|
}
|
||||||
public Class<ReportBR_0420315_P1> getReportClass() {
|
|
||||||
return ReportBR_0420315_P1.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318;
|
||||||
|
import ru.spcex.clearing.reports.services.ReportDataCollector;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public class ReportBR_0420318_Collector extends ReportDataCollector<ReportBR_0420318> {
|
||||||
|
@Override
|
||||||
|
public ReportBR_0420318 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ReportBR_0420318> getReportClass() {
|
||||||
|
return ReportBR_0420318.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
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.ReportINACCNT;
|
||||||
|
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.time.LocalDate;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public class ReportINACCNT_Collector extends ReportDataCollector<ReportINACCNT> {
|
||||||
|
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||||
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
||||||
|
public ReportINACCNT_Collector(ImdgProvider imdgProvider) {
|
||||||
|
accountBalanceImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_AccountBalance,
|
||||||
|
AccountBalance.class
|
||||||
|
);
|
||||||
|
companyImdg = imdgProvider.getImdg(
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportINACCNT collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
|
String companyClearingCode;
|
||||||
|
|
||||||
|
validateDateRange(startDate, endDate);
|
||||||
|
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ImdgPredicate accountTypePredicate = builder.or(
|
||||||
|
builder.equals("accountType", "CLRN"),
|
||||||
|
builder.equals("accountType", "INFO")
|
||||||
|
);
|
||||||
|
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(accountTypePredicate);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ReportINACCNT> getReportClass() {
|
||||||
|
return ReportINACCNT.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,7 +22,6 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ReportPA_BT2_B_Collector extends ReportDataCollector<ReportPA_BT2_B> {
|
public class ReportPA_BT2_B_Collector extends ReportDataCollector<ReportPA_BT2_B> {
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
|
||||||
public ReportPA_BT2_B_Collector(ImdgProvider imdgProvider) {
|
public ReportPA_BT2_B_Collector(ImdgProvider imdgProvider) {
|
||||||
|
|
@ -30,10 +29,6 @@ public class ReportPA_BT2_B_Collector extends ReportDataCollector<ReportPA_BT2_B
|
||||||
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
||||||
LiabilitiesClaimsAssets.class
|
LiabilitiesClaimsAssets.class
|
||||||
);
|
);
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingStatusDictionary,
|
|
||||||
ClearingStatusDictionary.class
|
|
||||||
);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
||||||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
IMDGDistributedNames.Map_ClearingMemberCategory,
|
||||||
ClearingMemberCategory.class
|
ClearingMemberCategory.class
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue