Subversion Repositories SmartDukaan

Rev

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

Rev 34489 Rev 34490
Line 7... Line 7...
7
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
7
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
8
import com.spice.profitmandi.common.model.*;
8
import com.spice.profitmandi.common.model.*;
9
import com.spice.profitmandi.common.util.FileUtil;
9
import com.spice.profitmandi.common.util.FileUtil;
10
import com.spice.profitmandi.common.util.Utils;
10
import com.spice.profitmandi.common.util.Utils;
11
import com.spice.profitmandi.common.util.Utils.Attachment;
11
import com.spice.profitmandi.common.util.Utils.Attachment;
-
 
12
import com.spice.profitmandi.common.web.util.ResponseSender;
12
import com.spice.profitmandi.dao.entity.auth.AuthUser;
13
import com.spice.profitmandi.dao.entity.auth.AuthUser;
13
import com.spice.profitmandi.dao.entity.catalog.Category;
14
import com.spice.profitmandi.dao.entity.catalog.Category;
14
import com.spice.profitmandi.dao.entity.catalog.FocusedModel;
15
import com.spice.profitmandi.dao.entity.catalog.FocusedModel;
15
import com.spice.profitmandi.dao.entity.catalog.Item;
16
import com.spice.profitmandi.dao.entity.catalog.Item;
16
import com.spice.profitmandi.dao.entity.catalog.TagListing;
17
import com.spice.profitmandi.dao.entity.catalog.TagListing;
Line 124... Line 125...
124
 
125
 
125
    @Autowired
126
    @Autowired
126
    private JavaMailSender googleMailSender;
127
    private JavaMailSender googleMailSender;
127
 
128
 
128
    @Autowired
129
    @Autowired
-
 
130
    private ResponseSender responseSender;
-
 
131
 
-
 
132
    @Autowired
129
    private CookiesProcessor cookiesProcessor;
133
    private CookiesProcessor cookiesProcessor;
130
 
134
 
131
    @Autowired
135
    @Autowired
132
    private UserWalletRepository userWalletRepository;
136
    private UserWalletRepository userWalletRepository;
133
 
137
 
Line 1981... Line 1985...
1981
        CustomRetailer customRetailer = retailerService.getFofoRetailer(fofoId);
1985
        CustomRetailer customRetailer = retailerService.getFofoRetailer(fofoId);
1982
        Map<Integer, Integer> processingOrderMap = null;
1986
        Map<Integer, Integer> processingOrderMap = null;
1983
        Map<Integer, Integer> catalogIdAndQtyMap = null;
1987
        Map<Integer, Integer> catalogIdAndQtyMap = null;
1984
        Map<Integer, Integer> grnPendingOrdersMap = null;
1988
        Map<Integer, Integer> grnPendingOrdersMap = null;
1985
 
1989
 
1986
        Map<String, Set<PartnerStockDescriptionModel>> brandToUniqueItemsMap = new HashMap<>();
1990
        Map<String, Set<PartnerStockDetailModel>> brandToUniqueItemsMap = new HashMap<>();
1987
 
1991
 
1988
        List<PartnerStockDescriptionModel> inStocks = new ArrayList<>();
1992
        List<PartnerStockDetailModel> inStocks = new ArrayList<>();
1989
        Map<String, PartnerStockDescriptionModel> inStocksDescriptionModelMap = new HashMap<>();
1993
        Map<String, PartnerStockDetailModel> inStocksDescriptionModelMap = new HashMap<>();
1990
 
1994
 
1991
        List<PartnerStockDescriptionModel> grnPendings = new ArrayList<>();
1995
        List<PartnerStockDetailModel> grnPendings = new ArrayList<>();
1992
        Map<String, PartnerStockDescriptionModel> grnPendingsDescriptionModelMap = new HashMap<>();
1996
        Map<String, PartnerStockDetailModel> grnPendingsDescriptionModelMap = new HashMap<>();
1993
 
1997
 
1994
 
1998
 
1995
        List<PartnerStockDescriptionModel> pendingIndents = new ArrayList<>();
1999
        List<PartnerStockDetailModel> pendingIndents = new ArrayList<>();
1996
        Map<String, PartnerStockDescriptionModel> pendingIndentsDescriptionModelMap = new HashMap<>();
2000
        Map<String, PartnerStockDetailModel> pendingIndentsDescriptionModelMap = new HashMap<>();
