Rev 21728 | Rev 22037 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.web.controller;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.transaction.annotation.Transactional;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;import com.spice.profitmandi.common.model.CustomItem;import com.spice.profitmandi.common.model.CustomLineItem;import com.spice.profitmandi.common.model.ProfitMandiConstants;import com.spice.profitmandi.dao.entity.fofo.Purchase;import com.spice.profitmandi.dao.model.ItemIdSum;import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;import com.spice.profitmandi.dao.repository.transaction.OrderRepository;import com.spice.profitmandi.web.model.FofoDetails;import com.spice.profitmandi.web.util.CookiesFetcher;import com.spice.profitmandi.web.util.MVCResponseSender;import in.shop2020.model.v1.catalog.ItemType;@Controller@Transactionalpublic class PurchaseController {private static final Logger LOGGER = LoggerFactory.getLogger(PurchaseController.class);@AutowiredOrderRepository orderRepository;@AutowiredInventoryItemRepository inventoryItemRepository;@AutowiredPurchaseRepository purchaseRepository;@AutowiredMVCResponseSender mvcResponseSender;@AutowiredCookiesFetcher cookiesFetcher;@RequestMapping(value = "/purchase", method = RequestMethod.POST)public String orderByAirwayBillOrInvoiceNumber(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.AIRWAY_BILL_OR_INVOICE_NUMBER) String airwayBillOrInvoiceNumber, Model model) throws Throwable{FofoDetails fofoDetails = cookiesFetcher.getCookiesObject(request);List<Object[]> rows = orderRepository.selectByAirwayBillOrInvoiceNumber(airwayBillOrInvoiceNumber, fofoDetails.getFofoId());Set<Integer> itemIds = new HashSet<>();String invoiceNumber = null;for(Object[] row : rows){LOGGER.info("row {}", Arrays.toString(row));itemIds.add((int)row[0]);invoiceNumber = (String)row[9];}List<ItemIdSum> itemIdSums = new ArrayList<ItemIdSum>();try{Purchase purchase = purchaseRepository.selectByPurchaseReference(invoiceNumber);if (purchase.getFofoId() == fofoDetails.getFofoId()){itemIdSums = inventoryItemRepository.selectScannedCount(itemIds, fofoDetails.getFofoId(), purchase.getId());}}catch(ProfitMandiBusinessException e){//Not to worry.No purchase exists}LOGGER.info("itemIdSums : {}", itemIdSums);List<CustomItem> customItems = new ArrayList<>();for(Object[] row : rows){CustomItem customItem = this.createCustomLineItem(row);for(ItemIdSum itemIdSum : itemIdSums){//LOGGER.info("itemIdCount{}",Arrays.toString(itemIdCount));if(itemIdSum.getItemId() == (int)row[0]){customItem.setScanned((float)row[5] == itemIdSum.getSumOfQuantity() ? true : false);}}customItems.add(customItem);}model.addAttribute("customItems", customItems);model.addAttribute("invoiceNumber",invoiceNumber);model.addAttribute("airwayBillOrInvoiceNumber",airwayBillOrInvoiceNumber);return "purchase";}@RequestMapping(value = "/purchase", method = RequestMethod.GET)public String orderByAirwayBillOrInvoiceNumber(HttpServletRequest request) throws Exception{return "purchase";}private String getVaildName(String name){return name!=null?name:"";}private CustomItem createCustomLineItem(Object[] row){LOGGER.info("row {}", Arrays.toString(row));CustomItem customItem = new CustomItem();customItem.setItemId((int)row[0]);CustomLineItem customLineItem = new CustomLineItem();customLineItem.setBrand((String)row[1]);customLineItem.setModelName((String)row[2]);customLineItem.setModelNumber((String)row[3]);customLineItem.setUnitPrice((float)row[6]);customLineItem.setColor((String)row[4]);customLineItem.setQuantity((float)row[5]);customLineItem.setDisplayName((getVaildName((String)row[1])+" "+getVaildName((String)row[2])+" "+getVaildName((String)row[3])+" "+getVaildName((String)row[4])).replaceAll("\\s+", " "));customItem.setItemDetail(customLineItem);customItem.setInvoiceNumber((String)row[9]);customItem.setType(((ItemType)row[7]).toString());return customItem;}}