This commit is contained in:
akulikov 2023-01-10 12:55:04 +03:00
parent 16a443b137
commit d70b537364
10 changed files with 352 additions and 245 deletions

View file

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

View file

@ -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) {
}
}

View file

@ -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) {
}
} }

View file

@ -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) {
}
} }

View file

@ -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() {

View file

@ -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",

View file

@ -25,7 +25,7 @@ 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();
@ -36,7 +36,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector<ReportBR_0420315_P1
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);
@ -73,11 +73,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector<ReportBR_0420315_P1
@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()
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
);
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK" final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"

View file

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

View file

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

View file

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