1997
 
2001
 
1998
        Map<Integer, Integer> currentInventorySnapshot = currentInventorySnapshotRepository.selectByFofoId(fofoId)
2002
        Map<Integer, Integer> currentInventorySnapshot = currentInventorySnapshotRepository.selectByFofoId(fofoId)
1999
                .stream().collect(Collectors.toMap(x -> x.getItemId(), x -> x.getAvailability()));
2003
                .stream().collect(Collectors.toMap(x -> x.getItemId(), x -> x.getAvailability()));
2000
 
2004
 
2001
 
2005
 
2002
        if (!currentInventorySnapshot.isEmpty()) {
2006
        if (!currentInventorySnapshot.isEmpty()) {
2003
            catalogIdAndQtyMap = itemRepository.selectByIds(currentInventorySnapshot.keySet()).stream()
2007
            catalogIdAndQtyMap = itemRepository.selectByIds(currentInventorySnapshot.keySet()).stream()
2004
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2008
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2005
                            Collectors.summingInt(x -> currentInventorySnapshot.get(x.getId()))));
2009
                            Collectors.summingInt(x -> currentInventorySnapshot.get(x.getId()))));
2006
            inStocks.addAll(getBrandItemwiseDescription(brand, catalogIdAndQtyMap));
2010
            inStocks.addAll(getBrandItemwiseDetail(brand, catalogIdAndQtyMap));
2007
            inStocksDescriptionModelMap = inStocks.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2011
            inStocksDescriptionModelMap = inStocks.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2008
        }
2012
        }
2009
 
2013
 
2010
        Map<Integer, Integer> grnPendingOrders = orderRepository.selectPendingGrnOrders(fofoId).stream()
2014
        Map<Integer, Integer> grnPendingOrders = orderRepository.selectPendingGrnOrders(fofoId).stream()
2011
                .collect(Collectors.groupingBy(x -> x.getLineItem().getItemId(),
2015
                .collect(Collectors.groupingBy(x -> x.getLineItem().getItemId(),
2012
                        Collectors.summingInt(x -> x.getLineItem().getQuantity())));
2016
                        Collectors.summingInt(x -> x.getLineItem().getQuantity())));
2013
        if (!grnPendingOrders.isEmpty()) {
2017
        if (!grnPendingOrders.isEmpty()) {
2014
            grnPendingOrdersMap = itemRepository.selectByIds(grnPendingOrders.keySet()).stream()
2018
            grnPendingOrdersMap = itemRepository.selectByIds(grnPendingOrders.keySet()).stream()
2015
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2019
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2016
                            Collectors.summingInt(x -> grnPendingOrders.get(x.getId()))));
2020
                            Collectors.summingInt(x -> grnPendingOrders.get(x.getId()))));
2017
            grnPendings.addAll(getBrandItemwiseDescription(brand, grnPendingOrdersMap));
2021
            grnPendings.addAll(getBrandItemwiseDetail(brand, grnPendingOrdersMap));
2018
            grnPendingsDescriptionModelMap = grnPendings.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2022
            grnPendingsDescriptionModelMap = grnPendings.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2019
 
2023
 
2020
        }
2024
        }
2021
 
2025
 
2022
        Map<Integer, Integer> processingOrder = orderRepository.selectOrders(fofoId, orderStatusList).stream()
2026
        Map<Integer, Integer> processingOrder = orderRepository.selectOrders(fofoId, orderStatusList).stream()
Line 2024... Line 2028...
2024
                        Collectors.summingInt(x -> x.getLineItem().getQuantity())));
2028
                        Collectors.summingInt(x -> x.getLineItem().getQuantity())));
2025
        if (!processingOrder.isEmpty()) {
2029
        if (!processingOrder.isEmpty()) {
2026
            processingOrderMap = itemRepository.selectByIds(processingOrder.keySet()).stream()
2030
            processingOrderMap = itemRepository.selectByIds(processingOrder.keySet()).stream()
2027
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2031
                    .collect(Collectors.groupingBy(x -> x.getCatalogItemId(),
2028
                            Collectors.summingInt(x -> processingOrder.get(x.getId()))));
2032
                            Collectors.summingInt(x -> processingOrder.get(x.getId()))));
2029
            pendingIndents.addAll(getBrandItemwiseDescription(brand, processingOrderMap));
