FINERACT-186
This commit is contained in:
+4
@@ -20,6 +20,8 @@ package org.apache.fineract.portfolio.savings.domain;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
@@ -48,4 +50,6 @@ public interface SavingsAccountRepository extends JpaRepository<SavingsAccount,
|
|||||||
|
|
||||||
@Query("from SavingsAccount sa where sa.accountNumber = :accountNumber and sa.status in (100, 200, 300, 303, 304) ")
|
@Query("from SavingsAccount sa where sa.accountNumber = :accountNumber and sa.status in (100, 200, 300, 303, 304) ")
|
||||||
SavingsAccount findNonClosedAccountByAccountNumber(@Param("accountNumber") String accountNumber);
|
SavingsAccount findNonClosedAccountByAccountNumber(@Param("accountNumber") String accountNumber);
|
||||||
|
|
||||||
|
Page<SavingsAccount> findByStatus(Integer status,Pageable pageable);
|
||||||
}
|
}
|
||||||
+28
-18
@@ -30,6 +30,8 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository;
|
|||||||
import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType;
|
import org.apache.fineract.portfolio.savings.domain.SavingsAccountStatusType;
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -37,40 +39,48 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
|
|||||||
|
|
||||||
private final SavingsAccountAssembler savingAccountAssembler;
|
private final SavingsAccountAssembler savingAccountAssembler;
|
||||||
private final SavingsAccountWritePlatformService savingsAccountWritePlatformService;
|
private final SavingsAccountWritePlatformService savingsAccountWritePlatformService;
|
||||||
private final SavingsAccountRepository savingAccountRepository;
|
|
||||||
private final SavingsAccountReadPlatformService savingAccountReadPlatformService;
|
private final SavingsAccountReadPlatformService savingAccountReadPlatformService;
|
||||||
|
private final SavingsAccountRepository savingsAccountRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public SavingsSchedularServiceImpl(final SavingsAccountAssembler savingAccountAssembler,
|
public SavingsSchedularServiceImpl(final SavingsAccountAssembler savingAccountAssembler,
|
||||||
final SavingsAccountWritePlatformService savingsAccountWritePlatformService,
|
final SavingsAccountWritePlatformService savingsAccountWritePlatformService,
|
||||||
final SavingsAccountRepository savingAccountRepository,
|
final SavingsAccountReadPlatformService savingAccountReadPlatformService,
|
||||||
final SavingsAccountReadPlatformService savingAccountReadPlatformService) {
|
final SavingsAccountRepository savingsAccountRepository) {
|
||||||
this.savingAccountAssembler = savingAccountAssembler;
|
this.savingAccountAssembler = savingAccountAssembler;
|
||||||
this.savingsAccountWritePlatformService = savingsAccountWritePlatformService;
|
this.savingsAccountWritePlatformService = savingsAccountWritePlatformService;
|
||||||
this.savingAccountRepository = savingAccountRepository;
|
|
||||||
this.savingAccountReadPlatformService = savingAccountReadPlatformService;
|
this.savingAccountReadPlatformService = savingAccountReadPlatformService;
|
||||||
|
this.savingsAccountRepository = savingsAccountRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@CronTarget(jobName = JobName.POST_INTEREST_FOR_SAVINGS)
|
@CronTarget(jobName = JobName.POST_INTEREST_FOR_SAVINGS)
|
||||||
@Override
|
@Override
|
||||||
public void postInterestForAccounts() throws JobExecutionException {
|
public void postInterestForAccounts() throws JobExecutionException {
|
||||||
final List<SavingsAccount> savingsAccounts = this.savingAccountRepository.findSavingAccountByStatus(SavingsAccountStatusType.ACTIVE
|
int offSet = 0;
|
||||||
.getValue());
|
Integer initialSize = 500;
|
||||||
|
Integer totalPageSize = 0;
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
for (final SavingsAccount savingsAccount : savingsAccounts) {
|
do {
|
||||||
try {
|
PageRequest pageRequest = new PageRequest(offSet, initialSize);
|
||||||
this.savingAccountAssembler.assignSavingAccountHelpers(savingsAccount);
|
Page<SavingsAccount> savingsAccounts = this.savingsAccountRepository.findByStatus(SavingsAccountStatusType.ACTIVE.getValue(),
|
||||||
this.savingsAccountWritePlatformService.postInterest(savingsAccount);
|
pageRequest);
|
||||||
} catch (Exception e) {
|
for (SavingsAccount savingsAccount : savingsAccounts.getContent()) {
|
||||||
Throwable realCause = e;
|
try {
|
||||||
if (e.getCause() != null) {
|
this.savingAccountAssembler.assignSavingAccountHelpers(savingsAccount);
|
||||||
realCause = e.getCause();
|
this.savingsAccountWritePlatformService.postInterest(savingsAccount);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Throwable realCause = e;
|
||||||
|
if (e.getCause() != null) {
|
||||||
|
realCause = e.getCause();
|
||||||
|
}
|
||||||
|
sb.append("failed to post interest for Savings with id " + savingsAccount.getId() + " with message "
|
||||||
|
+ realCause.getMessage());
|
||||||
}
|
}
|
||||||
sb.append("failed to post interest for Savings with id " + savingsAccount.getId() + " with message "
|
|
||||||
+ realCause.getMessage());
|
|
||||||
}
|
}
|
||||||
}
|
offSet++;
|
||||||
|
totalPageSize = savingsAccounts.getTotalPages();
|
||||||
|
} while (offSet < totalPageSize);
|
||||||
|
|
||||||
if (sb.length() > 0) { throw new JobExecutionException(sb.toString()); }
|
if (sb.length() > 0) { throw new JobExecutionException(sb.toString()); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user