Subversion Repositories SmartDukaan

Rev

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

Rev 32426 Rev 32439
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();