cls26 collector

This commit is contained in:
akulikov 2023-01-11 12:10:38 +03:00
parent 3f2aa8faa3
commit 1c27ed93f9

View file

@ -1,86 +1,82 @@
package ru.spcex.clearing.reports.services.collector;
import org.springframework.beans.factory.annotation.Autowired;
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.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
import ru.spcex.platform.enumeration.DocumentTypes;
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 java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
@Component
public class ReportBR_0420317_collector extends ReportWithPeriodCollector<ReportBR_0420317> {
private Imdg<Company> companyImdg;
private Imdg<Relation> relationImdg;
private Imdg<CompanySymbols> companySymbolsImdg;
@Autowired
public ReportBR_0420317_collector(ImdgProvider imdgProvider) {
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
}
Collection<Relation> searchRelation(LocalDate startDate, LocalDate endDate, String service) {
// String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate);
// Collection<Relation> relations = relationImdg.getCollectionObjectsBySQL(ql);
ImdgPredicateBuilder pb = relationImdg.predicateBuilder();
Instant dateTimeLo = toInstantStartDay(startDate);
Instant dateTimeHi = toInstantStartDay(endDate);
ImdgPredicate p = pb.and(pb.greatEqual("updated", dateTimeLo), pb.lessEqual("updated", dateTimeHi),
pb.equals("service", service));
Collection<Relation> relations = relationImdg.getCollectionObjectsByPredicate(p);
return relations;
}
@Override
public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
validateDateRange(startDate, endDate);
Collection<Relation> relations = searchRelation(startDate, endDate, "MKR");
ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(startDate, endDate);
for (Relation relation: relations) {
Company company = relation.getConsumerId() == null ? null : companyImdg.getSingleObjectByID(relation.getConsumerId());
if (company == null) {
log.warn("Company.id={} not found for relation.id={}", relation.getConsumerId(), relation.getId());
continue;
}
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
"companySymbol", DocumentTypes.inn.getKey(),// ИНН или TIN участника клиринга
"companyId", company.getId()
));
ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317(
company.getClearingCode(),
toString(relation.getSupplierId()),
relation.getService(),
relation.getServiceStatus(),
toString(relation.getUpdated()),
company.getFullName(),
companySymbol == null ? null : companySymbol.getCompanySymbolValue(),
company.getProfile().getCountryCode(),
relation.getComment()
);
reportBR_0420317.getRows().add(info_0420317);
}
return reportBR_0420317;
}
@Override
public Class<ReportBR_0420317> getReportClass() {
return ReportBR_0420317.class;
}
}
package ru.spcex.clearing.reports.services.collector;
import org.springframework.beans.factory.annotation.Autowired;
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.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
import ru.spcex.platform.enumeration.DocumentTypes;
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 java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
@Component
public class ReportBR_0420317_Collector extends ReportWithPeriodCollector<ReportBR_0420317> {
private Imdg<Company> companyImdg;
private Imdg<Relation> relationImdg;
private Imdg<CompanySymbols> companySymbolsImdg;
@Autowired
public ReportBR_0420317_Collector(ImdgProvider imdgProvider) {
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
}
Collection<Relation> searchRelation(LocalDate startDate, LocalDate endDate, String service) {
ImdgPredicateBuilder pb = relationImdg.predicateBuilder();
Instant dateTimeLo = toInstantStartDay(startDate);
Instant dateTimeHi = toInstantStartDay(endDate);
ImdgPredicate p = pb.and(pb.greatEqual("updated", dateTimeLo), pb.lessEqual("updated", dateTimeHi),
pb.equals("service", service));
Collection<Relation> relations = relationImdg.getCollectionObjectsByPredicate(p);
return relations;
}
@Override
public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
validateDateRange(startDate, endDate);
Collection<Relation> relations = searchRelation(startDate, endDate, "MKR");
ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(startDate, endDate);
for (Relation relation: relations) {
Company company = relation.getConsumerId() == null ? null : companyImdg.getSingleObjectByID(relation.getConsumerId());
if (company == null) {
log.warn("Company.id={} not found for relation.id={}", relation.getConsumerId(), relation.getId());
continue;
}
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
"companySymbol", DocumentTypes.inn.getKey(),// ИНН или TIN участника клиринга
"companyId", company.getId()
));
ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317(
toString(company.getClearingCode()),
toString(toString(relation.getSupplierId())),
toString(relation.getService()),
toString(relation.getServiceStatus()),
toString(relation.getUpdated()),
toString(company.getFullName()),
companySymbol == null ? "" : toString(companySymbol.getCompanySymbolValue()),
toString(company.getProfile().getCountryCode()),
toString(relation.getComment()));
reportBR_0420317.getRows().add(info_0420317);
}
return reportBR_0420317;
}
@Override
public Class<ReportBR_0420317> getReportClass() {
return ReportBR_0420317.class;
}
}