2033
            pendingIndents.addAll(getBrandItemwiseDetail(brand, processingOrderMap));
2030
            pendingIndentsDescriptionModelMap = pendingIndents.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2034
            pendingIndentsDescriptionModelMap = pendingIndents.stream().collect(Collectors.toMap(x -> x.getItemDescription(), x -> x));
2031
 
2035
 
2032
        }
2036
        }
2033
 
2037
 
2034
        List<Integer> regionIds = partnerRegionRepository.selectByfofoId(fofoId).stream().map(x -> x.getRegionId())
2038
        List<Integer> regionIds = partnerRegionRepository.selectByfofoId(fofoId).stream().map(x -> x.getRegionId())
Line 2094... Line 2098...
2094
 
2098
 
2095
            }
2099
            }
2096
 
2100
 
2097
        }
2101
        }
2098
 
2102
 
2099
        List<PartnerStockDescriptionModel> allStockItems = new ArrayList<>();
2103
        List<PartnerStockDetailModel> allStockItems = new ArrayList<>();
2100
        allStockItems.addAll(inStocks);
2104
        allStockItems.addAll(inStocks);
2101
        allStockItems.addAll(grnPendings);
2105
        allStockItems.addAll(grnPendings);
2102
        allStockItems.addAll(pendingIndents);
2106
        allStockItems.addAll(pendingIndents);
2103
        LOGGER.info("allStockItems {}", allStockItems);
2107
        LOGGER.info("allStockItems {}", allStockItems);
2104
        brandToUniqueItemsMap =
2108
        brandToUniqueItemsMap =
2105
                allStockItems.stream().collect(
2109
                allStockItems.stream().collect(
2106
                        Collectors.groupingBy(
2110
                        Collectors.groupingBy(
2107
                                PartnerStockDescriptionModel::getBrand,
2111
                                PartnerStockDetailModel::getBrand,
2108
                                Collectors.toSet()
2112
                                Collectors.toSet()
2109
                        )
2113
                        )
2110
                );
2114
                );
2111
 
2115
 
2112
 
2116
 
Line 2114... Line 2118...
2114
 
2118
 
2115
        model.addAttribute("inStocks", inStocks);
2119
        model.addAttribute("inStocks", inStocks);
2116
        model.addAttribute("inStocksDescriptionModelMap", inStocksDescriptionModelMap);
2120
        model.addAttribute("inStocksDescriptionModelMap", inStocksDescriptionModelMap);
2117
 
2121
 
2118
        model.addAttribute("brandToUniqueItemsMap", brandToUniqueItemsMap);
2122
        model.addAttribute("brandToUniqueItemsMap", brandToUniqueItemsMap);
-
 
2123
        model.addAttribute("fofoId", fofoId);
2119
 
2124
 
2120
        model.addAttribute("grnPendings", grnPendings);
2125
        model.addAttribute("grnPendings", grnPendings);
2121
        model.addAttribute("grnPendingsDescriptionModelMap", grnPendingsDescriptionModelMap);
2126
        model.addAttribute("grnPendingsDescriptionModelMap", grnPendingsDescriptionModelMap);
2122
 
2127
 
2123
        model.addAttribute("pendingIndents", pendingIndents);
2128
        model.addAttribute("pendingIndents", pendingIndents);
