FINERACT-2421: Run inline COB on newly created loans that are behind
This commit is contained in:
committed by
Arnold Gálovics
parent
967e0ea306
commit
f6d013c68d
+5
@@ -79,6 +79,11 @@ public class RetrieveAllNonClosedLoanIdServiceImpl implements RetrieveLoanIdServ
|
||||
return loanRepository.findAllLoansBehindByLoanIdsAndStatuses(businessDate, loanIds, NON_CLOSED_LOAN_STATUSES);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<COBIdAndLastClosedBusinessDate> retrieveLoanBehindOnDisbursementDate(LocalDate businessDate, List<Long> loanIds) {
|
||||
return loanRepository.findAllLoansBehindOnDisbursementDate(businessDate, loanIds, NON_CLOSED_LOAN_STATUSES);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<COBIdAndLastClosedBusinessDate> retrieveLoanIdsBehindDateOrNull(LocalDate businessDate, List<Long> loanIds) {
|
||||
return loanRepository.findAllLoansBehindOrNullByLoanIdsAndStatuses(businessDate, loanIds, NON_CLOSED_LOAN_STATUSES);
|
||||
|
||||
+1
@@ -40,4 +40,5 @@ public interface RetrieveLoanIdService {
|
||||
|
||||
List<COBIdAndExternalIdAndAccountNo> findAllStayedLockedByCobBusinessDate(@Param("cobBusinessDate") LocalDate cobBusinessDate);
|
||||
|
||||
List<COBIdAndLastClosedBusinessDate> retrieveLoanBehindOnDisbursementDate(LocalDate businessDateByType, List<Long> loanIds);
|
||||
}
|
||||
|
||||
+8
-5
@@ -40,6 +40,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.fineract.batch.domain.BatchRequest;
|
||||
import org.apache.fineract.cob.conditions.LoanCOBEnabledCondition;
|
||||
import org.apache.fineract.cob.data.COBIdAndLastClosedBusinessDate;
|
||||
import org.apache.fineract.cob.loan.LoanCOBConstant;
|
||||
import org.apache.fineract.cob.loan.RetrieveLoanIdService;
|
||||
import org.apache.fineract.cob.service.InlineLoanCOBExecutorServiceImpl;
|
||||
import org.apache.fineract.cob.service.LoanAccountLockService;
|
||||
@@ -85,8 +86,6 @@ public class LoanCOBFilterHelper implements InitializingBean {
|
||||
private static final Predicate<String> URL_FUNCTION = s -> LOAN_PATH_PATTERN.matcher(s).find()
|
||||
|| LOAN_GLIMACCOUNT_PATH_PATTERN.matcher(s).find();
|
||||
|
||||
private static final String JOB_NAME = "INLINE_LOAN_COB";
|
||||
|
||||
private Long getLoanId(boolean isGlim, String pathInfo) {
|
||||
if (!isGlim) {
|
||||
String id = LOAN_PATH_PATTERN.matcher(pathInfo).replaceAll("$1");
|
||||
@@ -197,8 +196,12 @@ public class LoanCOBFilterHelper implements InitializingBean {
|
||||
public boolean isLoanBehind(List<Long> loanIds) {
|
||||
List<COBIdAndLastClosedBusinessDate> loanIdAndLastClosedBusinessDates = new ArrayList<>();
|
||||
List<List<Long>> partitions = Lists.partition(loanIds, fineractProperties.getQuery().getInClauseParameterSizeLimit());
|
||||
partitions.forEach(partition -> loanIdAndLastClosedBusinessDates.addAll(retrieveLoanIdService
|
||||
.retrieveLoanIdsBehindDate(ThreadLocalContextUtil.getBusinessDateByType(BusinessDateType.COB_DATE), partition)));
|
||||
partitions.forEach(partition -> {
|
||||
loanIdAndLastClosedBusinessDates.addAll(retrieveLoanIdService
|
||||
.retrieveLoanIdsBehindDate(ThreadLocalContextUtil.getBusinessDateByType(BusinessDateType.COB_DATE), partition));
|
||||
loanIdAndLastClosedBusinessDates.addAll(retrieveLoanIdService.retrieveLoanBehindOnDisbursementDate(
|
||||
ThreadLocalContextUtil.getBusinessDateByType(BusinessDateType.COB_DATE), partition));
|
||||
});
|
||||
return CollectionUtils.isNotEmpty(loanIdAndLastClosedBusinessDates);
|
||||
}
|
||||
|
||||
@@ -269,7 +272,7 @@ public class LoanCOBFilterHelper implements InitializingBean {
|
||||
}
|
||||
|
||||
public void executeInlineCob(List<Long> loanIds) {
|
||||
inlineLoanCOBExecutorService.execute(loanIds, JOB_NAME);
|
||||
inlineLoanCOBExecutorService.execute(loanIds, LoanCOBConstant.INLINE_LOAN_COB_JOB_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user