FINERACT-2326: Enhanced loan retrieval API to avoid some of the N+1 queries when loading summaries
This commit is contained in:
committed by
Arnold Gálovics
parent
2a29b1ca0e
commit
9ef79f86a0
+2
@@ -33,6 +33,7 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanSchedul
|
||||
public final class DisbursementData implements LoanPrincipalRelatedDataHolder, Comparable<DisbursementData> {
|
||||
|
||||
private final Long id;
|
||||
private final Long loanId;
|
||||
private final LocalDate expectedDisbursementDate;
|
||||
private final LocalDate actualDisbursementDate;
|
||||
private final BigDecimal principal;
|
||||
@@ -61,6 +62,7 @@ public final class DisbursementData implements LoanPrincipalRelatedDataHolder, C
|
||||
this.note = "";
|
||||
this.linkAccountId = linkAccountId;
|
||||
this.id = null;
|
||||
this.loanId = null;
|
||||
this.expectedDisbursementDate = null;
|
||||
this.principal = null;
|
||||
this.loanChargeId = null;
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ public class RepaymentScheduleRelatedLoanData {
|
||||
|
||||
public DisbursementData disbursementData() {
|
||||
BigDecimal waivedChargeAmount = null;
|
||||
return new DisbursementData(null, this.expectedDisbursementDate, this.actualDisbursementDate, this.principal,
|
||||
return new DisbursementData(null, null, this.expectedDisbursementDate, this.actualDisbursementDate, this.principal,
|
||||
this.netDisbursalAmount, null, null, waivedChargeAmount);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -122,8 +122,8 @@ public class LoanDisbursementDetails extends AbstractPersistableCustom<Long> {
|
||||
public DisbursementData toData() {
|
||||
LocalDate expectedDisburseDate = expectedDisbursementDateAsLocalDate();
|
||||
BigDecimal waivedChargeAmount = null;
|
||||
return new DisbursementData(getId(), expectedDisburseDate, this.actualDisbursementDate, this.principal, this.netDisbursalAmount,
|
||||
null, null, waivedChargeAmount);
|
||||
return new DisbursementData(getId(), loan.getId(), expectedDisburseDate, this.actualDisbursementDate, this.principal,
|
||||
this.netDisbursalAmount, null, null, waivedChargeAmount);
|
||||
}
|
||||
|
||||
public void updateActualDisbursementDate(LocalDate actualDisbursementDate) {
|
||||
|
||||
+1
-1
@@ -2030,7 +2030,7 @@ public abstract class AbstractCumulativeLoanScheduleGenerator implements LoanSch
|
||||
} else {
|
||||
if (loanApplicationTerms.getDisbursementDatas().isEmpty()) {
|
||||
loanApplicationTerms.getDisbursementDatas()
|
||||
.add(new DisbursementData(1L, loanApplicationTerms.getExpectedDisbursementDate(),
|
||||
.add(new DisbursementData(1L, null, loanApplicationTerms.getExpectedDisbursementDate(),
|
||||
loanApplicationTerms.getExpectedDisbursementDate(), loanApplicationTerms.getPrincipal().getAmount(), null,
|
||||
null, null, null));
|
||||
}
|
||||
|
||||
+3
-2
@@ -92,8 +92,9 @@ public class LoanMapper {
|
||||
actualDisbursementDate = loanDisbursementDetails.actualDisbursementDate();
|
||||
}
|
||||
BigDecimal waivedChargeAmount = null;
|
||||
disbursementData.add(new DisbursementData(loanDisbursementDetails.getId(), expectedDisbursementDate, actualDisbursementDate,
|
||||
loanDisbursementDetails.principal(), loan.getNetDisbursalAmount(), null, null, waivedChargeAmount));
|
||||
disbursementData.add(
|
||||
new DisbursementData(loanDisbursementDetails.getId(), loan.getId(), expectedDisbursementDate, actualDisbursementDate,
|
||||
loanDisbursementDetails.principal(), loan.getNetDisbursalAmount(), null, null, waivedChargeAmount));
|
||||
}
|
||||
|
||||
return disbursementData;
|
||||
|
||||
+3
@@ -22,6 +22,7 @@ import jakarta.validation.constraints.NotNull;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.apache.fineract.infrastructure.core.domain.ExternalId;
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
@@ -104,6 +105,8 @@ public interface LoanReadPlatformService {
|
||||
|
||||
Collection<DisbursementData> retrieveLoanDisbursementDetails(Long loanId);
|
||||
|
||||
Map<Long, List<DisbursementData>> retrieveLoanDisbursementDetails(List<Long> loanIds);
|
||||
|
||||
DisbursementData retrieveLoanDisbursementDetail(Long loanId, Long disbursementId);
|
||||
|
||||
LoanTransactionData retrieveRecoveryPaymentTemplate(Long loanId);
|
||||
|
||||
Reference in New Issue
Block a user