Subversion Repositories SmartDukaan

Rev

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

Rev 35110 Rev 35111
Line 3938... Line 3938...
3938
        sb.append("</tbody></table></body></html>");
3938
        sb.append("</tbody></table></body></html>");
3939
 
3939
 
3940
        return sb.toString();
3940
        return sb.toString();
3941
    }
3941
    }
3942
 
3942
 
3943
    private String getMessageForDueDateCross(List<Loan> loans) throws ProfitMandiBusinessException {
3943
    private String getMessageForDueDateCross(List<Loan> dueDateCrossLoans) throws ProfitMandiBusinessException {
3944
        Map<Integer, com.spice.profitmandi.dao.model.FofoReportingModel> fofoReportingModelMap = csService.getPartnerIdSalesHeaders();
3944
        Map<Integer, com.spice.profitmandi.dao.model.FofoReportingModel> fofoReportingModelMap = csService.getPartnerIdSalesHeaders();
3945
        Map<Integer, FofoRBMReportingModel> fofoRbmReportingModelMap = csService.getPartnerIdRBMHeaders();
3945
        Map<Integer, FofoRBMReportingModel> fofoRbmReportingModelMap = csService.getPartnerIdRBMHeaders();
3946
        List<AST> asts = astRepository.selectAll();
3946
        List<AST> asts = astRepository.selectAll();
3947
        Map<Integer, AST> astMap = asts.stream()
3947
        Map<Integer, AST> astMap = asts.stream()
3948
                .collect(Collectors.toMap(AST::getId, ast -> ast));
3948
                .collect(Collectors.toMap(AST::getId, ast -> ast));
Line 3963... Line 3963...
3963
                "<th style='border:1px solid black;padding: 5px'>Sales L1</th>\n" +
3963
                "<th style='border:1px solid black;padding: 5px'>Sales L1</th>\n" +
3964
                "<th style='border:1px solid black;padding: 5px'>Sales L2</th>\n" +
3964
                "<th style='border:1px solid black;padding: 5px'>Sales L2</th>\n" +
3965
                "<th style='border:1px solid black;padding: 5px'>Limit Assigned</th>\n" +
3965
                "<th style='border:1px solid black;padding: 5px'>Limit Assigned</th>\n" +
3966
                "</tr>");
3966
                "</tr>");
3967
 
3967
 
3968
        for (Loan entry : loans) {
3968
        for (Loan entry : dueDateCrossLoans) {
-
 
3969
            DecimalFormat df = new DecimalFormat("#.##");
3969
 
3970
 
3970
            List<LoanStatement> loanStatements = loanStatementRepository.selectByLoanId(entry.getId());
3971
            List<LoanStatement> loanStatements = loanStatementRepository.selectByLoanId(entry.getId());
3971
 
3972
 
3972
            double amount = loanStatements.stream().map(x -> x.getAmount()).collect(Collectors.summingDouble(x -> x.doubleValue()));
3973
            double amount = loanStatements.stream().map(x -> x.getAmount()).collect(Collectors.summingDouble(x -> x.doubleValue()));
3973
 
3974
 
Line 3988... Line 3989...
3988
            sb.append("<td style='border:1px solid black;padding: 5px'>" + new DecimalFormat("#.##").format(Math.abs(amount)) + "</td>");
3989
            sb.append("<td style='border:1px solid black;padding: 5px'>" + new DecimalFormat("#.##").format(Math.abs(amount)) + "</td>");
3989
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoRbmReportingModelMap.get(entry.getFofoId()).getL1Manager() + "</td>");
3990
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoRbmReportingModelMap.get(entry.getFofoId()).getL1Manager() + "</td>");
3990
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoRbmReportingModelMap.get(entry.getFofoId()).getL2Manager() + "</td>");
3991
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoRbmReportingModelMap.get(entry.getFofoId()).getL2Manager() + "</td>");
3991
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoReportingModelMap.get(entry.getFofoId()).getTerritoryManager() + "</td>");
3992
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoReportingModelMap.get(entry.getFofoId()).getTerritoryManager() + "</td>");
3992
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoReportingModelMap.get(entry.getFofoId()).getRegionalManager() + "</td>");
3993
            sb.append("<td style='border:1px solid black;padding: 5px'>" + fofoReportingModelMap.get(entry.getFofoId()).getRegionalManager() + "</td>");
3993
            sb.append("<td style='border:1px solid black;padding: 5px'>" + sdCreditRequirement.getLimit() + "</td>");
3994
            sb.append("<td style='border:1px solid black;padding: 5px'>" + df.format(sdCreditRequirement.getLimit())  + "</td>");
3994
            sb.append("</tr>");
3995
            sb.append("</tr>");
3995
        }
3996
        }
3996
 
3997
 
3997
        sb.append("</tbody></table></body></html>");
3998
        sb.append("</tbody></table></body></html>");
3998
 
