| Line 17... |
Line 17... |
| 17 |
import org.springframework.beans.factory.annotation.Autowired;
|
17 |
import org.springframework.beans.factory.annotation.Autowired;
|
| 18 |
import org.springframework.core.io.ByteArrayResource;
|
18 |
import org.springframework.core.io.ByteArrayResource;
|
| 19 |
import org.springframework.mail.javamail.JavaMailSender;
|
19 |
import org.springframework.mail.javamail.JavaMailSender;
|
| 20 |
import org.springframework.mail.javamail.MimeMessageHelper;
|
20 |
import org.springframework.mail.javamail.MimeMessageHelper;
|
| 21 |
import org.springframework.stereotype.Service;
|
21 |
import org.springframework.stereotype.Service;
|
| 22 |
import org.springframework.transaction.annotation.Transactional;
|
- |
|
| 23 |
|
22 |
|
| 24 |
import javax.mail.MessagingException;
|
23 |
import javax.mail.MessagingException;
|
| 25 |
import javax.mail.internet.InternetAddress;
|
24 |
import javax.mail.internet.InternetAddress;
|
| 26 |
import javax.mail.internet.MimeMessage;
|
25 |
import javax.mail.internet.MimeMessage;
|
| 27 |
import java.io.UnsupportedEncodingException;
|
26 |
import java.io.UnsupportedEncodingException;
|
| Line 60... |
Line 59... |
| 60 |
StringBuilder sb = new StringBuilder();
|
59 |
StringBuilder sb = new StringBuilder();
|
| 61 |
sb.append("<html><body><b>Aging Stock List: Items that are 4 days old or older (Date Range - " + startDate.toLocalDate() + " To " + endDate.toLocalDate() + " )</b>" + "<br/><table style='border:1px solid black ;padding: 5px ;bgColor=green'>");
|
60 |
sb.append("<html><body><b>Aging Stock List: Items that are 4 days old or older (Date Range - " + startDate.toLocalDate() + " To " + endDate.toLocalDate() + " )</b>" + "<br/><table style='border:1px solid black ;padding: 5px ;bgColor=green'>");
|
| 62 |
sb.append("<tbody>" +
|
61 |
sb.append("<tbody>" +
|
| 63 |
"<tr>" +
|
62 |
"<tr>" +
|
| 64 |
"<th style='border:1px solid black;padding: 5px'>No.</th>" +
|
63 |
"<th style='border:1px solid black;padding: 5px'>No.</th>" +
|
| - |
|
64 |
"<th style='border:1px solid black;padding: 5px'>Item Id.</th>" +
|
| 65 |
"<th style='border:1px solid black;padding: 5px'>Brand</th>" +
|
65 |
"<th style='border:1px solid black;padding: 5px'>Brand</th>" +
|
| 66 |
"<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
|
66 |
"<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
|
| 67 |
"<th style='border:1px solid black;padding: 5px'>Category</th>" +
|
67 |
"<th style='border:1px solid black;padding: 5px'>Category</th>" +
|
| 68 |
"<th style='border:1px solid black;padding: 5px'>Model</th>" +
|
68 |
"<th style='border:1px solid black;padding: 5px'>Model</th>" +
|
| 69 |
"<th style='border:1px solid black;padding: 5px'>Model Name</th>" +
|
69 |
"<th style='border:1px solid black;padding: 5px'>Model Name</th>" +
|
| Line 75... |
Line 75... |
| 75 |
|
75 |
|
| 76 |
"</tr>");
|
76 |
"</tr>");
|
| 77 |
|
77 |
|
| 78 |
|
78 |
|
| 79 |
moreThen10DaysAgedCatalogModels.sort(Comparator.comparingInt(CatalogAgedModel::getAge).reversed());
|
79 |
moreThen10DaysAgedCatalogModels.sort(Comparator.comparingInt(CatalogAgedModel::getAge).reversed());
|
| - |
|
80 |
|
| - |
|
81 |
// Log first few records to verify itemId is populated
|
| - |
|
82 |
LOGGER.info("moreThen10DaysEgedStockReport - Total records: {}", moreThen10DaysAgedCatalogModels.size());
|
| - |
|
83 |
moreThen10DaysAgedCatalogModels.stream().limit(5).forEach(model ->
|
| - |
|
84 |
LOGGER.info("ItemId: {}, Brand: {}, Model: {}", model.getItemId(), model.getBrand(), model.getModel())
|
| - |
|
85 |
);
|
| - |
|
86 |
|
| 80 |
int i = 1;
|
87 |
int i = 1;
|
| 81 |
for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
|
88 |
for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
|
| 82 |
sb.append("<tr>");
|
89 |
sb.append("<tr>");
|
| 83 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
|
90 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
|
| - |
|
91 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getItemId() + "</td>");
|
| 84 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
|
92 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
|
| 85 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
|
93 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
|
| 86 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
|
94 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
|
| 87 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
|
95 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
|
| 88 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModel() + "</td>");
|
96 |
sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModel() + "</td>");
|
| Line 173... |
Line 181... |
| 173 |
}
|
181 |
}
|
| 174 |
}
|
182 |
}
|
| 175 |
|
183 |
|
| 176 |
@Override
|
184 |
@Override
|
| 177 |
public List<CatalogAgedModel> getCatalogModelsOlderThan10Days(LocalDateTime startDate, LocalDateTime endDate) {
|
185 |
public List<CatalogAgedModel> getCatalogModelsOlderThan10Days(LocalDateTime startDate, LocalDateTime endDate) {
|
| - |
|
186 |
// Using selectCatalogAgeWithItemId to get itemId for email report
|
| 178 |
List<CatalogAgedModel> fiterCatalogAgedModels =
|
187 |
List<CatalogAgedModel> fiterCatalogAgedModels =
|
| 179 |
warehouseSupplierInvoiceRepository.selectCatalogAge(startDate, endDate, null, 0, null)
|
188 |
warehouseSupplierInvoiceRepository.selectCatalogAgeWithItemId(startDate, endDate, null, 0, null)
|
| 180 |
.stream().filter(x -> x.getAge() >= 4 && x.getUnsold() > 0).collect(Collectors.toList());
|
189 |
.stream().filter(x -> x.getAge() >= 4 && x.getUnsold() > 0).collect(Collectors.toList());
|
| 181 |
LOGGER.info("fiterCatalogAgedModels - " + fiterCatalogAgedModels);
|
190 |
LOGGER.info("fiterCatalogAgedModels - " + fiterCatalogAgedModels);
|
| 182 |
return fiterCatalogAgedModels;
|
191 |
return fiterCatalogAgedModels;
|
| 183 |
}
|
192 |
}
|
| 184 |
|
193 |
|