reports-service http://jira.mfd.msk:8088/browse/CLS-29 начало, рефакторинг опять.

This commit is contained in:
AKurakin 2022-12-26 20:28:31 +03:00
parent af8ff434ec
commit 363a809afc
6 changed files with 79 additions and 39 deletions

View file

@ -6,6 +6,8 @@ import ru.spcex.clearing.reports.ReportWithPeriod;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@XStreamAlias("clearingCoverage1")
public class ReportBR_0420312_P1 extends ReportWithPeriod {
@ -13,9 +15,27 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod {
@XStreamAlias("destination")
private String destination;
@XStreamAlias("part_1")
private final Info_0420312_P1 part_1;
@XStreamAlias("rows")
private final List<Info_0420312_P1> rows = new ArrayList<>();
public ReportBR_0420312_P1(LocalDate startDate,
LocalDate endDate,
String destination) {
super("0.0.1",
"0420312",
"Сведения о клиринговом обеспечении, часть 1",
startDate,
endDate);
this.destination = destination;
}
public List<Info_0420312_P1> getRows() {
return rows;
}
@Deprecated
public ReportBR_0420312_P1(LocalDate startDate,
LocalDate endDate,
String companyClearingCode,
@ -26,19 +46,14 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod {
String companySymbolValue,
String companyInfoCountryCode,
String clearingMemberCategoryClearingMemberCategory) {
super("0.0.1",
"0420312",
"Сведения о клиринговом обеспечении, часть 1",
startDate,
endDate);
this.destination = destination;
part_1 = new Info_0420312_P1(companyClearingCode,
this(startDate, endDate, destination);
getRows().add(new Info_0420312_P1(companyClearingCode,
liabilitiesClaimsAssetsCompanyId,
liabilitiesClaimsAssetsFullName,
companySymbolCode,
companySymbolValue,
companyInfoCountryCode,
clearingMemberCategoryClearingMemberCategory);
clearingMemberCategoryClearingMemberCategory));
}
public static class Info_0420312_P1 {

View file

@ -34,6 +34,12 @@ public abstract class ReportDataCollector<T extends AbstractReport> {
abstract public Class<T> getReportClass();
protected void validateDateRange(LocalDate startDate, LocalDate endDate) throws IllegalArgumentException {
if (startDate.isAfter(endDate)) {
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
}
}
protected String toString(Long val) {
if (val == null) return null;
return val.toString();

View file

@ -56,9 +56,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector<ReportBR_0420315_P1
@Override
public ReportBR_0420315_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
if (startDate.isAfter(endDate)) {
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
}
validateDateRange(startDate, endDate);
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate,
"BR",
"I,V", // cmc.getClearingMemberCategory()

View file

@ -25,9 +25,7 @@ public class Bt17_1_P2_collector extends ReportDataCollector<ReportBR_0420315_P2
@Override
public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
if (startDate.isAfter(endDate)) {
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
}
validateDateRange(startDate, endDate);
String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate);
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql);

View file

@ -32,9 +32,7 @@ public class Bt17_2_collector extends ReportDataCollector<ReportBR_0420317> {
@Override
public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
if (startDate.isAfter(endDate)) {
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
}
validateDateRange(startDate, endDate);
String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate);
// todo обговорить про updatedAt updated, todo enum MKR

View file

@ -5,52 +5,77 @@ import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
import ru.clearing.platform.dictionary.CountryCodeDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1;
import ru.spcex.clearing.reports.services.ReportDataCollector;
import ru.spcex.platform.enumeration.DocumentTypes;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@Component
public class Bt17_5_P1_collector extends ReportDataCollector<ReportBR_0420312_P1> {
private Imdg<Company> companyImdg;
private Imdg<Relation> relationImdg;
// private Imdg<Relation> relationImdg;
private Imdg<CompanySymbols> companySymbolsImdg;
private Imdg<CountryCodeDictionary> countryCodeDictionaryImdg;
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
@Autowired
public Bt17_5_P1_collector(ImdgProvider imdgProvider) {
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
// relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
countryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class);
}
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
"companySymbol", docType.getKey(),
"companyId", companyId
));
return companySymbol;
}
@Override
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
if (startDate.isAfter(endDate)) {
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
}
validateDateRange(startDate, endDate);
// TODO ВСЁ по CLS-29...
String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate);
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
// todo обговорить про updatedAt updated, todo enum MKR
Collection<Relation> relations = relationImdg.getCollectionObjectsBySQL(ql);
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(),
LocalDate.now(),
"companyClearingCode",
"BR",
"liabilitesClaimsAssetsCompanyId",
"liabilitesClaimsAssetsFullName",
"companySymbolCode",
"companySymbolValue",
"companyInfoCountryCode",
"clearingMemberCategory");
String ql = String.format("'%s' <= refundDate and refundDate <= '%s'",
startDate, endDate);
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql);
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
final Long companyId = companyEntry.getKey();
Company company = companyImdg.getSingleObjectByID(companyId);
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
company.getClearingCode(),
toString(companyId),
company.getFullName(),
companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue(),
companySymbolOGRN == null ? null : companySymbolOGRN.getCompanySymbolValue(),
company.getProfile().getCountryCode(),
clearingMemberCategory
);
reportBR_0420312P1.getRows().add(info_0420312_p1);
}
return reportBR_0420312P1;
}