cls29 collector3 fix

This commit is contained in:
akulikov 2023-01-11 11:41:43 +03:00
parent 8661628eb9
commit f515bc5687

View file

@ -1,76 +1,61 @@
package ru.spcex.clearing.reports.services.collector; package ru.spcex.clearing.reports.services.collector;
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.transaction.data.execution.LiabilitiesClaimsAssets; import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P3; import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P3;
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
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.ImdgPredicateBuilder; import java.math.BigDecimal;
import java.time.LocalDate;
import java.math.BigDecimal; import java.util.Collection;
import java.time.Instant; import java.util.List;
import java.time.LocalDate; import java.util.Map;
import java.util.Collection; import java.util.Objects;
import java.util.List;
import java.util.Map; @Component
import java.util.Objects; public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> {
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
@Component
public class ReportBR_0420312_P3_collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> { @Autowired
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg; public ReportBR_0420312_P3_Collector(ImdgProvider imdgProvider) {
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
@Autowired }
public ReportBR_0420312_P3_collector(ImdgProvider imdgProvider) {
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); @Override
} public ReportBR_0420312_P3 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
validateDateRange(startDate, endDate);
Collection<LiabilitiesClaimsAssets> searchLiabilitiesClaimsAssets(LocalDate startDate, LocalDate endDate) {
// String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", formatToIMDGInstant(startDate), formatToIMDGInstant(endDate)); ReportBR_0420312_P3 reportBR_0420312P1 = new ReportBR_0420312_P3(startDate, endDate, "BR");
// Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql);
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder(); Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
Instant dateTimeLo = toInstantStartDay(startDate);
Instant dateTimeHi = toInstantStartDay(endDate); for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
ImdgPredicate p = pb.and(pb.greatEqual("refundDate", dateTimeLo), pb.lessEqual("refundDate", dateTimeHi)); final Long companyId = companyEntry.getKey();
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p); List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
return liabilities;
} BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
@Override .filter(Objects::nonNull)
public ReportBR_0420312_P3 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { .reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
validateDateRange(startDate, endDate);
// расчёт похож на ReportBR_0420312_P2
ReportBR_0420312_P3 reportBR_0420312P1 = new ReportBR_0420312_P3(startDate, endDate, "BR"); ReportBR_0420312_P3.Info_0420312_P3 info_0420312_p3 = new ReportBR_0420312_P3.Info_0420312_P3(
toString(companyId),
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(startDate, endDate); toString(liabilitiesQuantitySum)
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); );
reportBR_0420312P1.getRows().add(info_0420312_p3);
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) { }
final Long companyId = companyEntry.getKey();
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue(); return reportBR_0420312P1;
}
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) @Override
.filter(Objects::nonNull) public Class<ReportBR_0420312_P3> getReportClass() {
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO); return ReportBR_0420312_P3.class;
}
// расчёт похож на ReportBR_0420312_P2 }
ReportBR_0420312_P3.Info_0420312_P3 info_0420312_p3 = new ReportBR_0420312_P3.Info_0420312_P3(
toString(companyId),
toString(liabilitiesQuantitySum)
);
reportBR_0420312P1.getRows().add(info_0420312_p3);
}
return reportBR_0420312P1;
}
@Override
public Class<ReportBR_0420312_P3> getReportClass() {
return ReportBR_0420312_P3.class;
}
}