Subversion Repositories SmartDukaan

Rev

Rev 33363 | Rev 33449 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 33363 Rev 33420
Line 9... Line 9...
9
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
9
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
10
import com.spice.profitmandi.dao.entity.transaction.*;
10
import com.spice.profitmandi.dao.entity.transaction.*;
11
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
11
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
12
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
12
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
13
import com.spice.profitmandi.dao.enumuration.transaction.TransactionType;
13
import com.spice.profitmandi.dao.enumuration.transaction.TransactionType;
-
 
14
import com.spice.profitmandi.dao.model.DateRangeModel;
14
import com.spice.profitmandi.dao.repository.catalog.AddWalletRequestRepository;
15
import com.spice.profitmandi.dao.repository.catalog.AddWalletRequestRepository;
15
import com.spice.profitmandi.dao.repository.catalog.ManualPaymentRequestRepository;
16
import com.spice.profitmandi.dao.repository.catalog.ManualPaymentRequestRepository;
16
import com.spice.profitmandi.dao.repository.catalog.UnsettledPaymentsRepository;
17
import com.spice.profitmandi.dao.repository.catalog.UnsettledPaymentsRepository;
17
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
18
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
18
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
19
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
Line 57... Line 58...
57
import java.io.ByteArrayInputStream;
58
import java.io.ByteArrayInputStream;
58
import java.io.ByteArrayOutputStream;
59
import java.io.ByteArrayOutputStream;
59
import java.io.InputStream;
60
import java.io.InputStream;
60
import java.math.BigDecimal;
61
import java.math.BigDecimal;
61
import java.text.MessageFormat;
62
import java.text.MessageFormat;
62
import java.time.LocalDate;
-
 
63
import java.time.LocalDateTime;
-
 
64
import java.time.YearMonth;
-
 
65
import java.time.ZoneId;
63
import java.time.*;
66
import java.util.*;
64
import java.util.*;
67
import java.util.stream.Collectors;
65
import java.util.stream.Collectors;
68
 
66
 
69
@Controller
67
@Controller
70
@Transactional(rollbackOn = Throwable.class)
68
@Transactional(rollbackOn = Throwable.class)
Line 1067... Line 1065...
1067
    @RequestMapping(value = "/getCreditDetail", method = RequestMethod.GET)
1065
    @RequestMapping(value = "/getCreditDetail", method = RequestMethod.GET)
1068
    public String getCreditDetail(HttpServletRequest request, Model model) throws Exception {
1066
    public String getCreditDetail(HttpServletRequest request, Model model) throws Exception {
1069
        List<CreditAccount> creditAccounts = creditAccountRepository.selectAll().stream().filter(x -> directGateways.contains(x.getGateway())).collect(Collectors.toList());
1067
        List<CreditAccount> creditAccounts = creditAccountRepository.selectAll().stream().filter(x -> directGateways.contains(x.getGateway())).collect(Collectors.toList());
1070
        Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
1068
        Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
1071
 
1069
 
-
 
1070
        List<Integer> fofoIds = creditAccounts.stream().map(x -> x.getFofoId()).collect(Collectors.toList());
1072
        //Need to maintain valid upto
1071
        //Need to maintain valid upto
1073
        Map<Integer, FofoSidbiSanction> fofoSidbiPendingSanctionsMap = fofoSidbiSanctionRepository.selectAll(Optional.of(false)).stream().collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
1072
        Map<Integer, FofoSidbiSanction> fofoSidbiPendingSanctionsMap = fofoSidbiSanctionRepository.selectAll(Optional.of(false)).stream().collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
1074
 
1073
 
-
 
1074
        Map<Integer, Integer> partnerAverageCreditDaysMap = new HashMap<>();
-
 
1075
 
-
 
1076
        List<Loan> loans = loanRepository.selectAllLoans(fofoIds, DateRangeModel.withStartDate(LocalDate.now().atStartOfDay().minusYears(2)));
-
 
1077
        Map<Integer, List<Loan>> partnerClosedLoansMap = loans.stream().filter(x -> x.getPendingAmount().compareTo(BigDecimal.ZERO) == 0)
-
 
1078
                .collect(Collectors.groupingBy(x -> x.getFofoId()));
-
 
1079
        for (Integer fofoId : fofoIds) {
-
 
1080
            List<Loan> closedLoans = partnerClosedLoansMap.get(fofoId);
-
 
1081
 
-
 
1082
            if (closedLoans != null) {
-
 
1083
                long averageCreditDays = Math.round(closedLoans.stream().mapToLong(x -> Duration.between(x.getCreatedOn(),
-
 
1084
                        x.getSettledOn() == null ? x.getCreatedOn().plusDays(10) : x.getSettledOn()).toDays() + 1).average().orElse(0.0));
-
 
1085
                partnerAverageCreditDaysMap.put(fofoId, (int) averageCreditDays);
-
 
1086
            }
-
 
1087
        }
-
 
1088
 
1075
 
1089
 
1076
        model.addAttribute("creditAccounts", creditAccounts);
1090
        model.addAttribute("creditAccounts", creditAccounts);
1077
        model.addAttribute("fofoSidbiPendingSanctionsMap", fofoSidbiPendingSanctionsMap);
1091
        model.addAttribute("fofoSidbiPendingSanctionsMap", fofoSidbiPendingSanctionsMap);
1078
        model.addAttribute("directGateways", directGateways);
1092
        model.addAttribute("directGateways", directGateways);
1079
 
-
 
1080
        model.addAttribute("customRetailers", customRetailers);
1093
        model.addAttribute("customRetailers", customRetailers);
-
 
1094
        model.addAttribute("partnerAverageCreditDaysMap", partnerAverageCreditDaysMap);
1081
        return "partner-credit-detail";
1095
        return "partner-credit-detail";
1082
    }
1096
    }
1083
 
1097
 
1084
 
1098
 
1085
    @Autowired
1099
    @Autowired