Subversion Repositories SmartDukaan

Rev

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

Rev 32970 Rev 33183
Line 1... Line 1...
1
package com.spice.profitmandi.web.controller;
1
package com.spice.profitmandi.web.controller;
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.ItemDescriptionModel;
4
import com.spice.profitmandi.common.model.ItemDescriptionModel;
5
import com.spice.profitmandi.common.model.ProfitMandiConstants;
5
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
6
import com.spice.profitmandi.common.util.FileUtil;
-
 
7
import com.spice.profitmandi.common.util.FormattingUtils;
6
import com.spice.profitmandi.dao.entity.auth.AuthUser;
8
import com.spice.profitmandi.dao.entity.auth.AuthUser;
7
import com.spice.profitmandi.dao.entity.catalog.Item;
9
import com.spice.profitmandi.dao.entity.catalog.Item;
8
import com.spice.profitmandi.dao.entity.inventory.Vendor;
10
import com.spice.profitmandi.dao.entity.inventory.Vendor;
9
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricing;
11
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricing;
10
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricingLog;
12
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricingLog;
11
import com.spice.profitmandi.dao.entity.warehouse.Supplier;
13
import com.spice.profitmandi.dao.entity.warehouse.Supplier;
12
import com.spice.profitmandi.dao.enumuration.inventory.VendorCatalogPricingStatus;
14
import com.spice.profitmandi.dao.enumuration.inventory.VendorCatalogPricingStatus;
-
 
15
import com.spice.profitmandi.dao.model.PriceDropReportModel;
13
import com.spice.profitmandi.dao.model.VendorCatalogPricingModel;
16
import com.spice.profitmandi.dao.model.VendorCatalogPricingModel;
14
import com.spice.profitmandi.dao.model.VendorPriceCircularModel;
17
import com.spice.profitmandi.dao.model.VendorPriceCircularModel;
15
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
18
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
16
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
19
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
17
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingLogRepository;
20
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingLogRepository;
18
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingRepository;
21
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingRepository;
19
import com.spice.profitmandi.dao.repository.inventory.VendorRepository;
22
import com.spice.profitmandi.dao.repository.inventory.VendorRepository;
-
 
23
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
20
import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;
24
import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;
-
 
25
import com.spice.profitmandi.service.authentication.RoleManager;
21
import com.spice.profitmandi.service.inventory.VendorCatalogPricingService;
26
import com.spice.profitmandi.service.inventory.VendorCatalogPricingService;
-
 
27
import com.spice.profitmandi.service.order.OrderService;
22
import com.spice.profitmandi.service.warehouse.WarehouseService;
28
import com.spice.profitmandi.service.warehouse.WarehouseService;
23
import com.spice.profitmandi.web.model.LoginDetails;
29
import com.spice.profitmandi.web.model.LoginDetails;
24
import com.spice.profitmandi.web.util.CookiesProcessor;
30
import com.spice.profitmandi.web.util.CookiesProcessor;
25
import com.spice.profitmandi.web.util.MVCResponseSender;
31
import com.spice.profitmandi.web.util.MVCResponseSender;
26
import org.apache.logging.log4j.LogManager;
32
import org.apache.logging.log4j.LogManager;
27
import org.apache.logging.log4j.Logger;
33
import org.apache.logging.log4j.Logger;
28
import org.springframework.beans.factory.annotation.Autowired;
34
import org.springframework.beans.factory.annotation.Autowired;
-
 
35
import org.springframework.http.ResponseEntity;
29
import org.springframework.stereotype.Controller;
36
import org.springframework.stereotype.Controller;
30
import org.springframework.transaction.annotation.Transactional;
37
import org.springframework.transaction.annotation.Transactional;
31
import org.springframework.ui.Model;
38
import org.springframework.ui.Model;
32
import org.springframework.web.bind.annotation.RequestBody;
39
import org.springframework.web.bind.annotation.RequestBody;
33
import org.springframework.web.bind.annotation.RequestMapping;
40
import org.springframework.web.bind.annotation.RequestMapping;
Line 35... Line 42...
35
import org.springframework.web.bind.annotation.RequestParam;
42
import org.springframework.web.bind.annotation.RequestParam;
36
 
