Subversion Repositories SmartDukaan

Rev

Rev 34306 | Rev 34308 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
34306 ranu 1
package com.smartdukaan.cron.scheduled;
2
 
3
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
4
import com.spice.profitmandi.dao.entity.transaction.Loan;
5
import com.spice.profitmandi.dao.entity.transaction.Transaction;
6
import com.spice.profitmandi.dao.repository.transaction.LoanRepository;
7
import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;
8
import org.apache.logging.log4j.LogManager;
9
import org.apache.logging.log4j.Logger;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.beans.factory.annotation.Value;
12
import org.springframework.stereotype.Component;
13
import org.springframework.transaction.annotation.Transactional;
14
 
15
import java.time.LocalDateTime;
16
import java.time.temporal.ChronoUnit;
17
import java.util.*;
18
 
19
@Component
20
@Transactional(rollbackFor = {Throwable.class, ProfitMandiBusinessException.class})
21
public class ScheduledTasksTest {
22
 
23
    private static final Logger LOGGER = LogManager.getLogger(ScheduledTasksTest.class);
24
 
25
    @Autowired
26
    TransactionRepository transactionRepository;
27
 
28
    @Autowired
29
    LoanRepository loanRepository;
30
 
34307 ranu 31
    public void test(List<Integer> loanIds) throws Exception {
34306 ranu 32
        System.out.println("test start");
34307 ranu 33
        this.findLoanTransactionMapingAccordingLoan(loanIds);
34306 ranu 34
        System.out.println("test end");
35
 
36
    }
37
 
38
 
39
 
34307 ranu 40
    public Map<Integer,Integer> findLoanTransactionMapingAccordingLoan(List<Integer> loanIds) throws ProfitMandiBusinessException {
34306 ranu 41
 
42
        Map<Integer, Integer> transactionLoanMap = new HashMap<>();
43
 
44
        for(int loanId : loanIds){
45
            Transaction transaction = null;
46
            Loan loan = loanRepository.selectByLoanId(loanId);
47
            List<Transaction> transactions = transactionRepository.selectByRetailerId(loan.getFofoId());
48
 
49
            LocalDateTime nearestDateTime = transactions.stream().map(x -> x.getCreateTimestamp())
50
                    .min(Comparator.comparingLong(x -> Math.abs(ChronoUnit.MILLIS.between(x, loan.getCreatedOn()))))
51
                    .orElse(null);
52
 
53
            if (nearestDateTime != null && loan.getCreatedOn().plusMinutes(2).isAfter(nearestDateTime) &&
54
                    loan.getCreatedOn().minusMinutes(1).isBefore(nearestDateTime)) {
55
                // Here transaction is still null
56
                transaction = transactions.stream()
57
                        .filter(x -> x.getCreateTimestamp().equals(nearestDateTime))
58
                        .findFirst().get();
59
                transactionLoanMap.put(transaction.getId(), loanId);
60
            }
61
 
62
        }
63
        LOGGER.info("transactionLoanMap {}",transactionLoanMap);
64
        return transactionLoanMap;
65
    }
66
}