Line 2130... Line 2135...
2130
        if (brand.equals("undefined")) {
2135
        if (brand.equals("undefined")) {
2131
 
2136
 
2132
            Map<String, List<FocusedModelShortageModel>> focusedModelShortageBrandMap = focusedModelShortageList
2137
            Map<String, List<FocusedModelShortageModel>> focusedModelShortageBrandMap = focusedModelShortageList
2133
                    .stream().collect(Collectors.groupingBy(x -> x.getBrandName()));
2138
                    .stream().collect(Collectors.groupingBy(x -> x.getBrandName()));
2134
 
2139
 
2135
            Map<String, List<PartnerStockDescriptionModel>> inStockBrandMap = inStocks.stream()
2140
            Map<String, List<PartnerStockDetailModel>> inStockBrandMap = inStocks.stream()
2136
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2141
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2137
 
2142
 
2138
            LOGGER.info("inStockBrandMap" + inStockBrandMap);
2143
            LOGGER.info("inStockBrandMap" + inStockBrandMap);
2139
 
2144
 
2140
            Map<String, List<PartnerStockDescriptionModel>> grnPendingBrandMap = grnPendings.stream()
2145
            Map<String, List<PartnerStockDetailModel>> grnPendingBrandMap = grnPendings.stream()
2141
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2146
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2142
 
2147
 
2143
            LOGGER.info("grnPendingBrandMap" + grnPendingBrandMap);
2148
            LOGGER.info("grnPendingBrandMap" + grnPendingBrandMap);
2144
 
2149
 
2145
            Map<String, List<PartnerStockDescriptionModel>> pendingIndentBrandMap = pendingIndents.stream()
2150
            Map<String, List<PartnerStockDetailModel>> pendingIndentBrandMap = pendingIndents.stream()
2146
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2151
                    .collect(Collectors.groupingBy(x -> x.getBrand()));
2147
 
2152
 
2148
            LOGGER.info("pendingIndentBrandMap" + pendingIndentBrandMap);
2153
            LOGGER.info("pendingIndentBrandMap" + pendingIndentBrandMap);
2149
 
2154
 
2150
            model.addAttribute("inStockBrandMap", inStockBrandMap);
2155
            model.addAttribute("inStockBrandMap", inStockBrandMap);
Line 2171... Line 2176...
2171
 
2176
 
2172
        return "po-catalog-items";
2177
        return "po-catalog-items";
2173
    }
2178
    }
2174
 
2179
 
2175
 
2180
 
-
 
2181
    @RequestMapping(value = "/getItemsByCatalog", method = RequestMethod.GET)
-
 
2182
    public ResponseEntity<?> getItemsByCatalog(HttpServletRequest request, @RequestParam int catalogId, @RequestParam int fofoId, Model model)
-
 
2183
            throws Exception {
-
 
2184
        List<Item> items = itemRepository.selectAllByCatalogItemId(catalogId);
-
 
2185
        Set<Integer> itemSet = items.stream().map(x -> x.getId()).collect(Collectors.toSet());
-
 
2186
        List<CurrentInventorySnapshot> currentInventorySnapshots = currentInventorySnapshotRepository.selectByFofoItemIds(fofoId, itemSet);
2176
 
-
 
-
 
2187
        model.addAttribute("currentInventorySnapshots", currentInventorySnapshots);
-
 
2188
        return responseSender.ok(currentInventorySnapshots);
2177
 
2189
    }
2178
 
-
 
2179
 
2190
 
2180
 
2191
 
2181
    @RequestMapping(value = "/getPartnerShortageStock", method = RequestMethod.GET)
2192
    @RequestMapping(value = "/getPartnerShortageStock", method = RequestMethod.GET)
2182
    public String getPartnerShortageStock(HttpServletRequest request,
2193
    public String getPartnerShortageStock(HttpServletRequest request,
2183
                                          @RequestParam(required = false, defaultValue = "") String brand, @RequestParam(required = false, defaultValue = "0") long shortInvest, @RequestParam int fofoId, Model model)
2194
                                          @RequestParam(required = false, defaultValue = "") String brand, @RequestParam(required = false, defaultValue = "0") long shortInvest, @RequestParam int fofoId, Model model)
Line 2239... Line 2250...
2239
 
2250
 
2240
        List<Integer> catalogsList = new ArrayList<>(catalogIds);
2251
        List<Integer> catalogsList = new ArrayList<>(catalogIds);
2241
 
2252
 
2242
        Map<Integer, TagListing> tagListingsMap = tagListingRepository.selectAllByCatalogIds(catalogsList);
2253
        Map<Integer, TagListing> tagListingsMap = tagListingRepository.selectAllByCatalogIds(catalogsList);
2243
 
2254
 
2244
        List<DateWiseSoldCatalogQtyModel> sevenDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, catalogIds, presentDate.minusDays(7));
2255
        List<DateWiseSoldCatalogQtyModel> sevenDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, presentDate.minusDays(7));
2245
 
2256
 
2246
        List<DateWiseSoldCatalogQtyModel> fourteenDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, catalogIds, presentDate.minusDays(14));
2257
        List<DateWiseSoldCatalogQtyModel> fourteenDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, presentDate.minusDays(14));
2247
 
2258
 
2248
        List<DateWiseSoldCatalogQtyModel> twentyOneDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, catalogIds, presentDate.minusDays(21));