43
 
37
import javax.servlet.http.HttpServletRequest;
44
import javax.servlet.http.HttpServletRequest;
38
import java.time.LocalDate;
45
import java.time.LocalDate;
39
import java.time.LocalDateTime;
46
import java.time.LocalDateTime;
-
 
47
import java.time.LocalTime;
40
import java.util.*;
48
import java.util.*;
41
import java.util.stream.Collectors;
49
import java.util.stream.Collectors;
42
 
50
 
43
@Controller
51
@Controller
44
@Transactional(rollbackFor = Throwable.class)
52
@Transactional(rollbackFor = Throwable.class)
Line 50... Line 58...
50
 
58
 
51
    @Autowired
59
    @Autowired
52
    private CookiesProcessor cookiesProcessor;
60
    private CookiesProcessor cookiesProcessor;
53
 
61
 
54
    @Autowired
62
    @Autowired
-
 
63
    private RoleManager roleManager;
-
 
64
 
-
 
65
    @Autowired
55
    private AuthRepository authRepository;
66
    private AuthRepository authRepository;
56
 
67
 
57
    @Autowired
68
    @Autowired
-
 
69
    private OrderRepository orderRepository;
-
 
70
 
-
 
71
    @Autowired
-
 
72
    private OrderService orderService;
-
 
73
 
-
 
74
    @Autowired
58
    private VendorCatalogPricingService vendorCatalogPricingService;
75
    private VendorCatalogPricingService vendorCatalogPricingService;
59
 
76
 
60
    @Autowired
77
    @Autowired
61
    private VendorCatalogPricingLogRepository vendorCatalogPricingLogRepository;
78
    private VendorCatalogPricingLogRepository vendorCatalogPricingLogRepository;
62
 
79
 
Line 205... Line 222...
205
 
222
 
206
    }
223
    }
207
 
224
 
208
 
225
 
209
    @RequestMapping(value = "/getVendorPriceCircular", method = RequestMethod.GET)
226
    @RequestMapping(value = "/getVendorPriceCircular", method = RequestMethod.GET)
210
    public String getVendorPriceCircular(HttpServletRequest request, @RequestParam int vendorId, @RequestParam LocalDate effectedDate, Model model) throws Exception {
227
    public String getVendorPriceCircular(HttpServletRequest request, @RequestParam(defaultValue = "0") int vendorId, @RequestParam LocalDate effectedDate, Model model) throws Exception {
211
 
228
 
212
        List<VendorPriceCircularModel> vendorCatalogPricings = vendorCatalogPricingLogRepository.getVendorPricesOnDate(vendorId, effectedDate);
229
        List<VendorPriceCircularModel> vendorCatalogPricings = vendorCatalogPricingLogRepository.getVendorPricesOnDate(vendorId, effectedDate);
213
 
-
 
-
 
230
        Map<Integer, Supplier> supplierMap = supplierRepository.selectAll().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
214
        if (!vendorCatalogPricings.isEmpty()) {
231
        if (!vendorCatalogPricings.isEmpty()) {
215
            Set<Integer> catalogIds = vendorCatalogPricings.stream().map(x -> x.getCatalogId()).collect(Collectors.toSet());
232
            Set<Integer> catalogIds = vendorCatalogPricings.stream().map(x -> x.getCatalogId()).collect(Collectors.toSet());
216
            Map<Integer, List<Item>> itemMap = itemRepository.selectAllByCatalogIds(catalogIds).stream().collect(Collectors.groupingBy(x -> x.getCatalogItemId()));
233
            Map<Integer, List<Item>> itemMap = itemRepository.selectAllByCatalogIds(catalogIds).stream().collect(Collectors.groupingBy(x -> x.getCatalogItemId()));
217
            model.addAttribute("itemMap", itemMap);
234
            model.addAttribute("itemMap", itemMap);
218
        }
235
        }
219
 
236
 
220
        model.addAttribute("vendorCatalogPricings", vendorCatalogPricings);
237
        model.addAttribute("vendorCatalogPricings", vendorCatalogPricings);
-
 
238
        model.addAttribute("suppliers", supplierMap);
221
        return "vendor-price-circular-view";
239
        return "vendor-price-circular-view";
222
 
240
 
223
    }
241
    }