3999
 
3999
        return sb.toString();
4000
        return sb.toString();
4000
    }
4001
    }
4001
 
4002
 
4002
    public void notifyLoanDueDateCross() throws Exception {
4003
    public void notifyLoanDueDateCross() throws Exception {
4003
 
4004
 
4004
        List<Loan> dueDateCrossLoans = sdCreditService.getAllActiveLoan();
4005
        List<Loan> dueDateCrossLoans = sdCreditService.getDueDateCrossLoan();
-
 
4006
        List<Loan> allActiveLoans = sdCreditService.getAllActiveLoan();
4005
        if (!dueDateCrossLoans.isEmpty()) {
4007
        if (!dueDateCrossLoans.isEmpty()) {
4006
            this.sendDueDateCrossLoanAlert(dueDateCrossLoans);
4008
            this.sendDueDateCrossLoanAlert(dueDateCrossLoans,allActiveLoans);
4007
        }
4009
        }
4008
 
4010
 
4009
    }
4011
    }
4010
 
4012
 
4011
    private void sendDueDateCrossLoanAlert(List<Loan> dueDateCrossLoans) throws Exception {
4013
    private void sendDueDateCrossLoanAlert(List<Loan> dueDateCrossLoans,List<Loan> allActiveLoans) throws Exception {
4012
        List<Integer> categoryIds = Arrays.asList(ProfitMandiConstants.TICKET_CATEGORY_CATEGORY, ProfitMandiConstants.TICKET_CATEGORY_RBM, ProfitMandiConstants.TICKET_CATEGORY_SALES,ProfitMandiConstants.TICKET_CATEGORY_ABM, ProfitMandiConstants.TICKET_CATEGORY_ACCOUNTS, ProfitMandiConstants.TICKET_CATEGORY_BUSINESSINTELLIGENT);
4014
        List<Integer> categoryIds = Arrays.asList(ProfitMandiConstants.TICKET_CATEGORY_CATEGORY, ProfitMandiConstants.TICKET_CATEGORY_RBM, ProfitMandiConstants.TICKET_CATEGORY_SALES,ProfitMandiConstants.TICKET_CATEGORY_ABM, ProfitMandiConstants.TICKET_CATEGORY_ACCOUNTS, ProfitMandiConstants.TICKET_CATEGORY_BUSINESSINTELLIGENT);
4013
 
4015
 
4014
        for (Entry<String, Set<Integer>> storeGuyEntry : csService.getAuthUserPartnerIdMappingByCategoryIds(categoryIds, false).entrySet()) {
4016
        for (Entry<String, Set<Integer>> storeGuyEntry : csService.getAuthUserPartnerIdMappingByCategoryIds(categoryIds, false).entrySet()) {
4015
            List<Loan> filteredRows = new ArrayList<>();
4017
            List<Loan> filteredRows = new ArrayList<>();
4016
            for (Loan loan : dueDateCrossLoans) {
4018
            for (Loan loan : dueDateCrossLoans) {
Line 4018... Line 4020...
4018
                if (storeGuyEntry.getValue().contains(loan.getFofoId())) {
4020
                if (storeGuyEntry.getValue().contains(loan.getFofoId())) {
4019
 
4021
 
4020
                    filteredRows.add(loan);
4022
                    filteredRows.add(loan);
4021
                }
4023
                }
4022
            }
4024
            }
-
 
4025
 
-
 
4026
            List<Loan> filteredRowsAllLoans = new ArrayList<>();
-
 
4027
            for (Loan loan : allActiveLoans) {
-
 
4028
 
-
 
4029
                if (storeGuyEntry.getValue().contains(loan.getFofoId())) {
-
 
4030
 
-
 
4031
                    filteredRowsAllLoans.add(loan);
-
 
4032
                }
-
 
4033
            }
-
 
4034
 
-
 
4035
            org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = null;
-
 
4036
 
-
 
4037
            if (!filteredRowsAllLoans.isEmpty()) {
-
 
4038
                Map<Integer, com.spice.profitmandi.dao.model.FofoReportingModel> fofoReportingModelMap = csService.getPartnerIdSalesHeaders();
-
 
4039
                Map<Integer, FofoRBMReportingModel> fofoRbmReportingModelMap = csService.getPartnerIdRBMHeaders();
-
 
4040
                List<AST> asts = astRepository.selectAll();
-
 
4041
                Map<Integer, AST> astMap = asts.stream()
-
 
4042
                        .collect(Collectors.toMap(AST::getId, ast -> ast));
-
 
4043
                try {
-
 
4044
                    List<String> headers = Arrays.asList(
-
 
4045
                            "PartnerName", "State Name", "Area", "Territory",
-
 
4046
                            "Due Date", "Days", "Pending Amount",
-
 
4047
                            "RBM L2", "RBM L1", "Sales L1", "Sales L2", "Limit Assigned"
-
 
4048
                    );
-
 
4049
 
-
 
4050
                    List<List<?>> rows = new ArrayList<>();
-
 
4051
 
-
 
4052
                    for (Loan entry : allActiveLoans) {
-
 
4053
 
-
 
4054
                        List<LoanStatement> loanStatements = loanStatementRepository.selectByLoanId(entry.getId());
-
 
4055
                        double amount = loanStatements.stream().map(x -> x.getAmount()).collect(Collectors.summingDouble(x -> x.doubleValue()));
-
 
4056
 
-
 
4057
                        long noOfdaysBetween = ChronoUnit.DAYS.between(entry.getDueDate().toLocalDate(), LocalDateTime.now());
-
 
4058
 
-
 
4059
                        CustomRetailer customRetailer = retailerService.getFofoRetailer(entry.getFofoId());
-
 
4060
                        SDCreditRequirement sdCreditRequirement = sdCreditRequirementRepository.selectByFofoId(customRetailer.getPartnerId());
-
 
4061
                        DecimalFormat df = new DecimalFormat("#.##");
-
 
4062
                        List<String> row = Arrays.asList(
-
 
4063
                                customRetailer.getBusinessName() + "(" + customRetailer.getCode() + ")",
-
 
4064
                                customRetailer.getAddress().getState(),
-
 
4065
                                astMap.get(customRetailer.getAstId()).getArea(),
-
 
4066
                                astMap.get(customRetailer.getAstId()).getTerritory(),
-
 
4067
                                entry.getDueDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")),
-
 
4068
                                String.valueOf(noOfdaysBetween),
-
 
4069
                                new DecimalFormat("#.##").format(Math.abs(amount)),
-
 
4070
                                fofoRbmReportingModelMap.get(entry.getFofoId()).getL1Manager(),
-
 
4071
                                fofoRbmReportingModelMap.get(entry.getFofoId()).getL2Manager(),
-
 
4072
                                fofoReportingModelMap.get(entry.getFofoId()).getTerritoryManager(),
-
 
4073
                                fofoReportingModelMap.get(entry.getFofoId()).getRegionalManager(),
-
 
4074
                                df.format(sdCreditRequirement.getLimit())
-
 
4075
                        );
-
 
4076
 
-
 
4077
                        rows.add(row);
-
 
4078
                    }
-
 
4079
 
-
 
4080
                     byteArrayOutputStream = FileUtil.getCSVByteStream(headers, rows);
-
 
4081
 
-
 
4082
 
-
 
4083
                } catch (Exception e) {
-
 
4084
                    throw new RuntimeException(e);
-
 
4085
                }
-
 
4086
            }
-
 
4087
 
-
 
4088
            Utils.Attachment attachment1 = new Utils.Attachment("partnner-credit.csv", new ByteArrayResource(byteArrayOutputStream.toByteArray()));
-
 
4089
 
-
 
4090
 
4023
            if (!filteredRows.isEmpty()) {
4091
            if (!filteredRows.isEmpty()) {
4024
                String messageText = this.getMessageForDueDateCross(filteredRows);
4092
                String messageText = this.getMessageForDueDateCross(filteredRows);
4025
                String[] email = new String[]{storeGuyEntry.getKey()};
4093
                String[] email = new String[]{storeGuyEntry.getKey()};
4026
 
4094
 
-
 
4095
                Utils.sendMailWithAttachments(googleMailSender, email, null, null, "Partner Credit Report", messageText, true, attachment1);
-
 
4096
 
4027
                this.sendMailOfHtmlFormat(googleMailSender, email, messageText, null, "Due Date Cross");
4097
//                this.sendMailOfHtmlFormat(googleMailSender, email, messageText, null, "Due Date Cross");
4028
 
4098
 
4029
            }
4099
            }
4030
 
4100
 
4031
        }
4101
        }
-
 
4102
 
4032
        String messageText = this.getMessageForDueDateCross(dueDateCrossLoans);
4103
//        String messageText = this.getMessageForDueDateCross(dueDateCrossLoans);
4033
        this.sendMailOfHtmlFormat(googleMailSender, new String[]{"puneet.wahi@smartdukaan.com", "rahul.latwal@smartdukaan.com", "sdtech@smartdukaan.com"}, messageText, null, "Due Date Cross");
4104
//        this.sendMailOfHtmlFormat(googleMailSender, new String[]{"puneet.wahi@smartdukaan.com", "rahul.latwal@smartdukaan.com", "sdtech@smartdukaan.com"}, messageText, null, "Due Date Cross");
4034
 
4105
 
4035
 
4106
 
4036
        if (!dueDateCrossLoans.isEmpty()) {
4107
        if (!dueDateCrossLoans.isEmpty()) {
4037
            for (Loan loan : dueDateCrossLoans) {
4108
            for (Loan loan : dueDateCrossLoans) {
4038
 
4109