FINERACT-1818-LoanAccount-Avro-data-addition-Charges-Delinquent-data
This commit is contained in:
committed by
Arnold Gálovics
parent
db480f4213
commit
64fdc39264
+22
-2
@@ -21,15 +21,20 @@ package org.apache.fineract.infrastructure.event.external.service.serialization.
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.avro.generic.GenericContainer;
|
import org.apache.avro.generic.GenericContainer;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.fineract.avro.generator.ByteBufferSerializable;
|
import org.apache.fineract.avro.generator.ByteBufferSerializable;
|
||||||
import org.apache.fineract.avro.loan.v1.LoanAccountDataV1;
|
import org.apache.fineract.avro.loan.v1.LoanAccountDataV1;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanAccountDataMapper;
|
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanAccountDataMapper;
|
||||||
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventSerializer;
|
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventSerializer;
|
||||||
|
import org.apache.fineract.portfolio.delinquency.service.DelinquencyReadPlatformService;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.data.CollectionData;
|
||||||
import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData;
|
import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.data.LoanChargeData;
|
||||||
import org.apache.fineract.portfolio.loanaccount.data.LoanSummaryData;
|
import org.apache.fineract.portfolio.loanaccount.data.LoanSummaryData;
|
||||||
import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData;
|
import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
|
||||||
import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
|
import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -39,6 +44,8 @@ public class LoanBusinessEventSerializer extends AbstractBusinessEventSerializer
|
|||||||
|
|
||||||
private final LoanReadPlatformService service;
|
private final LoanReadPlatformService service;
|
||||||
private final LoanAccountDataMapper mapper;
|
private final LoanAccountDataMapper mapper;
|
||||||
|
private final LoanChargeReadPlatformService loanChargeReadPlatformService;
|
||||||
|
private final DelinquencyReadPlatformService delinquencyReadPlatformService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean canSerialize(BusinessEvent<T> event) {
|
public <T> boolean canSerialize(BusinessEvent<T> event) {
|
||||||
@@ -48,10 +55,23 @@ public class LoanBusinessEventSerializer extends AbstractBusinessEventSerializer
|
|||||||
@Override
|
@Override
|
||||||
protected <T> ByteBufferSerializable toAvroDTO(BusinessEvent<T> rawEvent) {
|
protected <T> ByteBufferSerializable toAvroDTO(BusinessEvent<T> rawEvent) {
|
||||||
LoanBusinessEvent event = (LoanBusinessEvent) rawEvent;
|
LoanBusinessEvent event = (LoanBusinessEvent) rawEvent;
|
||||||
LoanAccountData data = service.retrieveOne(event.get().getId());
|
Long loanId = event.get().getId();
|
||||||
|
LoanAccountData data = service.retrieveOne(loanId);
|
||||||
|
|
||||||
data = service.fetchRepaymentScheduleData(data);
|
data = service.fetchRepaymentScheduleData(data);
|
||||||
|
|
||||||
|
Collection<LoanChargeData> loanCharges = loanChargeReadPlatformService.retrieveLoanCharges(loanId);
|
||||||
|
if (CollectionUtils.isNotEmpty(loanCharges)) {
|
||||||
|
data.setCharges(loanCharges);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.isActive()) {
|
||||||
|
CollectionData delinquentData = delinquencyReadPlatformService.calculateLoanCollectionData(loanId);
|
||||||
|
data.setDelinquent(delinquentData);
|
||||||
|
}
|
||||||
|
|
||||||
if (data.getSummary() != null) {
|
if (data.getSummary() != null) {
|
||||||
final Collection<LoanTransactionData> currentLoanTransactions = service.retrieveLoanTransactions(event.get().getId());
|
final Collection<LoanTransactionData> currentLoanTransactions = service.retrieveLoanTransactions(loanId);
|
||||||
data.setSummary(LoanSummaryData.withTransactionAmountsSummary(data.getSummary(), currentLoanTransactions));
|
data.setSummary(LoanSummaryData.withTransactionAmountsSummary(data.getSummary(), currentLoanTransactions));
|
||||||
}
|
}
|
||||||
return mapper.map(data);
|
return mapper.map(data);
|
||||||
|
|||||||
Reference in New Issue
Block a user