reports-service рефакторинг, оптимизация IMDF API, мелкие правки ReportPA_IV (название файла).

This commit is contained in:
AKurakin 2023-01-11 14:43:54 +03:00
parent 4ffdf50b39
commit 1084a79a97
8 changed files with 34 additions and 25 deletions

View file

@ -40,7 +40,7 @@ public class ReportPA_IV extends ReportWithPeriod {
@Override
public String getReportName(LocalDateTime reportDateTime) {
return "REPPA.BT12.2.IV.%s-%s.%s".formatted(
return "REPPA.IV.%s-%s.%s".formatted(
DATE_FORMATTER.format(startDate),
DATE_FORMATTER.format(endDate),
DATE_TIME_FORMATTER.format(reportDateTime)

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services.collector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
@ -15,6 +16,7 @@ import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Collection;
@Component
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
protected final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services.collector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT;
@ -15,6 +16,7 @@ import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Collection;
@Component
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
protected final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.reports.services.collector;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.account.AccountBalance;
import ru.clearing.classes.statics.data.company.Company;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -10,7 +11,6 @@ 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.time.LocalTime;
@ -18,6 +18,7 @@ import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
@Component
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
private final Imdg<AccountBalance> accountBalanceImdg;
private final Imdg<Company> companyImdg;
@ -35,7 +36,7 @@ public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<Repo
@Override
public ReportINACCNT collectReportForClearingCode(String clearingCode) {
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
ImdgPredicateBuilder builder = companyImdg.predicateBuilder();
ImdgPredicate clearingCodePredicate = builder.equals("clearingCode", clearingCode);
Collection<Company> companies = companyImdg.getCollectionObjectsByPredicate(clearingCodePredicate);
@ -47,10 +48,8 @@ public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<Repo
builder.equals("accountType", AccountType.Clrn.getKey()),
builder.equals("accountType", AccountType.Info.getKey())
);
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
for (Long companyId : companyIds) {
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
}
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
ImdgPredicate finalPredicate = builder.and(accountTypePredicate, companyIdPredicates);
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(finalPredicate);

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.reports.services.collector;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -10,14 +11,15 @@ 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.math.BigDecimal;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Component
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
@ -36,24 +38,23 @@ public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B>
@Override
public ReportPA_B collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
validateDateRange(startDate, endDate);
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
ImdgPredicate clearingMemberCategoryPredicate = builder.equals("clearingMemberCategory", ClearingMemberCategoryD.B.getKey());
Collection<ClearingMemberCategory> clearingMemberCategories =
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of(
"clearingMemberCategory", ClearingMemberCategoryD.B.getKey()
));
Set<Long> companyIds = clearingMemberCategories.stream()
.map(ClearingMemberCategory::getCompanyId)
.collect(Collectors.toSet());
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
ImdgPredicate refundDatePredicate = builder.and(
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
builder.lessEqual("refundDate", toInstantStartDay(endDate))
);
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
for (Long companyId : companyIds) {
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
}
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);

View file

@ -1,16 +1,17 @@
package ru.spcex.clearing.reports.services.collector;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV;
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
import ru.spcex.platform.enumeration.ClearingMemberCategoryD;
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.math.BigDecimal;
import java.time.LocalDate;
@ -18,6 +19,7 @@ import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
@Component
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
@ -41,26 +43,22 @@ public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV
@Override
public ReportPA_IV collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
validateDateRange(startDate, endDate);
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
ImdgPredicate clearingMemberCategoryPredicate = builder.or(
builder.equals("clearingMemberCategory", "I"),
builder.equals("clearingMemberCategory", "V")
String clearingMemberCategorySql = "clearingMemberCategory='%s' or clearingMemberCategory='%s'".formatted(
ClearingMemberCategoryD.I.getKey(), ClearingMemberCategoryD.V.getKey()
);
Collection<ClearingMemberCategory> clearingMemberCategories =
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
clearingMemberCategoryImdg.getCollectionObjectsBySQL(clearingMemberCategorySql);
Set<Long> companyIds = clearingMemberCategories.stream()
.map(ClearingMemberCategory::getCompanyId)
.collect(Collectors.toSet());
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
ImdgPredicate refundDatePredicate = builder.and(
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
builder.lessEqual("refundDate", toInstantStartDay(endDate))
);
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
for (Long companyId : companyIds) {
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
}
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);

View file

@ -38,6 +38,11 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder {
return new ImdgPredicateHazelcast(Predicates.lessThan(key, cmpValue));
}
@Override
public ImdgPredicate in(String key, Comparable[] values) {
return new ImdgPredicateHazelcast(Predicates.in(key, values));
}
@Override
public ImdgPredicate not(ImdgPredicate param) {
ImdgPredicateHazelcast paramMy = (ImdgPredicateHazelcast) param;

View file

@ -7,6 +7,8 @@ public interface ImdgPredicateBuilder {
ImdgPredicate greater(String key, Comparable value);
ImdgPredicate less(String key, Comparable value);
ImdgPredicate in(String key, Comparable... values);
ImdgPredicate not(ImdgPredicate param);
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB);
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB, ImdgPredicate paramC);