| 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
|