Subversion Repositories SmartDukaan

Rev

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

Rev 35214 Rev 35493
Line 201... Line 201...
201
        logger.info("Item ids {}", itemIds);
201
        logger.info("Item ids {}", itemIds);
202
        List<TagListing> tagListings = tagListingRepository.selectByItemIdsAndTagIds(itemIds, tagIds);
202
        List<TagListing> tagListings = tagListingRepository.selectByItemIdsAndTagIds(itemIds, tagIds);
203
        Map<Integer, TagListing> tagListingsMap = tagListings.stream()
203
        Map<Integer, TagListing> tagListingsMap = tagListings.stream()
204
                .collect(Collectors.toMap(x -> x.getItemId(), x -> x));
204
                .collect(Collectors.toMap(x -> x.getItemId(), x -> x));
205
 
205
 
-
 
206
        // N+1 fix: Pre-fetch all items before the loop
-
 
207
        Map<Integer, Item> itemMap = itemRepository.selectByIds(itemIds).stream()
-
 
208
                .collect(Collectors.toMap(Item::getId, item -> item));
-
 
209
 
206
        User user = saholicUserRepository.selectByCartId(cartId);
210
        User user = saholicUserRepository.selectByCartId(cartId);
207
        FofoStore fs = fofoStoreRepository.selectByRetailerId(user.getId());
211
        FofoStore fs = fofoStoreRepository.selectByRetailerId(user.getId());
208
        Map<Integer, Integer> warehouseItemQtyMap = saholicInventoryService.getSaholicNetAvailability(fs.getWarehouseId(), new ArrayList<>(itemIds));
212
        Map<Integer, Integer> warehouseItemQtyMap = saholicInventoryService.getSaholicNetAvailability(fs.getWarehouseId(), new ArrayList<>(itemIds));
209
        PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fs.getId(), LocalDate.now());
213
        PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fs.getId(), LocalDate.now());
210
        // Get in-transit data for this warehouse
214
        // Get in-transit data for this warehouse
Line 225... Line 229...
225
        int nonAccessoryQuantity = 0;
229
        int nonAccessoryQuantity = 0;
226
        for (CartLine cartLine : cartLines) {
230
        for (CartLine cartLine : cartLines) {
227
            CartItemResponseModel cartItemResponseModel = new CartItemResponseModel();
231
            CartItemResponseModel cartItemResponseModel = new CartItemResponseModel();
228
            int oldEstimate = cartLine.getEstimate();
232
            int oldEstimate = cartLine.getEstimate();
229
            int itemId = cartLine.getItemId();
233
            int itemId = cartLine.getItemId();
230
            Item item = null;
234
            // N+1 fix: Use pre-fetched itemMap instead of querying per item
231
            try {
-
 
232
                item = itemRepository.selectById(itemId);
235
            Item item = itemMap.get(itemId);
233
                cartItemResponseModel.setTitle(item.getItemDescriptionNoColor());
-
 
234
            } catch (ProfitMandiBusinessException e) {
-
 
235
                e.printStackTrace();
236
            if (item == null) {
236
                logger.info("Error finding item with id {}", itemId);
237
                logger.info("Error finding item with id {}", itemId);
237
                cartLineRepository.delete(cartLine);
238
                cartLineRepository.delete(cartLine);
238
                continue;
239
                continue;
239
            }
240
            }
-
 
241
            cartItemResponseModel.setTitle(item.getItemDescriptionNoColor());
240
            cartItemResponseModel.setItemId(itemId);
242
            cartItemResponseModel.setItemId(itemId);
241
            cartItemResponseModel.setQuantity(cartLine.getQuantity());
243
            cartItemResponseModel.setQuantity(cartLine.getQuantity());
242
            cartItemResponseModel.setColor(item.getColor());
244
            cartItemResponseModel.setColor(item.getColor());
243
            cartItemResponseModel.setCatalogItemId(item.getCatalogItemId());
245
            cartItemResponseModel.setCatalogItemId(item.getCatalogItemId());
244
            cartItemResponseModel.setMinBuyQuantity(1);
246
            cartItemResponseModel.setMinBuyQuantity(1);