2259
        List<DateWiseSoldCatalogQtyModel> twentyOneDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, presentDate.minusDays(21));
2249
 
2260
 
2250
        LOGGER.info("twentyOneDayAboveSoldsCatalogs {}", twentyOneDayAboveSoldsCatalogs);
2261
        LOGGER.info("twentyOneDayAboveSoldsCatalogs {}", twentyOneDayAboveSoldsCatalogs);
2251
 
2262
 
2252
        List<DateWiseSoldCatalogQtyModel> twentyEightDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, catalogIds, presentDate.minusDays(28));
2263
        List<DateWiseSoldCatalogQtyModel> twentyEightDayAboveSoldsCatalogs = fofoOrderRepository.getDateWiseSoldCatalogQty(fofoId, presentDate.minusDays(28));
2253
 
2264
 
2254
 
2265
 
2255
        List<CatalogAgingModel> catalogAgingModels = ageingService.getCatalogsAgingByWarehouse(catalogIds, fofoStore.getWarehouseId());
2266
        List<CatalogAgingModel> catalogAgingModels = ageingService.getCatalogsAgingByWarehouse(catalogIds, fofoStore.getWarehouseId());
2256
 
2267
 
2257
        Map<Integer, CatalogAgingModel> catalogAgingModelMap = catalogAgingModels.stream().collect(Collectors.toMap(x -> x.getCatalogId(), x -> x));
2268
        Map<Integer, CatalogAgingModel> catalogAgingModelMap = catalogAgingModels.stream().collect(Collectors.toMap(x -> x.getCatalogId(), x -> x));
Line 2309... Line 2320...
2309
                            return sortedStatusMap;
2320
                            return sortedStatusMap;
2310
                        },
2321
                        },
2311
                        (v1, v2) -> v1,
2322
                        (v1, v2) -> v1,
2312
                        LinkedHashMap::new // Maintain order of brands
2323
                        LinkedHashMap::new // Maintain order of brands
2313
                ));
2324
                ));
2314
 
-
 
-
 
2325
        LOGGER.info("brandToMtdMap {}", brandToMtdMap);
2315
        List<String> sortedBrandsByMtd = brandToMtdMap.entrySet()
2326
        List<String> sortedBrandsByMtd = brandToMtdMap.entrySet()
2316
                .stream()
2327
                .stream()
2317
                .sorted((e1, e2) -> Long.compare(e2.getValue(), e1.getValue())) // Descending MTD
2328
                .sorted((e1, e2) -> Long.compare(e2.getValue(), e1.getValue())) // Descending MTD
2318
                .map(Map.Entry::getKey)
2329
                .map(Map.Entry::getKey)
2319
                .collect(Collectors.toList());
2330
                .collect(Collectors.toList());
Line 2327... Line 2338...
2327
                .filter(x -> !sortedBrandStatusWiseStockListMap.containsKey(x)) // no stock
2338
                .filter(x -> !sortedBrandStatusWiseStockListMap.containsKey(x)) // no stock
2328
                .collect(Collectors.toList());
2339
                .collect(Collectors.toList());
2329
 
2340
 
2330
        List<String> finalSortedBrands = new ArrayList<>();
2341
        List<String> finalSortedBrands = new ArrayList<>();
2331
        finalSortedBrands.addAll(sortedBrandsByMtd);
2342
        finalSortedBrands.addAll(sortedBrandsByMtd);
2332
        finalSortedBrands.addAll(remainingBrands);
2343
//        finalSortedBrands.addAll(remainingBrands);
2333
        finalSortedBrands.addAll(remainingBrandsWithoutStock);
2344
//        finalSortedBrands.addAll(remainingBrandsWithoutStock);
2334
 
2345
 
2335
        Map<Integer, Integer> processingOrderMap = null;
2346
        Map<Integer, Integer> processingOrderMap = null;
2336
        List<PartnerStockDetailModel> pendingIndents = new ArrayList<>();
2347
        List<PartnerStockDetailModel> pendingIndents = new ArrayList<>();
2337
        Map<Integer, PartnerStockDetailModel> pendingIndentsDetailMap = new HashMap<>();
2348
        Map<Integer, PartnerStockDetailModel> pendingIndentsDetailMap = new HashMap<>();
2338
 
2349