Rev 34307 | Rev 34321 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.smartdukaan.cron.scheduled;import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;import com.spice.profitmandi.dao.entity.transaction.Loan;import com.spice.profitmandi.dao.entity.transaction.Transaction;import com.spice.profitmandi.dao.repository.transaction.LoanRepository;import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;import com.spice.profitmandi.service.transaction.SDCreditService;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import java.time.LocalDateTime;import java.time.temporal.ChronoUnit;import java.util.*;@Component@Transactional(rollbackFor = {Throwable.class, ProfitMandiBusinessException.class})public class ScheduledTasksTest {private static final Logger LOGGER = LogManager.getLogger(ScheduledTasksTest.class);@AutowiredTransactionRepository transactionRepository;@AutowiredLoanRepository loanRepository;@AutowiredSDCreditService sdCreditService;public void test(List<Integer> loanIds) throws Exception {System.out.println("test start");this.findLoanTransactionMapingAccordingLoan(loanIds);System.out.println("test end");}public void createLoanForBillingByTransactionIdAndInvoiceNumber(int transactionId, double invoiceAmount, String invoiceNumber) throws Exception {sdCreditService.createLoanForBilling(transactionId, invoiceAmount, invoiceNumber);}public Map<Integer,Integer> findLoanTransactionMapingAccordingLoan(List<Integer> loanIds) throws ProfitMandiBusinessException {Map<Integer, Integer> transactionLoanMap = new HashMap<>();for(int loanId : loanIds){Transaction transaction = null;Loan loan = loanRepository.selectByLoanId(loanId);List<Transaction> transactions = transactionRepository.selectByRetailerId(loan.getFofoId());LocalDateTime nearestDateTime = transactions.stream().map(x -> x.getCreateTimestamp()).min(Comparator.comparingLong(x -> Math.abs(ChronoUnit.MILLIS.between(x, loan.getCreatedOn())))).orElse(null);if (nearestDateTime != null && loan.getCreatedOn().plusMinutes(2).isAfter(nearestDateTime) &&loan.getCreatedOn().minusMinutes(1).isBefore(nearestDateTime)) {// Here transaction is still nulltransaction = transactions.stream().filter(x -> x.getCreateTimestamp().equals(nearestDateTime)).findFirst().get();transactionLoanMap.put(transaction.getId(), loanId);}}LOGGER.info("transactionLoanMap {}",transactionLoanMap);return transactionLoanMap;}}