reports-service рефакторинг, оптимизация IMDF API, мелкие правки ReportPA_IV (название файла).
This commit is contained in:
parent
4ffdf50b39
commit
1084a79a97
8 changed files with 34 additions and 25 deletions
|
|
@ -40,7 +40,7 @@ public class ReportPA_IV extends ReportWithPeriod {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
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(startDate),
|
||||||
DATE_FORMATTER.format(endDate),
|
DATE_FORMATTER.format(endDate),
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
DATE_TIME_FORMATTER.format(reportDateTime)
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
|
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
|
||||||
|
|
@ -15,6 +16,7 @@ import java.time.LocalDate;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT;
|
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT;
|
||||||
|
|
@ -15,6 +16,7 @@ import java.time.LocalDate;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
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.account.AccountBalance;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
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.LocalDate;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
|
|
@ -18,6 +18,7 @@ import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
||||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
@ -35,7 +36,7 @@ public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<Repo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReportINACCNT collectReportForClearingCode(String clearingCode) {
|
public ReportINACCNT collectReportForClearingCode(String clearingCode) {
|
||||||
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
ImdgPredicateBuilder builder = companyImdg.predicateBuilder();
|
||||||
|
|
||||||
ImdgPredicate clearingCodePredicate = builder.equals("clearingCode", clearingCode);
|
ImdgPredicate clearingCodePredicate = builder.equals("clearingCode", clearingCode);
|
||||||
Collection<Company> companies = companyImdg.getCollectionObjectsByPredicate(clearingCodePredicate);
|
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.Clrn.getKey()),
|
||||||
builder.equals("accountType", AccountType.Info.getKey())
|
builder.equals("accountType", AccountType.Info.getKey())
|
||||||
);
|
);
|
||||||
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
||||||
for (Long companyId : companyIds) {
|
|
||||||
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
|
||||||
}
|
|
||||||
ImdgPredicate finalPredicate = builder.and(accountTypePredicate, companyIdPredicates);
|
ImdgPredicate finalPredicate = builder.and(accountTypePredicate, companyIdPredicates);
|
||||||
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(finalPredicate);
|
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
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;
|
||||||
|
|
@ -10,14 +11,15 @@ 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.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
|
@ -36,24 +38,23 @@ public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B>
|
||||||
@Override
|
@Override
|
||||||
public ReportPA_B collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
public ReportPA_B collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
validateDateRange(startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
|
||||||
|
|
||||||
ImdgPredicate clearingMemberCategoryPredicate = builder.equals("clearingMemberCategory", ClearingMemberCategoryD.B.getKey());
|
|
||||||
Collection<ClearingMemberCategory> clearingMemberCategories =
|
Collection<ClearingMemberCategory> clearingMemberCategories =
|
||||||
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
|
clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of(
|
||||||
|
"clearingMemberCategory", ClearingMemberCategoryD.B.getKey()
|
||||||
|
));
|
||||||
Set<Long> companyIds = clearingMemberCategories.stream()
|
Set<Long> companyIds = clearingMemberCategories.stream()
|
||||||
.map(ClearingMemberCategory::getCompanyId)
|
.map(ClearingMemberCategory::getCompanyId)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
||||||
ImdgPredicate refundDatePredicate = builder.and(
|
ImdgPredicate refundDatePredicate = builder.and(
|
||||||
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
||||||
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
||||||
);
|
);
|
||||||
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
||||||
for (Long companyId : companyIds) {
|
|
||||||
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
|
||||||
}
|
|
||||||
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
||||||
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,17 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
package ru.spcex.clearing.reports.services.collector;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV;
|
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV;
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
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.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.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -18,6 +19,7 @@ import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
||||||
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
||||||
|
|
@ -41,26 +43,22 @@ public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV
|
||||||
@Override
|
@Override
|
||||||
public ReportPA_IV collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
public ReportPA_IV collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||||
validateDateRange(startDate, endDate);
|
validateDateRange(startDate, endDate);
|
||||||
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
|
||||||
|
|
||||||
ImdgPredicate clearingMemberCategoryPredicate = builder.or(
|
String clearingMemberCategorySql = "clearingMemberCategory='%s' or clearingMemberCategory='%s'".formatted(
|
||||||
builder.equals("clearingMemberCategory", "I"),
|
ClearingMemberCategoryD.I.getKey(), ClearingMemberCategoryD.V.getKey()
|
||||||
builder.equals("clearingMemberCategory", "V")
|
|
||||||
);
|
);
|
||||||
Collection<ClearingMemberCategory> clearingMemberCategories =
|
Collection<ClearingMemberCategory> clearingMemberCategories =
|
||||||
clearingMemberCategoryImdg.getCollectionObjectsByPredicate(clearingMemberCategoryPredicate);
|
clearingMemberCategoryImdg.getCollectionObjectsBySQL(clearingMemberCategorySql);
|
||||||
Set<Long> companyIds = clearingMemberCategories.stream()
|
Set<Long> companyIds = clearingMemberCategories.stream()
|
||||||
.map(ClearingMemberCategory::getCompanyId)
|
.map(ClearingMemberCategory::getCompanyId)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
||||||
ImdgPredicate refundDatePredicate = builder.and(
|
ImdgPredicate refundDatePredicate = builder.and(
|
||||||
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
builder.greatEqual("refundDate", toInstantStartDay(startDate)),
|
||||||
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
builder.lessEqual("refundDate", toInstantStartDay(endDate))
|
||||||
);
|
);
|
||||||
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
||||||
for (Long companyId : companyIds) {
|
|
||||||
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
|
||||||
}
|
|
||||||
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
||||||
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
||||||
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,11 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder {
|
||||||
return new ImdgPredicateHazelcast(Predicates.lessThan(key, cmpValue));
|
return new ImdgPredicateHazelcast(Predicates.lessThan(key, cmpValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImdgPredicate in(String key, Comparable[] values) {
|
||||||
|
return new ImdgPredicateHazelcast(Predicates.in(key, values));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImdgPredicate not(ImdgPredicate param) {
|
public ImdgPredicate not(ImdgPredicate param) {
|
||||||
ImdgPredicateHazelcast paramMy = (ImdgPredicateHazelcast) param;
|
ImdgPredicateHazelcast paramMy = (ImdgPredicateHazelcast) param;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ public interface ImdgPredicateBuilder {
|
||||||
ImdgPredicate greater(String key, Comparable value);
|
ImdgPredicate greater(String key, Comparable value);
|
||||||
ImdgPredicate less(String key, Comparable value);
|
ImdgPredicate less(String key, Comparable value);
|
||||||
|
|
||||||
|
ImdgPredicate in(String key, Comparable... values);
|
||||||
|
|
||||||
ImdgPredicate not(ImdgPredicate param);
|
ImdgPredicate not(ImdgPredicate param);
|
||||||
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB);
|
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB);
|
||||||
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB, ImdgPredicate paramC);
|
ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB, ImdgPredicate paramC);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue