Subversion Repositories SmartDukaan

Rev

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

Rev 34274 Rev 34275
Line 1... Line 1...
1
package com.spice.profitmandi.dao.service;
1
package com.spice.profitmandi.dao.service;
2
 
2
 
-
 
3
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
-
 
4
import com.spice.profitmandi.dao.entity.auth.AuthUser;
3
import com.spice.profitmandi.dao.model.purchaseSaleRatio.CatalogAgedModel;
5
import com.spice.profitmandi.dao.model.purchaseSaleRatio.CatalogAgedModel;
-
 
6
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
4
import com.spice.profitmandi.dao.repository.warehouse.WarehouseSupplierInvoiceRepository;
7
import com.spice.profitmandi.dao.repository.warehouse.WarehouseSupplierInvoiceRepository;
5
import com.spice.profitmandi.dao.service.loiForm.LoiFormServiceImpl;
8
import com.spice.profitmandi.service.AuthService;
6
import org.apache.logging.log4j.LogManager;
9
import org.apache.logging.log4j.LogManager;
7
import org.apache.logging.log4j.Logger;
10
import org.apache.logging.log4j.Logger;
8
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.mail.javamail.JavaMailSender;
12
import org.springframework.mail.javamail.JavaMailSender;
10
import org.springframework.mail.javamail.MimeMessageHelper;
13
import org.springframework.mail.javamail.MimeMessageHelper;
Line 14... Line 17...
14
import javax.mail.MessagingException;
17
import javax.mail.MessagingException;
15
import javax.mail.internet.InternetAddress;
18
import javax.mail.internet.InternetAddress;
16
import javax.mail.internet.MimeMessage;
19
import javax.mail.internet.MimeMessage;
17
import java.io.UnsupportedEncodingException;
20
import java.io.UnsupportedEncodingException;
18
import java.time.LocalDateTime;
21
import java.time.LocalDateTime;
19
import java.util.List;
22
import java.util.*;
20
import java.util.stream.Collectors;
23
import java.util.stream.Collectors;
21
 
24
 
22
@Service
25
@Service
23
@Transactional(rollbackFor = Throwable.class)
26
@Transactional(rollbackFor = Throwable.class)
24
public class PurSaleServiceImpl implements PurSaleService {
27
public class PurSaleServiceImpl implements PurSaleService {
Line 30... Line 33...
30
    WarehouseSupplierInvoiceRepository warehouseSupplierInvoiceRepository;
33
    WarehouseSupplierInvoiceRepository warehouseSupplierInvoiceRepository;
31
 
34
 
32
    @Autowired
35
    @Autowired
33
    JavaMailSender mailSender;
36
    JavaMailSender mailSender;
34
 
37
 
-
 
38
    @Autowired
-
 
39
    AuthService authService;
-
 
40
    @Autowired
-
 
41
    AuthRepository authRepository;
-
 
42
 
35
    @Override
43
    @Override
36
    public void sendPurSaleRatioReportOnMail() throws MessagingException, UnsupportedEncodingException {
44
    public void moreThen10DaysEgedStockReport() throws MessagingException, UnsupportedEncodingException, ProfitMandiBusinessException {
-
 
45
        LocalDateTime startDate = LocalDateTime.now().minusMonths(3);
-
 
46
        LocalDateTime endDate = LocalDateTime.now();
-
 
47
        List<CatalogAgedModel> moreThen10DaysAgedCatalogModels = getCatalogModelsOlderThan10Days(startDate,endDate);
37
        StringBuilder sb = new StringBuilder();
48
        StringBuilder sb = new StringBuilder();
38
        sb.append("<html><body><b>Stock List whose age is 10 or more days (Past 3 months Range)</b>" + "<br/><table style='border:1px solid black ;padding: 5px ;bgColor=green'>");
49
        sb.append("<html><body><b>Aging Stock List: Items that are 10 days old or older (Date Range - "+startDate.toLocalDate()+" To "+endDate.toLocalDate()+" )</b>" + "<br/><table style='border:1px solid black ;padding: 5px ;bgColor=green'>");
39
        sb.append("<tbody>" +
50
        sb.append("<tbody>" +
40
                "<tr>" +
51
                "<tr>" +
41
                "<th style='border:1px solid black;padding: 5px'>No.</th>" +
52
                "<th style='border:1px solid black;padding: 5px'>No.</th>" +
42
                "<th style='border:1px solid black;padding: 5px'>Brand</th>" +
53
                "<th style='border:1px solid black;padding: 5px'>Brand</th>" +
43
                "<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
54
                "<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
Line 47... Line 58...
47
                "<th style='border:1px solid black;padding: 5px'>Sold</th>" +
58
                "<th style='border:1px solid black;padding: 5px'>Sold</th>" +
48
                "<th style='border:1px solid black;padding: 5px'>Unsold</th>" +
59
                "<th style='border:1px solid black;padding: 5px'>Unsold</th>" +
49
                "<th style='border:1px solid black;padding: 5px'>Age</th>" +
60
                "<th style='border:1px solid black;padding: 5px'>Age</th>" +
50
 
61
 
51
                "</tr>");
62
                "</tr>");
52
        List<CatalogAgedModel> moreThen10DaysAgedCatalogModels = getMoreThen10DaysAgedCatalogModels();
-
 
53
 
63
 
54
        int i = 1;
64
        int i = 1;
55
        for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
65
        for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
56
            sb.append("<tr>");
66
            sb.append("<tr>");
57
            sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
67
            sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
58
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
68
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
59
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
69
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
60
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
70
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
61
            if(catalogAgedModel.getBrand().equals("Samsung")){
71
            if (catalogAgedModel.getBrand().equals("Samsung")) {
62
                sb.append("<td style='border:1px solid black;padding: 5px'>" +catalogAgedModel.getModel() + "</td>");
72
                sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModel() + "</td>");
63
            }else{
73
            } else {
64
                sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
74
                sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
65
            }
75
            }
66
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getPurchase() + "</td>");
76
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getPurchase() + "</td>");
67
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSold() + "</td>");
77
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSold() + "</td>");
68
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getUnsold() + "</td>");
78
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getUnsold() + "</td>");
69
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getAge() + "</td>");
79
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getAge() + "</td>");
70
            sb.append("</tr>");
80
            sb.append("</tr>");
71
 
81
 
72
        }
82
        }
73
        String subject = "Age more than 10 days Stock Report";
83
        String subject = "Aging Stock Report: 10 Days or Older";
74
        String messageText = sb.toString();
84
        String messageText = sb.toString();
75
        MimeMessage message = mailSender.createMimeMessage();
85
        MimeMessage message = mailSender.createMimeMessage();
76
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
86
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
-
 
87
 
77
        String[] emailTo = {
88
        List<String> allEmails = new ArrayList<>(Arrays.asList(
78
                "sm@smartdukaan.com",
89
                "sm@smartdukaan.com",
-
 
90
                "manish.gupta1@smartdukaan.com",
79
                "tarun.verma@smartdukaan.com",
91
                "tarun.verma@smartdukaan.com",
-
 
92
                "chiranjib.sarkar@smartdukaan.com",
-
 
93
                "niranjan.kala@smartdukaan.com",
80
                "mohit.gulati@smartdukaan.com",
94
                "mohit.gulati@smartdukaan.com"
81
                "tejus.lohani@smartdukaan.com"
95
//                "tejus.lohani@smartdukaan.com"
-
 
96
                ));
-
 
97
 
-
 
98
        // niranjan kala(authId -54) Team Emails,
-
 
99
        List<Integer> allReportees = authService.getAllReportees(54);
-
 
100
        List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(allReportees);
-
 
101
        List<String> categotyTeamEmails = authUsers.stream().map(x -> x.getEmailId()).collect(Collectors.toList());
82
 
102
 
83
        };
103
        allEmails.addAll(categotyTeamEmails);
-
 
104
        String[] emailTo = allEmails.toArray(new String[allEmails.size()]);
84
        helper.setSubject(subject);
105
        helper.setSubject(subject);
85
        helper.setText(messageText, true);
106
        helper.setText(messageText, true);
86
        helper.setTo(emailTo);
107
        helper.setTo(emailTo);
87
        InternetAddress senderAddress = new InternetAddress("noreply@smartdukaan.com", "Smartdukaan Alerts");
108
        InternetAddress senderAddress = new InternetAddress("noreply@smartdukaan.com", "Smart Dukaan");
88
        helper.setFrom(senderAddress);
109
        helper.setFrom(senderAddress);
89
        mailSender.send(message);
110
        mailSender.send(message);
90
 
111
 
91
    }
112
    }
92
 
113
 
93
    @Override
114
    @Override
94
    public List<CatalogAgedModel> getMoreThen10DaysAgedCatalogModels() {
115
    public List<CatalogAgedModel> getCatalogModelsOlderThan10Days(LocalDateTime startDate, LocalDateTime endDate) {
95
        List<CatalogAgedModel> fiterCatalogAgedModels =
116
        List<CatalogAgedModel> fiterCatalogAgedModels =
96
                warehouseSupplierInvoiceRepository.selectCatalogAge(LocalDateTime.now().minusMonths(3), LocalDateTime.now(), null, 0, null)
117
                warehouseSupplierInvoiceRepository.selectCatalogAge(startDate, endDate, null, 0, null)
97
                        .stream().filter(x -> x.getAge() >= 10 && x.getUnsold() > 0).collect(Collectors.toList());
118
                        .stream().filter(x -> x.getAge() >= 10 && x.getUnsold() > 0).collect(Collectors.toList());
98
        LOGGER.info("fiterCatalogAgedModels - "+fiterCatalogAgedModels);
119
        LOGGER.info("fiterCatalogAgedModels - " + fiterCatalogAgedModels);
99
        return fiterCatalogAgedModels;
120
        return fiterCatalogAgedModels;
100
    }
121
    }
101
//    192.168.0.16:8080
122
//    192.168.0.16:8080
102
}
123
}