| Line 137... |
Line 137... |
| 137 |
import java.util.*;
|
137 |
import java.util.*;
|
| 138 |
import java.util.Map.Entry;
|
138 |
import java.util.Map.Entry;
|
| 139 |
import java.util.stream.Collectors;
|
139 |
import java.util.stream.Collectors;
|
| 140 |
import java.util.stream.Stream;
|
140 |
import java.util.stream.Stream;
|
| 141 |
|
141 |
|
| - |
|
142 |
|
| 142 |
import static java.util.stream.Collectors.groupingBy;
|
143 |
import static java.util.stream.Collectors.groupingBy;
|
| 143 |
import static java.util.stream.Collectors.mapping;
|
144 |
import static java.util.stream.Collectors.mapping;
|
| 144 |
|
145 |
|
| 145 |
|
146 |
|
| 146 |
@Component
|
147 |
@Component
|
| Line 748... |
Line 749... |
| 748 |
}
|
749 |
}
|
| 749 |
|
750 |
|
| 750 |
}
|
751 |
}
|
| 751 |
}
|
752 |
}
|
| 752 |
if (upgradedCount > 0) {
|
753 |
if (upgradedCount > 0) {
|
| 753 |
sendMailOfHtmlFormat(googleMailSender,
|
- |
|
| 754 |
new String[]{"amit.gupta@smartdukaan.com", "tarun.verma@smartdukaan.com", "neeraj.gupta@smartdukaan.com"}, sb.toString(), null, "Few Partners Category have been Upgraded");
|
754 |
sendMailOfHtmlFormat(googleMailSender, new String[]{"amit.gupta@smartdukaan.com", "tarun.verma@smartdukaan.com", "neeraj.gupta@smartdukaan.com"}, sb.toString(), null, "Few Partners Category have been Upgraded");
|
| 755 |
} else {
|
755 |
} else {
|
| 756 |
sendMailOfHtmlFormat(googleMailSender,
|
- |
|
| 757 |
new String[]{"amit.gupta@smartdukaan.com", "tarun.verma@smartdukaan.com", "neeraj.gupta@smartdukaan.com"}, sb.toString(), null, "No partners Category have been upgraded today");
|
756 |
sendMailOfHtmlFormat(googleMailSender, new String[]{"amit.gupta@smartdukaan.com", "tarun.verma@smartdukaan.com", "neeraj.gupta@smartdukaan.com"}, sb.toString(), null, "No partners Category have been upgraded today");
|
| 758 |
}
|
757 |
}
|
| 759 |
}
|
758 |
}
|
| 760 |
|
759 |
|
| 761 |
@Autowired
|
760 |
@Autowired
|
| 762 |
private PartnerStatsService partnerStatsService;
|
761 |
private PartnerStatsService partnerStatsService;
|
| Line 1111... |
Line 1110... |
| 1111 |
@Autowired
|
1110 |
@Autowired
|
| 1112 |
SessionFactory sessionFactory;
|
1111 |
SessionFactory sessionFactory;
|
| 1113 |
|
1112 |
|
| 1114 |
private void checkAllPayoutsDuplicate() throws Exception {
|
1113 |
private void checkAllPayoutsDuplicate() throws Exception {
|
| 1115 |
final Session session = sessionFactory.getCurrentSession();
|
1114 |
final Session session = sessionFactory.getCurrentSession();
|
| 1116 |
final NativeQuery<Object[]> nativeQuery = session.createNativeQuery("select sio.inventory_item_id, sio.scheme_id, sio.status, count(*) c\n" +
|
1115 |
final NativeQuery<Object[]> nativeQuery = session.createNativeQuery("select sio.inventory_item_id, sio.scheme_id, sio.status, count(*) c\n" + "from fofo.scheme_in_out sio\n" + " join catalog.scheme s on s.id = sio.scheme_id\n" + "where (sio.status = 'CREDITED'\n" + " or sio.status = 'PENDING')\n" + " and s.type != 'INVESTMENT'\n" + " and sio.create_timestamp >= '2023-01-01' " + "group by sio.inventory_item_id, sio.scheme_id, sio.status\n" + "having c > 1");
|
| 1117 |
"from fofo.scheme_in_out sio\n" +
|
- |
|
| 1118 |
" join catalog.scheme s on s.id = sio.scheme_id\n" +
|
- |
|
| 1119 |
"where (sio.status = 'CREDITED'\n" +
|
- |
|
| 1120 |
" or sio.status = 'PENDING')\n" +
|
- |
|
| 1121 |
" and s.type != 'INVESTMENT'\n" +
|
- |
|
| 1122 |
" and sio.create_timestamp >= '2023-01-01' " +
|
- |
|
| 1123 |
"group by sio.inventory_item_id, sio.scheme_id, sio.status\n" +
|
- |
|
| 1124 |
"having c > 1");
|
- |
|
| 1125 |
List<Object[]> resultList = nativeQuery.getResultList();
|
1116 |
List<Object[]> resultList = nativeQuery.getResultList();
|
| 1126 |
for (Object[] tuple : resultList) {
|
1117 |
for (Object[] tuple : resultList) {
|
| 1127 |
LOGGER.info("RESULT -- {}, {}, {}", tuple[0], tuple[1], tuple[2]);
|
1118 |
LOGGER.info("RESULT -- {}, {}, {}", tuple[0], tuple[1], tuple[2]);
|
| 1128 |
int inventoryItemId = (Integer) tuple[0];
|
1119 |
int inventoryItemId = (Integer) tuple[0];
|
| 1129 |
int schemeId = (Integer) tuple[1];
|
1120 |
int schemeId = (Integer) tuple[1];
|
| Line 2713... |
Line 2704... |
| 2713 |
|
2704 |
|
| 2714 |
}
|
2705 |
}
|
| 2715 |
|
2706 |
|
| 2716 |
private void addMissedScheduledLeadsTable(StringBuilder sb, List<Lead> missedScheduleLeads, Map<Integer, AuthUser> authUserMap) {
|
2707 |
private void addMissedScheduledLeadsTable(StringBuilder sb, List<Lead> missedScheduleLeads, Map<Integer, AuthUser> authUserMap) {
|
| 2717 |
sb.append("<h3>Leads That Missed the schedule</h3>");
|
2708 |
sb.append("<h3>Leads That Missed the schedule</h3>");
|
| 2718 |
sb.append("<table style='border:1px solid black' cellspacing='0'>")
|
2709 |
sb.append("<table style='border:1px solid black' cellspacing='0'>").append("<tr>").append("<th style='border:1px solid black;padding: 5px'>").append("Lead Id").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("Lead Name").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("Mobile No").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("City").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("State").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("Created On").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("Assigned To").append("</th>").append("<th style='border:1px solid black;padding: 5px'>").append("Scheduled On").append("</th>").append("</tr>");
|
| 2719 |
.append("<tr>")
|
- |
|
| 2720 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Lead Id").append("</th>")
|
- |
|
| 2721 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Lead Name").append("</th>")
|
- |
|
| 2722 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Mobile No").append("</th>")
|
- |
|
| 2723 |
.append("<th style='border:1px solid black;padding: 5px'>").append("City").append("</th>")
|
- |
|
| 2724 |
.append("<th style='border:1px solid black;padding: 5px'>").append("State").append("</th>")
|
- |
|
| 2725 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Created On").append("</th>")
|
- |
|
| 2726 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Assigned To").append("</th>")
|
- |
|
| 2727 |
.append("<th style='border:1px solid black;padding: 5px'>").append("Scheduled On").append("</th>")
|
- |
|
| 2728 |
.append("</tr>");
|
- |
|
| 2729 |
for (Lead lead : missedScheduleLeads) {
|
2710 |
for (Lead lead : missedScheduleLeads) {
|
| 2730 |
sb.append("<tr style='background-color:").append(lead.getColor()).append("'>")
|
2711 |
sb.append("<tr style='background-color:").append(lead.getColor()).append("'>").append("<td style='border:1px solid black;padding: 5px'>").append(lead.getId()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(lead.getFullName()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(lead.getLeadMobile()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(lead.getCity()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(lead.getState()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(FormattingUtils.formatDate(lead.getCreatedTimestamp())).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(
|
| 2731 |
.append("<td style='border:1px solid black;padding: 5px'>").append(lead.getId()).append("</td>")
|
- |
|
| 2732 |
.append("<td style='border:1px solid black;padding: 5px'>").append(lead.getFullName()).append("</td>")
|
- |
|
| 2733 |
.append("<td style='border:1px solid black;padding: 5px'>").append(lead.getLeadMobile()).append("</td>")
|
- |
|
| 2734 |
.append("<td style='border:1px solid black;padding: 5px'>").append(lead.getCity()).append("</td>")
|
- |
|
| 2735 |
.append("<td style='border:1px solid black;padding: 5px'>").append(lead.getState()).append("</td>")
|
- |
|
| 2736 |
.append("<td style='border:1px solid black;padding: 5px'>").append(FormattingUtils.formatDate(lead.getCreatedTimestamp())).append("</td>")
|
- |
|
| 2737 |
.append("<td style='border:1px solid black;padding: 5px'>").append(
|
- |
|
| 2738 |
authUserMap.containsKey(lead.getAssignTo()) ? authUserMap.get(lead.getAssignTo()).getFullName() : lead.getAssignTo()).append("</td>")
|
- |
|
| 2739 |
.append("<td style='border:1px solid black;padding: 5px'>").append(FormattingUtils.formatDate(lead.getScheduledTimestamp())).append("</td>")
|
2712 |
authUserMap.containsKey(lead.getAssignTo()) ? authUserMap.get(lead.getAssignTo()).getFullName() : lead.getAssignTo()).append("</td>").append("<td style='border:1px solid black;padding: 5px'>").append(FormattingUtils.formatDate(lead.getScheduledTimestamp())).append("</td>").append("</tr>");
|
| 2740 |
.append("</tr>");
|
- |
|
| 2741 |
}
|
2713 |
}
|
| 2742 |
sb.append("</table>");
|
2714 |
sb.append("</table>");
|
| 2743 |
}
|
2715 |
}
|
| 2744 |
|
2716 |
|
| 2745 |
public void notifyVisits() throws Exception {
|
2717 |
public void notifyVisits() throws Exception {
|
| Line 3622... |
Line 3594... |
| 3622 |
|
3594 |
|
| 3623 |
|
3595 |
|
| 3624 |
// userWallet.setAmount(0);
|
3596 |
// userWallet.setAmount(0);
|
| 3625 |
}
|
3597 |
}
|
| 3626 |
|
3598 |
|
| 3627 |
}
|
- |
|
| 3628 |
}
|
- |
|
| 3629 |
|
3599 |
|
| 3630 |
List<Order> allOrders = orderRepository.selectHoldOrder();
|
3600 |
List<SanctionRequest> sanctionRequests = sanctionRequestRepository.selectHoldSanctionByFofoId(loan.getFofoId());
|
| 3631 |
|
3601 |
|
| 3632 |
LOGGER.info("allOrders {}", allOrders);
|
3602 |
double settledAmount = paidAmount;
|
| - |
|
3603 |
for (SanctionRequest sanctionRequest : sanctionRequests) {
|
| 3633 |
|
3604 |
|
| 3634 |
if (!allOrders.isEmpty()) {
|
- |
|
| 3635 |
Map<Integer, List<Order>> transactionOrdersMap = allOrders.stream().collect(groupingBy(Order::getTransactionId, Collectors.toList()));
|
3605 |
List<Order> orders = orderRepository.selectAllByTransactionId(sanctionRequest.getTransactionId());
|
| 3636 |
LinkedHashMap<Integer, List<Order>> sortedTransactionOrdersMap = new LinkedHashMap<>();
|
- |
|
| 3637 |
transactionOrdersMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedTransactionOrdersMap.put(x.getKey(), x.getValue()));
|
- |
|
| 3638 |
LOGGER.info("sortedTransactionOrdersMap {}", sortedTransactionOrdersMap);
|
- |
|
| 3639 |
|
3606 |
|
| 3640 |
for (Entry<Integer, List<Order>> transactionOrdersEntry : sortedTransactionOrdersMap.entrySet()) {
|
- |
|
| 3641 |
|
3607 |
|
| 3642 |
List<Order> orders = transactionOrdersEntry.getValue();
|
3608 |
if (settledAmount >= sanctionRequest.getPendingAmount().doubleValue()) {
|
| - |
|
3609 |
settledAmount = settledAmount - sanctionRequest.getPendingAmount().doubleValue();
|
| 3643 |
|
3610 |
|
| 3644 |
double totalAmount = orders.stream().collect(Collectors.summingDouble(x -> x.getTotalAmount()));
|
3611 |
sanctionRequest.setPendingAmount(BigDecimal.valueOf(0));
|
| - |
|
3612 |
this.sendUnholdEmail(orders);
|
| - |
|
3613 |
} else {
|
| 3645 |
|
3614 |
|
| 3646 |
LocalDateTime createDate = orders.get(0).getCreateTimestamp();
|
3615 |
settledAmount = sanctionRequest.getPendingAmount().doubleValue() - settledAmount;
|
| 3647 |
|
3616 |
|
| 3648 |
int fofoId = orders.get(0).getRetailerId();
|
3617 |
sanctionRequest.setPendingAmount(BigDecimal.valueOf(settledAmount));
|
| 3649 |
|
3618 |
|
| 3650 |
int transactionId = transactionOrdersEntry.getKey();
|
3619 |
break;
|
| 3651 |
|
3620 |
|
| 3652 |
SanctionRequest sanctionRequest = sanctionRequestRepository.selectByTransactionId(transactionId);
|
3621 |
}
|
| 3653 |
|
3622 |
|
| 3654 |
double loanSettleAmount = loanStatementRepository.selectByDateAndFofoId(createDate, fofoId).stream().filter(x -> x.getAmount().doubleValue() > 0).collect(Collectors.summingDouble(x -> x.getAmount().doubleValue()));
|
- |
|
| - |
|
3623 |
}
|
| - |
|
3624 |
}
|
| 3655 |
|
3625 |
|
| 3656 |
LOGGER.info("loanSettleAmount {}", loanSettleAmount);
|
3626 |
}
|
| 3657 |
|
3627 |
|
| 3658 |
LOGGER.info("totalAmount {}", totalAmount);
|
- |
|
| 3659 |
if (loanSettleAmount >= sanctionRequest.getUtilizationAmount().doubleValue()) {
|
- |
|
| 3660 |
|
3628 |
|
| 3661 |
LOGGER.info("totalAmount {}", totalAmount);
|
3629 |
}
|
| 3662 |
|
3630 |
|
| 3663 |
orders.forEach(x -> x.setShipmentHold(false));
|
- |
|
| - |
|
3631 |
}
|
| 3664 |
|
3632 |
|
| 3665 |
List<String> authUserEmail = csService.getAuthUserIdByPartnerId(orders.get(0).getRetailerId()).stream().map(x -> x.getEmailId()).collect(Collectors.toList());
|
- |
|
| 3666 |
authUserEmail.add("vinay.p@smartdukaan.com");
|
- |
|
| 3667 |
authUserEmail.add("shivam.gupta@smartdukaan.com");
|
- |
|
| 3668 |
|
3633 |
|
| 3669 |
String[] emailTo = authUserEmail.toArray(new String[authUserEmail.size()]);
|
3634 |
private void sendUnholdEmail(List<Order> orders) throws Exception {
|
| 3670 |
|
3635 |
|
| 3671 |
String[] ccTo = {"tarun.verma@smartdukaan.com", "kamini.sharma@smartdukaan.com"};
|
- |
|
| 3672 |
|
3636 |
|
| 3673 |
String subject = "Dispatched " + (orders.get(0).getRetailerName());
|
3637 |
orders.forEach(x -> x.setShipmentHold(false));
|
| 3674 |
String message = String.format("Dear Team, \n" + "kindly note the material for the " + orders.get(0).getRetailerName() + "of Rs." + totalAmount + "is dispatched.");
|
3638 |
double totalAmount = orders.stream().collect(Collectors.summingDouble(x -> x.getTotalAmount()));
|
| 3675 |
|
3639 |
|
| - |
|
3640 |
List<String> authUserEmail = csService.getAuthUserIdByPartnerId(orders.get(0).getRetailerId()).stream().map(x -> x.getEmailId()).collect(Collectors.toList());
|
| - |
|
3641 |
authUserEmail.add("vinay.p@smartdukaan.com");
|
| 3676 |
Utils.sendMailWithAttachments(mailSender, emailTo, ccTo, subject, message);
|
3642 |
authUserEmail.add("shivam.gupta@smartdukaan.com");
|
| 3677 |
|
3643 |
|
| 3678 |
}
|
3644 |
String[] emailTo = authUserEmail.toArray(new String[authUserEmail.size()]);
|
| 3679 |
|
3645 |
|
| - |
|
3646 |
String[] ccTo = {"tarun.verma@smartdukaan.com", "kamini.sharma@smartdukaan.com"};
|
| - |
|
3647 |
|
| 3680 |
}
|
3648 |
String subject = "Dispatched " + (orders.get(0).getRetailerName());
|
| - |
|
3649 |
String message = String.format("Dear Team, \n" + "kindly note the material for the " + orders.get(0).getRetailerName() + "of Rs." + totalAmount + "is dispatched.");
|
| 3681 |
}
|
3650 |
Utils.sendMailWithAttachments(mailSender, emailTo, ccTo, subject, message);
|
| 3682 |
|
3651 |
|
| 3683 |
}
|
- |
|
| 3684 |
|
3652 |
|
| 3685 |
}
|
3653 |
}
|
| 3686 |
|
3654 |
|
| 3687 |
private void settledLoanStatement(LoanReferenceType loanReferneceType, BigDecimal amount, int fofoId, int loanId, String description, LocalDateTime now) {
|
3655 |
private void settledLoanStatement(LoanReferenceType loanReferneceType, BigDecimal amount, int fofoId, int loanId, String description, LocalDateTime now) {
|
| 3688 |
|
3656 |
|
| Line 4221... |
Line 4189... |
| 4221 |
}
|
4189 |
}
|
| 4222 |
|
4190 |
|
| 4223 |
}
|
4191 |
}
|
| 4224 |
|
4192 |
|
| 4225 |
private String getMessageHygieneAlertForPartner(
|
4193 |
private String getMessageHygieneAlertForPartner(
|
| 4226 |
Map<Integer, Map<YearMonth, List<HygieneData>>> partnerYearMonthData, Map<Integer, Map<LocalDate, List<HygieneData>>> partnerDateWiseData) {
|
4194 |
Map<Integer, Map<YearMonth, List<HygieneData>>> partnerYearMonthData, Map<Integer, Map<LocalDate, List<HygieneData>>> partnerDateWiseData) {
|
| 4227 |
|
4195 |
|
| 4228 |
Map<Integer, CustomRetailer> customeRetailerMap = retailerService.getAllFofoRetailers();
|
4196 |
Map<Integer, CustomRetailer> customeRetailerMap = retailerService.getAllFofoRetailers();
|
| 4229 |
|
4197 |
|
| 4230 |
LocalDateTime startDate = LocalDate.now().withDayOfMonth(1).atStartOfDay();
|
4198 |
LocalDateTime startDate = LocalDate.now().withDayOfMonth(1).atStartOfDay();
|
| 4231 |
LocalDateTime endDate = LocalDateTime.now();
|
4199 |
LocalDateTime endDate = LocalDateTime.now();
|