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