Subversion Repositories SmartDukaan

Rev

Rev 35956 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35956 Rev 36687
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;
3
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
4
import com.spice.profitmandi.common.model.ProfitMandiConstants;
4
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
5
import com.spice.profitmandi.common.model.TagListingRequest;
5
import com.spice.profitmandi.common.util.FileUtil;
6
import com.spice.profitmandi.common.util.FileUtil;
6
import com.spice.profitmandi.common.util.Utils;
7
import com.spice.profitmandi.common.util.Utils;
7
import com.spice.profitmandi.dao.entity.auth.AuthUser;
8
import com.spice.profitmandi.dao.entity.auth.AuthUser;
-
 
9
import com.spice.profitmandi.dao.entity.catalog.Item;
-
 
10
import com.spice.profitmandi.dao.entity.catalog.TagListing;
8
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
11
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
9
import com.spice.profitmandi.dao.model.WarehouseItemAgeingModel;
12
import com.spice.profitmandi.dao.model.WarehouseItemAgeingModel;
10
import com.spice.profitmandi.dao.model.purchaseSaleRatio.CatalogAgedModel;
13
import com.spice.profitmandi.dao.model.purchaseSaleRatio.CatalogAgedModel;
11
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
14
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
-
 
15
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
-
 
16
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
12
import com.spice.profitmandi.dao.repository.cs.CsService;
17
import com.spice.profitmandi.dao.repository.cs.CsService;
13
import com.spice.profitmandi.dao.repository.warehouse.WarehouseSupplierInvoiceRepository;
18
import com.spice.profitmandi.dao.repository.warehouse.WarehouseSupplierInvoiceRepository;
14
import com.spice.profitmandi.service.AuthService;
19
import com.spice.profitmandi.service.AuthService;
15
import com.spice.profitmandi.service.mail.MailOutboxService;
20
import com.spice.profitmandi.service.mail.MailOutboxService;
16
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.LogManager;
Line 24... Line 29...
24
import javax.mail.MessagingException;
29
import javax.mail.MessagingException;
25
import javax.mail.internet.InternetAddress;
30
import javax.mail.internet.InternetAddress;
26
import javax.mail.internet.MimeMessage;
31
import javax.mail.internet.MimeMessage;
27
import java.io.UnsupportedEncodingException;
32
import java.io.UnsupportedEncodingException;
28
import java.time.LocalDateTime;
33
import java.time.LocalDateTime;
29
import java.util.ArrayList;
-
 
30
import java.util.Arrays;
-
 
31
import java.util.Comparator;
-
 
32
import java.util.List;
34
import java.util.*;
33
import java.util.stream.Collectors;
35
import java.util.stream.Collectors;
34
 
36
 
