Rev 9768 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.model.v1.catalog.CatalogService;import in.shop2020.model.v1.catalog.EbayItem;import in.shop2020.model.v1.catalog.Item;import in.shop2020.model.v1.inventory.HoldInventoryDetail;import in.shop2020.model.v1.inventory.InventoryService;import in.shop2020.model.v1.inventory.InventoryType;import in.shop2020.model.v1.inventory.ItemInventory;import in.shop2020.model.v1.inventory.Warehouse;import in.shop2020.model.v1.order.OrderSource;import in.shop2020.support.utils.ReportsUtils;import in.shop2020.thrift.clients.CatalogClient;import in.shop2020.thrift.clients.InventoryClient;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.commons.io.FileUtils;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Workbook;import org.apache.struts2.convention.annotation.InterceptorRef;import org.apache.struts2.convention.annotation.InterceptorRefs;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.thrift.transport.TTransportException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")@InterceptorRefs({@InterceptorRef("defaultStack"),@InterceptorRef("login")})@Results({@Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})})public class HoldInventoryController extends ActionSupport implements ServletRequestAware {public class ItemStockDetail {private long itemId;private long available;private long reserved;private long held;public ItemStockDetail(long itemId, long available, long reserved,long held) {this.itemId = itemId;this.available = available;this.reserved = reserved;this.held = held;}public long getItemId() {return itemId;}public void setItemId(long itemId) {this.itemId = itemId;}public long getAvailable() {return available;}public void setAvailable(long available) {this.available = available;}public long getReserved() {return reserved;}public void setReserved(long reserved) {this.reserved = reserved;}public long getHeld() {return held;}public void setHeld(long held) {this.held = held;}}private static Logger logger = LoggerFactory.getLogger(HoldInventoryController.class);private static Map<Long, Warehouse> warehouseMap;private static List<Warehouse> warehouses;private List<HoldInventoryDetail> holdInventoryDetails;private Map<Long, Item> itemMap;private Map<Long, ItemStockDetail> itemAvailabilityMap;private long source;private long itemId;private long warehouseId;private long heldQuantity;private HttpServletRequest request;private HttpSession session;private String errorMsg = "";static {try {InventoryService.Client inventoryClient = new InventoryClient().getClient();warehouseMap = new HashMap<Long, Warehouse>(100);warehouses = inventoryClient.getWarehouses(null, InventoryType.GOOD, 0, 0, 0);for (Warehouse warehouse : warehouses) {warehouseMap.put(warehouse.getId(), warehouse);}} catch (Exception e) {try {InventoryService.Client inventoryClient = new InventoryClient().getClient();warehouses = inventoryClient.getWarehouses(null, InventoryType.GOOD, 0, 0, 0);for (Warehouse warehouse : warehouses) {warehouseMap.put(warehouse.getId(), warehouse);}} catch (Exception e1) {e1.printStackTrace();//TODO log statement}}}public String index() {if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), "/hold-inventory"))return "authfail";try {itemMap = new HashMap<Long, Item>(50);itemAvailabilityMap = new HashMap<Long, ItemStockDetail>();InventoryService.Client inventoryClient = new InventoryClient().getClient();holdInventoryDetails = inventoryClient.getHoldInventoryDetails(0,0,0);List<HoldInventoryDetail> tobeRemovedHoldInventories = new ArrayList<HoldInventoryDetail>();for(HoldInventoryDetail tmpHoldInventoryDetail : holdInventoryDetails) {if (tmpHoldInventoryDetail.getHeld()<=0) {tobeRemovedHoldInventories.add(tmpHoldInventoryDetail);}}holdInventoryDetails.removeAll(tobeRemovedHoldInventories);Map<Long, ItemInventory> itemInventoryMap = inventoryClient.getInventorySnapshot(0);CatalogService.Client catalogClient = new CatalogClient().getClient();for (HoldInventoryDetail holdInventoryDetail : holdInventoryDetails) {if(itemMap.containsKey(holdInventoryDetail.getItem_id())) {continue;}long availability = 0;long reserved = 0;long held = 0;Item item = catalogClient.getItem(holdInventoryDetail.getItem_id());Map<Long, Long> itemAvailability = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getAvailability();Map<Long, Long> itemReserved = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getReserved();Map<Long, Long> itemHeld = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getHeld();for (Long availabilityKey : itemAvailability.keySet()) {if (availabilityKey!=16) {availability += itemAvailability.get(availabilityKey);}}for (Long reservedKey : itemReserved.keySet()) {if (reservedKey!=16) {reserved += itemReserved.get(reservedKey);}}for (Long heldKey : itemHeld.keySet()) {if (heldKey!=16) {held += itemHeld.get(heldKey);}}ItemStockDetail itemStockDetail = new ItemStockDetail(holdInventoryDetail.getItem_id(), availability, reserved, held);itemAvailabilityMap.put(holdInventoryDetail.getItem_id(), itemStockDetail);itemMap.put(holdInventoryDetail.getItem_id(), item);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return "index";}public String create() throws Exception{InventoryService.Client inventoryClient = new InventoryClient().getClient();inventoryClient.addUpdateHoldInventory(itemId, warehouseId, heldQuantity, source);return index();}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;this.session = request.getSession();}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}public static Map<Long, Warehouse> getWarehouseMap() {return warehouseMap;}public static List<Warehouse> getWarehouses() {return warehouses;}public List<HoldInventoryDetail> getHoldInventoryDetails() {return holdInventoryDetails;}public long getSource() {return source;}public void setSource(long source) {this.source = source;}public long getItemId() {return itemId;}public void setItemId(long itemId) {this.itemId = itemId;}public long getWarehouseId() {return warehouseId;}public void setWarehouseId(long warehouseId) {this.warehouseId = warehouseId;}public long getHeldQuantity() {return heldQuantity;}public void setHeldQuantity(long heldQuantity) {this.heldQuantity = heldQuantity;}public Map<Long, Item> getItemMap() {return itemMap;}public void setItemMap(Map<Long, Item> itemMap) {this.itemMap = itemMap;}public Map<Long, ItemStockDetail> getItemAvailabilityMap() {return itemAvailabilityMap;}public void setItemAvailabilityMap(Map<Long, ItemStockDetail> itemAvailabilityMap) {this.itemAvailabilityMap = itemAvailabilityMap;}public String getSource(long source) {if(source == 0) {return "DONT-SELL";}return OrderSource.findByValue(new Long(source).intValue()).toString();}}