-
 
242
    @RequestMapping(value = "/downloadPriceCircularReport", method = RequestMethod.GET)
-
 
243
    public ResponseEntity<?> getSelectDownloadPriceCircularReport(HttpServletRequest request,
-
 
244
                                                              @RequestParam(defaultValue = "0") int fofoId,
-
 
245
                                                              @RequestParam(name = "startDate") LocalDate startDate) throws Exception {
-
 
246
 
-
 
247
        List<VendorPriceCircularModel> vendorCatalogPricings = vendorCatalogPricingLogRepository.getVendorPricesOnDate(0, startDate);
-
 
248
        Map<Integer, Supplier> supplierMap = supplierRepository.selectAll().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
249
        Map<Integer, List<Item>> itemMap = new HashMap<>();
-
 
250
        List<List<?>> rows = new ArrayList<>();
-
 
251
        if (!vendorCatalogPricings.isEmpty()) {
-
 
252
            Set<Integer> catalogIds = vendorCatalogPricings.stream().map(x -> x.getCatalogId()).collect(Collectors.toSet());
-
 
253
            itemMap = itemRepository.selectAllByCatalogIds(catalogIds).stream().collect(Collectors.groupingBy(x -> x.getCatalogItemId()));
-
 
254
        }
-
 
255
 
-
 
256
 
-
 
257
        for(VendorPriceCircularModel vcp: vendorCatalogPricings) {
-
 
258
 
-
 
259
            rows.add(Arrays.asList(vcp.getCatalogId(),supplierMap.get(vcp.getVendorId()).getName(),itemMap.get(vcp.getCatalogId()).get(0).getItemDescriptionNoColor(),vcp.getTransferPrice(),vcp.getDealerPrice(),vcp.getMop(),
-
 
260
                    FormattingUtils.formatDate(vcp.getEffectedOn())));
-
 
261
 
-
 
262
        }
-
 
263
        org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil
-
 
264
                .getCSVByteStream(Arrays.asList("Catalog Id","Vendor Name", "Model name", "TP", "DP", "MOP",
-
 
265
                        "Effected On"), rows);
-
 
266
 
-
 
267
        ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "price circular report");
-
 
268
 
-
 
269
        return responseEntity;
-
 
270
 
-
 
271
    }
224
 
272
 
225
    @RequestMapping(value = "/getPricing", method = RequestMethod.GET)
273
    @RequestMapping(value = "/getPricing", method = RequestMethod.GET)
226
    public String getPricing(HttpServletRequest request, @RequestParam int vendorId, @RequestParam int itemId, @RequestParam LocalDate onDate, Model model) throws Exception {
274
    public String getPricing(HttpServletRequest request, @RequestParam int vendorId, @RequestParam int itemId, @RequestParam LocalDate onDate, Model model) throws Exception {
227
        Item item = itemRepository.selectById(itemId);
275
        Item item = itemRepository.selectById(itemId);
228
        VendorPriceCircularModel vendorPriceCircularModel = vendorCatalogPricingLogRepository.getVendorPriceOnDate(vendorId, item.getCatalogItemId(), onDate);
276
        VendorPriceCircularModel vendorPriceCircularModel = vendorCatalogPricingLogRepository.getVendorPriceOnDate(vendorId, item.getCatalogItemId(), onDate);