35
@Service
37
@Service
36
public class PurSaleServiceImpl implements PurSaleService {
38
public class PurSaleServiceImpl implements PurSaleService {
37
 
39
 
Line 53... Line 55...
53
    AuthRepository authRepository;
55
    AuthRepository authRepository;
54
 
56
 
55
    @Autowired
57
    @Autowired
56
    CsService csService;
58
    CsService csService;
57
 
59
 
-
 
60
    @Autowired
-
 
61
    TagListingRepository tagListingRepository;
-
 
62
 
-
 
63
    @Autowired
-
 
64
    ItemRepository itemRepository;
-
 
65
 
58
    @Override
66
    @Override
59
    public void moreThen10DaysEgedStockReport() throws MessagingException, UnsupportedEncodingException, ProfitMandiBusinessException {
67
    public void moreThen10DaysEgedStockReport() throws MessagingException, UnsupportedEncodingException, ProfitMandiBusinessException {
60
        LocalDateTime startDate = LocalDateTime.now().minusMonths(3);
68
        LocalDateTime startDate = LocalDateTime.now().minusMonths(24);
61
        LocalDateTime endDate = LocalDateTime.now();
69
        LocalDateTime endDate = LocalDateTime.now();
-
 
70
 
-
 
71
        int ageDays = 15;
62
        List<CatalogAgedModel> moreThen10DaysAgedCatalogModels = getCatalogModelsOlderThan10Days(startDate, endDate);
72
        List<CatalogAgedModel> moreThen10DaysAgedCatalogModels = getCatalogModelsOlderThanAgeDays(startDate, endDate, ageDays);
-
 
73
 
-
 
74
        List<Integer> itemIds = moreThen10DaysAgedCatalogModels.stream().map(x->x.getItemId()).collect(Collectors.toList());
-
 
75
        Set<Integer> itemIdSet = new HashSet<>(itemIds);
-
 
76
        Map<Integer, Float> itemDpMap = tagListingRepository.selectByItemIds(itemIdSet).entrySet().stream()
-
 
77
                .collect(Collectors.toMap(x->x.getKey(), x->x.getValue().getSellingPrice()));
-
 
78
        Map<Integer, Integer> itemCatalogIdMap = itemRepository.selectByIds(new HashSet<>(itemIdSet)).stream().collect(Collectors.toMap(x->x.getId(), x->x.getCatalogItemId()));
-
 
79
 
63
        StringBuilder sb = new StringBuilder();
80
        StringBuilder sb = new StringBuilder();
64
        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'>");
81
        sb.append("<html><body><b>Aging Stock List: Items that are " + ageDays + " days old or older (Date Range - " + startDate.toLocalDate() + " To " + endDate.toLocalDate() + " )</b>" + "<br/><table style='border:1px solid black ;padding: 5px ;bgColor=green'>");
65
        sb.append("<tbody>" +
82
        sb.append("<tbody>" +
66
                "<tr>" +
83
                "<tr>" +
67
                "<th style='border:1px solid black;padding: 5px'>No.</th>" +
84
                "<th style='border:1px solid black;padding: 5px'>No.</th>" +
68
                "<th style='border:1px solid black;padding: 5px'>Item Id.</th>" +
85
                "<th style='border:1px solid black;padding: 5px'>Item Id</th>" +
-
 
86
                "<th style='border:1px solid black;padding: 5px'>Catalog Id</th>" +
69
                "<th style='border:1px solid black;padding: 5px'>Brand</th>" +
87
                "<th style='border:1px solid black;padding: 5px'>Brand</th>" +
70
                "<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
88
                "<th style='border:1px solid black;padding: 5px'>Vendor</th>" +
-
 
89
                "<th style='border:1px solid black;padding: 5px'>DP</th>" +
71
                "<th style='border:1px solid black;padding: 5px'>Category</th>" +
90
                "<th style='border:1px solid black;padding: 5px'>Category</th>" +
72
                "<th style='border:1px solid black;padding: 5px'>Model</th>" +
91
                "<th style='border:1px solid black;padding: 5px'>Model</th>" +
73
                "<th style='border:1px solid black;padding: 5px'>Model Name</th>" +
92
                "<th style='border:1px solid black;padding: 5px'>Model Name</th>" +
74
                "<th style='border:1px solid black;padding: 5px'>Colour</th>" +
93
                "<th style='border:1px solid black;padding: 5px'>Colour</th>" +
75
                "<th style='border:1px solid black;padding: 5px'>Purchase</th>" +
94
                "<th style='border:1px solid black;padding: 5px'>Purchase</th>" +
Line 91... Line 110...
91
        int i = 1;
110
        int i = 1;
92
        for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
111
        for (CatalogAgedModel catalogAgedModel : moreThen10DaysAgedCatalogModels) {
93
            sb.append("<tr>");
112
            sb.append("<tr>");
94
            sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
113
            sb.append("<td style='border:1px solid black;padding: 5px'>" + (i++) + "</td>");
95
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getItemId() + "</td>");
114
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getItemId() + "</td>");
-
 
115
            sb.append("<td style='border:1px solid black;padding: 5px'>" + itemCatalogIdMap.get(catalogAgedModel.getItemId()) + "</td>");
96
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
116
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getBrand() + "</td>");
97
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
117
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getSupplier() + "</td>");
-
 
118
            sb.append("<td style='border:1px solid black;padding: 5px'>" + itemDpMap.get(catalogAgedModel.getItemId()) + "</td>");
98
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
119
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getStatus() + "</td>");
99
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
120
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModelName() + "</td>");
100
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModel() + "</td>");
121
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getModel() + "</td>");
101
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getColor().replaceFirst("f_", "") + "</td>");
122
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getColor().replaceFirst("f_", "") + "</td>");
102
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getPurchase() + "</td>");
123
            sb.append("<td style='border:1px solid black;padding: 5px'>" + catalogAgedModel.getPurchase() + "</td>");
Line 184... Line 205...
184
            throw new RuntimeException(e);
205
            throw new RuntimeException(e);
185
        }
206
        }
186
    }
207
    }
187
 
208
 
188
    @Override
209
    @Override
189
    public List<CatalogAgedModel> getCatalogModelsOlderThan10Days(LocalDateTime startDate, LocalDateTime endDate) {
210
    public List<CatalogAgedModel> getCatalogModelsOlderThanAgeDays(LocalDateTime startDate, LocalDateTime endDate, int ageDays) {
190
        // Using selectCatalogAgeWithItemId to get itemId for email report
211
        // Using selectCatalogAgeWithItemId to get itemId for email report
191
        List<CatalogAgedModel> fiterCatalogAgedModels =
212
        List<CatalogAgedModel> fiterCatalogAgedModels =
192
                warehouseSupplierInvoiceRepository.selectCatalogAgeWithItemId(startDate, endDate, null, 0, null)
213
                warehouseSupplierInvoiceRepository.selectCatalogAgeWithItemId(startDate, endDate, null, 0, null)
193
                        .stream().filter(x -> x.getAge() >= 4 && x.getUnsold() > 0).collect(Collectors.toList());
214
                        .stream().filter(x -> x.getAge() >= ageDays && x.getUnsold() > 0).collect(Collectors.toList());
194
        LOGGER.info("fiterCatalogAgedModels - " + fiterCatalogAgedModels);
215
        LOGGER.info("fiterCatalogAgedModels - " + fiterCatalogAgedModels);
195
        return fiterCatalogAgedModels;
216
        return fiterCatalogAgedModels;
196
    }
217
    }
197
 
218
 
198
 
219