| Line 1... |
Line 1... |
| 1 |
package com.spice.profitmandi.service;
|
1 |
package com.spice.profitmandi.service;
|
| 2 |
|
2 |
|
| 3 |
import java.text.DecimalFormat;
|
- |
|
| 4 |
import java.text.NumberFormat;
|
- |
|
| 5 |
import java.time.Duration;
|
- |
|
| 6 |
import java.time.LocalDate;
|
- |
|
| 7 |
import java.time.LocalDateTime;
|
- |
|
| 8 |
import java.time.LocalTime;
|
- |
|
| 9 |
import java.util.ArrayList;
|
- |
|
| 10 |
import java.util.Arrays;
|
- |
|
| 11 |
import java.util.HashMap;
|
- |
|
| 12 |
import java.util.HashSet;
|
- |
|
| 13 |
import java.util.List;
|
- |
|
| 14 |
import java.util.Locale;
|
- |
|
| 15 |
import java.util.Map;
|
- |
|
| 16 |
import java.util.Map.Entry;
|
- |
|
| 17 |
import java.util.Set;
|
- |
|
| 18 |
import java.util.stream.Collectors;
|
- |
|
| 19 |
|
- |
|
| 20 |
import javax.mail.internet.InternetAddress;
|
- |
|
| 21 |
import javax.mail.internet.MimeMessage;
|
- |
|
| 22 |
|
- |
|
| 23 |
import org.apache.commons.io.output.ByteArrayOutputStream;
|
- |
|
| 24 |
import org.apache.logging.log4j.LogManager;
|
- |
|
| 25 |
import org.apache.logging.log4j.Logger;
|
- |
|
| 26 |
import org.springframework.beans.factory.annotation.Autowired;
|
- |
|
| 27 |
import org.springframework.core.io.ByteArrayResource;
|
- |
|
| 28 |
import org.springframework.core.io.InputStreamSource;
|
- |
|
| 29 |
import org.springframework.mail.javamail.JavaMailSender;
|
- |
|
| 30 |
import org.springframework.mail.javamail.MimeMessageHelper;
|
- |
|
| 31 |
import org.springframework.stereotype.Component;
|
- |
|
| 32 |
|
- |
|
| 33 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
3 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
| 34 |
import com.spice.profitmandi.common.util.FileUtil;
|
4 |
import com.spice.profitmandi.common.util.FileUtil;
|
| 35 |
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
|
5 |
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
|
| 36 |
import com.spice.profitmandi.dao.entity.fofo.RetailerFilter;
|
6 |
import com.spice.profitmandi.dao.entity.fofo.RetailerFilter;
|
| 37 |
import com.spice.profitmandi.dao.entity.transaction.Loan;
|
7 |
import com.spice.profitmandi.dao.entity.transaction.Loan;
|
| Line 45... |
Line 15... |
| 45 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
|
15 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
|
| 46 |
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
|
16 |
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
|
| 47 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
17 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
| 48 |
import com.spice.profitmandi.service.transaction.SDCreditService;
|
18 |
import com.spice.profitmandi.service.transaction.SDCreditService;
|
| 49 |
import com.spice.profitmandi.service.user.RetailerService;
|
19 |
import com.spice.profitmandi.service.user.RetailerService;
|
| - |
|
20 |
import org.apache.commons.io.output.ByteArrayOutputStream;
|
| - |
|
21 |
import org.apache.logging.log4j.LogManager;
|
| - |
|
22 |
import org.apache.logging.log4j.Logger;
|
| - |
|
23 |
import org.springframework.beans.factory.annotation.Autowired;
|
| - |
|
24 |
import org.springframework.core.io.ByteArrayResource;
|
| - |
|
25 |
import org.springframework.core.io.InputStreamSource;
|
| - |
|
26 |
import org.springframework.mail.javamail.JavaMailSender;
|
| - |
|
27 |
import org.springframework.mail.javamail.MimeMessageHelper;
|
| - |
|
28 |
import org.springframework.stereotype.Component;
|
| - |
|
29 |
|
| - |
|
30 |
import javax.mail.internet.InternetAddress;
|
| - |
|
31 |
import javax.mail.internet.MimeMessage;
|
| - |
|
32 |
import java.text.DecimalFormat;
|
| - |
|
33 |
import java.text.NumberFormat;
|
| - |
|
34 |
import java.time.Duration;
|
| - |
|
35 |
import java.time.LocalDate;
|
| - |
|
36 |
import java.time.LocalDateTime;
|
| - |
|
37 |
import java.time.LocalTime;
|
| - |
|
38 |
import java.util.*;
|
| - |
|
39 |
import java.util.Map.Entry;
|
| - |
|
40 |
import java.util.stream.Collectors;
|
| 50 |
|
41 |
|
| 51 |
@Component
|
42 |
@Component
|
| 52 |
public class PerformanceServiceImpl implements PerformanceService {
|
43 |
public class PerformanceServiceImpl implements PerformanceService {
|
| 53 |
|
44 |
|
| 54 |
|
45 |
|
| Line 220... |
Line 211... |
| 220 |
|
211 |
|
| 221 |
|
212 |
|
| 222 |
for (Entry<Integer, CustomRetailer> customRetailerEntry : customRetailers.entrySet()) {
|
213 |
for (Entry<Integer, CustomRetailer> customRetailerEntry : customRetailers.entrySet()) {
|
| 223 |
int fofoId = customRetailerEntry.getKey();
|
214 |
int fofoId = customRetailerEntry.getKey();
|
| 224 |
RetailerPeformanceFilterModel retailerPeformanceFilterModel = new RetailerPeformanceFilterModel();
|
215 |
RetailerPeformanceFilterModel retailerPeformanceFilterModel = new RetailerPeformanceFilterModel();
|
| - |
|
216 |
retailerPeformanceFilterModel.setActivationType(customRetailerEntry.getValue().getActivationType());
|
| - |
|
217 |
retailerPeformanceFilterModel.setState(customRetailerEntry.getValue().getAddress().getState());
|
| 225 |
if (retailerFilter.isCredit()) {
|
218 |
if (retailerFilter.isCredit()) {
|
| 226 |
|
219 |
|
| 227 |
if (!duedateMap.isEmpty()) {
|
220 |
if (!duedateMap.isEmpty()) {
|
| 228 |
if (duedateMap.containsKey(fofoId)) {
|
221 |
if (duedateMap.containsKey(fofoId)) {
|
| 229 |
retailerPeformanceFilterModel.setCredit("Due");
|
222 |
retailerPeformanceFilterModel.setCredit("Due");
|
| Line 310... |
Line 303... |
| 310 |
LOGGER.info("retailerFilterModel {}", retailerFilterModel);
|
303 |
LOGGER.info("retailerFilterModel {}", retailerFilterModel);
|
| 311 |
for (Entry<String, Set<Integer>> storeGuyEntry : storeGuyMap.entrySet()) {
|
304 |
for (Entry<String, Set<Integer>> storeGuyEntry : storeGuyMap.entrySet()) {
|
| 312 |
|
305 |
|
| 313 |
Set<Integer> fofoIds = storeGuyEntry.getValue();
|
306 |
Set<Integer> fofoIds = storeGuyEntry.getValue();
|
| 314 |
List<List<?>> rows = new ArrayList<>();
|
307 |
List<List<?>> rows = new ArrayList<>();
|
| 315 |
List<String> headers = Arrays.asList("Partner Name", "Code", "Credit- Due/Default", "Billing To Deliver", "Investment- Lower Than " + retailerFilterModel.getInvestmentPct() + "%", "Last Secondary-" + retailerFilterModel.getSecondaryDays() + "days", "Last Tertiary-" + retailerFilterModel.getTertiaryDays() + "days", "MTD Secondary < LMTD-" + retailerFilterModel.getMtdsPct() + "%", "MTD Tertiary < LMTD-" + retailerFilterModel.getMtdtPct() + "%");
|
308 |
List<String> headers = Arrays.asList("Partner Name", "Code", "ActivationType", "State", "Credit- Due/Default", "Billing To Deliver", "Investment- Lower Than " + retailerFilterModel.getInvestmentPct() + "%", "Last Secondary-" + retailerFilterModel.getSecondaryDays() + "days", "Last Tertiary-" + retailerFilterModel.getTertiaryDays() + "days", "MTD Secondary < LMTD-" + retailerFilterModel.getMtdsPct() + "%", "MTD Tertiary < LMTD-" + retailerFilterModel.getMtdtPct() + "%");
|
| 316 |
|
309 |
|
| 317 |
|
310 |
|
| 318 |
LOGGER.info("headers {}", headers);
|
311 |
LOGGER.info("headers {}", headers);
|
| 319 |
|
312 |
|
| 320 |
for (Integer fofoId : fofoIds) {
|
313 |
for (Integer fofoId : fofoIds) {
|
| 321 |
RetailerPeformanceFilterModel retailerPerformanceFilterModel = partnersPerformanceMap.get(fofoId);
|
314 |
RetailerPeformanceFilterModel retailerPerformanceFilterModel = partnersPerformanceMap.get(fofoId);
|
| 322 |
|
315 |
|
| 323 |
LOGGER.info("retailerPerformanceFilterModel {}", retailerPerformanceFilterModel);
|
316 |
LOGGER.info("retailerPerformanceFilterModel {}", retailerPerformanceFilterModel);
|
| 324 |
|
317 |
|
| 325 |
if (retailerPerformanceFilterModel != null) {
|
318 |
if (retailerPerformanceFilterModel != null) {
|
| 326 |
rows.add(Arrays.asList(customRetailers.get(fofoId).getBusinessName(), customRetailers.get(fofoId).getCode(), retailerPerformanceFilterModel.getCredit(), retailerPerformanceFilterModel.getBilling(), retailerPerformanceFilterModel.getInvestment(), retailerPerformanceFilterModel.getSecondaryDays(), retailerPerformanceFilterModel.getTertiaryDays(), retailerPerformanceFilterModel.getMtds(), retailerPerformanceFilterModel.getMtdt()));
|
319 |
rows.add(Arrays.asList(customRetailers.get(fofoId).getBusinessName(), customRetailers.get(fofoId).getCode(), retailerPerformanceFilterModel.getActivationType(), retailerPerformanceFilterModel.getState(), retailerPerformanceFilterModel.getCredit(), retailerPerformanceFilterModel.getBilling(), retailerPerformanceFilterModel.getInvestment(), retailerPerformanceFilterModel.getSecondaryDays(), retailerPerformanceFilterModel.getTertiaryDays(), retailerPerformanceFilterModel.getMtds(), retailerPerformanceFilterModel.getMtdt()));
|
| 327 |
}
|
320 |
}
|
| 328 |
|
321 |
|
| 329 |
}
|
322 |
}
|
| 330 |
if (!rows.isEmpty()) {
|
323 |
if (!rows.isEmpty()) {
|
| 331 |
ByteArrayOutputStream baos = FileUtil.getCSVByteStream(headers, rows);
|
324 |
ByteArrayOutputStream baos = FileUtil.getCSVByteStream(headers, rows);
|