Rev 9425 | Rev 9458 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020;import in.shop2020.model.v1.catalog.CatalogService;import in.shop2020.model.v1.catalog.Item;import in.shop2020.model.v1.catalog.SnapdealItem;import in.shop2020.model.v1.inventory.InventoryService.Client;import in.shop2020.model.v1.inventory.InventoryType;import in.shop2020.model.v1.inventory.ItemInventory;import in.shop2020.model.v1.inventory.SnapdealInventoryItem;import in.shop2020.model.v1.inventory.Warehouse;import in.shop2020.model.v1.inventory.WarehouseType;import in.shop2020.thrift.clients.CatalogClient;import in.shop2020.thrift.clients.InventoryClient;import in.shop2020.thrift.clients.TransactionClient;import inventory.Inventory;import inventory.InventoryHistory;import inventory.InventoryHistoryItems;import inventory.InventoryItems;import inventory.SnapdealItemForInventory;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import com.google.gson.Gson;public class CreateSnapDealInventoryFeed {private static long time = System.currentTimeMillis();private static String SNAPDEAL_INVENTORY_SHEET;private static Map<Long, SnapdealItemForInventory> allItemsInventoryMap = new HashMap<Long, SnapdealItemForInventory>();private static ArrayList<Inventory> inventoryItemList;static Map<Long,Long> itemIdpendingOrdersMap = new HashMap<Long,Long>();static Map<String,Long> skuitemidMap = new HashMap<String,Long>();private static Map<String,InventoryHistory> inventoryhistoryItemMap;private static DefaultHttpClient client = new DefaultHttpClient();private static void calculateinventory(){CatalogClient catalogServiceClient = null;Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();try {catalogServiceClient = new CatalogClient();} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();}in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();try {List<Item> aliveItems = catalogClient.getAllAliveItems();Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>();for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){aliveItemsMap.put(thriftItem.getId(), thriftItem);}InventoryClient inventoryServiceClient = null;try {inventoryServiceClient = new InventoryClient();} catch (TTransportException e) {e.printStackTrace();}in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();SNAPDEAL_INVENTORY_SHEET = "/home/snapdeal/snapdeal-inventory-"+time+".xls";availability = inventoryClient.getInventorySnapshot(0);List<Warehouse> allwarehouses = inventoryClient.getWarehouses(null,null,0,0,0);Map<Long,Warehouse> allWarehousesMap = new HashMap<Long,Warehouse>();for(Warehouse warehouse:allwarehouses){allWarehousesMap.put(warehouse.getId(),warehouse);}List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);List<Long> thirdpartywarehouseids = new ArrayList<Long>();List<Long> oursGoodWarehouse = new ArrayList<Long>();for(Warehouse warehouse:warehouses){thirdpartywarehouseids.add(warehouse.getId());}for (Warehouse warehouse:ours_warehouses){oursGoodWarehouse.add(warehouse.getId());}long available=0;long reserve=0;long total_held=0;long heldForSource=0;double nlc=0;double maxnlc=0;Item thriftItem;long sku = 0;for(Inventory inventoryItem:inventoryItemList){try{sku = Long.parseLong(inventoryItem.getSellerSku());}catch(NumberFormatException nfe){System.out.println(inventoryItem.getSellerSku());if(skuitemidMap.get(inventoryItem.getSellerSku())!=null){sku = skuitemidMap.get(inventoryItem.getSellerSku());}else{continue;}}if(aliveItemsMap.get(sku) != null){thriftItem = aliveItemsMap.get(sku);}else{continue;}available=0;reserve=0;total_held=0;heldForSource=0;nlc=0;List<Warehouse> vendor_warehouses=null;SnapdealItemForInventory item;if(availability.get(thriftItem.getId())!=null){ItemInventory iteminventory = availability.get(thriftItem.getId());Map<Long,Long> itemavailability = new HashMap<Long,Long>();itemavailability = iteminventory.getAvailability();if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);vendor_warehouses.addAll(ours_warehouses);for (Warehouse warehouse:vendor_warehouses){if(warehouse.getBillingWarehouseId()!=7){continue;}in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();ignoredItem.setItemId(thriftItem.getId());ignoredItem.setWarehouseId(warehouse.getId());if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){try{nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());}catch(TTransportException e){inventoryClient = inventoryServiceClient.getClient();nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());}maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );if(nlc !=0 && (maxnlc >= nlc)){total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);available = available + itemavailability.get(warehouse.getId()) - total_held;System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);}else if(maxnlc==0){total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);available = available + itemavailability.get(warehouse.getId()) - total_held;System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);}}}}else{for (Map.Entry<Long,Long> entry : itemavailability.entrySet()) {if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){continue;}in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();ignoredItem.setItemId(thriftItem.getId());ignoredItem.setWarehouseId(entry.getKey());if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());try{maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();}catch(TTransportException e){catalogClient = catalogServiceClient.getClient();maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();}if(nlc !=0 && (maxnlc >= nlc)){total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);available = available + entry.getValue() - total_held;}else if(maxnlc==0){total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);available = available + itemavailability.get(entry.getKey()) - total_held;}}}}Map<Long,Long> itemreserve = new HashMap<Long,Long>();itemreserve = iteminventory.getReserved();if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());vendor_warehouses.addAll(ours_warehouses);for (Warehouse warehouse:vendor_warehouses){if(warehouse.getBillingWarehouseId()!=7){continue;}in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();ignoredItem.setItemId(thriftItem.getId());ignoredItem.setWarehouseId(warehouse.getId());if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();if(nlc !=0 && (maxnlc >= nlc)){reserve = reserve + itemreserve.get(warehouse.getId());System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);}else if(maxnlc==0){reserve = reserve + itemreserve.get(warehouse.getId());System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);}}}}else{for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){continue;}in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();ignoredItem.setItemId(thriftItem.getId());ignoredItem.setWarehouseId(entry.getKey());if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();if(nlc !=0 && (maxnlc >= nlc)){reserve = reserve + entry.getValue();System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);}else if(maxnlc==0){reserve = reserve + entry.getValue();System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);}}else{//System.out.println("skipping inventory for warehouse id " + entry.getKey());}}}item= new SnapdealItemForInventory(thriftItem.getId(),available,reserve,heldForSource,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),thriftItem.isRisky(),thriftItem.getItemStatus());System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());}else{item = new SnapdealItemForInventory(thriftItem.getId(),0,0,0,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),thriftItem.isRisky(),thriftItem.getItemStatus());System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());}//System.out.println(" Item details are " + thriftItem.getId() +" " + available + " " + reserve + " " + thriftItem.getHoldInventory() + " "+ thriftItem.getDefaultInventory() + " " + thriftItem.isRisky());//System.out.println("+++++++++++++++++++++++");allItemsInventoryMap.put(thriftItem.getId(),item);}} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void fetchinventoryhistoryfromsnapdeal() throws UnsupportedEncodingException, TException{HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");HttpGet get;BufferedReader rd= null;List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("j_username","khushal.bhatia@saholic.com"));nameValuePairs.add(new BasicNameValuePair("j_password","sonline"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));HttpResponse response = null;try {response = client.execute(post);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (IllegalStateException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}String line = "";try {while ((line = rd.readLine()) != null) {System.out.println(line);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}int i = 1;Gson gson = new Gson();inventoryhistoryItemMap = new HashMap<String,InventoryHistory>();Client inventoryClient = null;boolean exitfetchinghistory = true;long lastUpdatedInventoryTime = 0;try {inventoryClient = new InventoryClient().getClient();lastUpdatedInventoryTime = inventoryClient.getLastUpdatedTimeForSnapdealInventory();} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();}while(exitfetchinghistory){System.out.println("Fetching inventory history page " +i);get = new HttpGet("http://seller.snapdeal.com/inventory/search?gridType=history&_search=false&nd="+time+"&rows=30&page="+i+"&sidx=&sord=dsc");try {response = client.execute(get);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}InventoryHistoryItems inventoryhistoryitems = (InventoryHistoryItems) gson.fromJson(rd, InventoryHistoryItems.class);if(inventoryhistoryitems.getRows().size()!=0){//System.out.println("Parsing page " + i);for(InventoryHistory inventoryhistory : inventoryhistoryitems.getRows()){if(inventoryhistory.getUpdateTime() > lastUpdatedInventoryTime){if(inventoryhistoryItemMap.containsKey(inventoryhistory.getSellerSku())){if(inventoryhistoryItemMap.get(inventoryhistory.getSellerSku()).getUpdateTime() < inventoryhistory.getUpdateTime()){inventoryhistoryItemMap.put(inventoryhistory.getSellerSku(),inventoryhistory);}}else{inventoryhistoryItemMap.put(inventoryhistory.getSellerSku(),inventoryhistory);}}else{exitfetchinghistory = false;}}}else{exitfetchinghistory = false;}i++;}}private static void fetchinventoryfromsnapdeal() throws UnsupportedEncodingException{/*client = new DefaultHttpClient();HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");BufferedReader rd= null;List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("j_username","khushal.bhatia@saholic.com"));nameValuePairs.add(new BasicNameValuePair("j_password","sonline"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));HttpResponse response = null;try {response = client.execute(post);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (IllegalStateException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}String line = "";try {while ((line = rd.readLine()) != null) {System.out.println(line);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}*/int i = 1;int items=0;Gson gson = new Gson();in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;inventoryItemList = new ArrayList<Inventory>();HttpGet get;HttpResponse response = null;BufferedReader rd= null;while(true){System.out.println("Fetching current inventory page " +i);get = new HttpGet("http://seller.snapdeal.com/inventory/search?gridType=normal&_search=false&nd="+time+"&rows="+30+"&page="+i+"&sidx=&sord=asc");try {response = client.execute(get);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}InventoryItems inventoryitems = (InventoryItems) gson.fromJson(rd, InventoryItems.class);if(inventoryitems.getRows().size()!=0){for(Inventory inventory : inventoryitems.getRows()){inventoryItemList.add(inventory);items++;}}else{System.out.println("Fetched " + items);break;}i++;}in.shop2020.model.v1.catalog.CatalogService.Client catalogServiceClient = null;SnapdealItem snapdealitem = null;long sku = 0;long created_orders;long pending_orders;try {transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();} catch (TTransportException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {catalogServiceClient = new CatalogClient().getClient();} catch (TTransportException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}List<String> notMappedItems = new ArrayList<String>();for(Inventory inventory:inventoryItemList){created_orders = 0;pending_orders = 0;if(inventoryhistoryItemMap.get(inventory.getSellerSku())!=null && inventory.getAvailableInventory()!=Long.parseLong(inventoryhistoryItemMap.get(inventory.getSellerSku()).getNewValue())){try {try{sku = Long.parseLong(inventory.getSellerSku());}catch(NumberFormatException nfe){try {snapdealitem = catalogServiceClient.getSnapdealItembySkuAtSnapdeal(inventory.getSellerSku());if(snapdealitem.getItem_id()!=0){sku = snapdealitem.getItem_id();skuitemidMap.put(inventory.getSellerSku(),sku);}else{notMappedItems.add("inventory.getSellerSku() "+inventory.getProductName());System.out.println();}} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(sku!=0){System.out.println("Fetching created orders for " + sku);created_orders = transactionClient.getOrdersCreatedAfterTimestampForSource(inventoryhistoryItemMap.get(inventory.getSellerSku()).getUpdateTime(), 7, sku);}else{continue;}} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();}pending_orders = (inventory.getAvailableInventory() - Long.parseLong(inventoryhistoryItemMap.get(inventory.getSellerSku()).getNewValue()) - created_orders);}itemIdpendingOrdersMap.put(sku, pending_orders);}}@SuppressWarnings("deprecation")public static void main(String[] args) throws NumberFormatException, TException, ClientProtocolException, IOException {fetchinventoryhistoryfromsnapdeal();fetchinventoryfromsnapdeal();calculateinventory();in.shop2020.model.v1.catalog.CatalogService.Client catalogServiceClient = null;SnapdealItem snapdealitem = null;try {catalogServiceClient = new CatalogClient().getClient();} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();}Client inventoryClient = new InventoryClient().getClient();FileInputStream fis = new FileInputStream("/root/code/trunk/SnapDealFeeds/SellerInventory.xls");Workbook hwb = new HSSFWorkbook(fis);Sheet sheet = hwb.getSheetAt(0);Row row;int iterator=1;long availability,reserve,defaultinventory,holdinventory,actualavailability,heldorders=0,sent_inventory;SnapdealItemForInventory inventoryItem;StringBuffer outOfStockItems =new StringBuffer();StringBuffer backInStockItems =new StringBuffer();long sku = 0;for(Inventory inventory:inventoryItemList){//System.out.println(inventory.getSupc()+" "+inventory.getSellerSku()+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+inventory.isLive()+" "+itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku())));try{try{sku = Long.parseLong(inventory.getSellerSku());}catch(NumberFormatException nfe){if(skuitemidMap.containsKey(inventory.getSellerSku())){sku = skuitemidMap.get(inventory.getSellerSku());}else{continue;}}snapdealitem = catalogServiceClient.getSnapdealItem(sku);}catch(TTransportException e){catalogServiceClient = new CatalogClient().getClient();snapdealitem = catalogServiceClient.getSnapdealItem(sku);}if(snapdealitem.getItem_id()!=0 && snapdealitem.isIsListedOnSnapdeal() && !snapdealitem.isSuppressInventoryFeed()){inventoryItem = allItemsInventoryMap.get(Long.parseLong(inventory.getSellerSku()));if(inventoryItem==null){continue;}availability = inventoryItem.getAvailability();reserve = inventoryItem.getReserve();defaultinventory = inventoryItem.getDefaultInventory();holdinventory = inventoryItem.getHoldInventory();actualavailability = availability - reserve;if(itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku()))!=null){heldorders = itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku()));}System.out.println("itemId:" + inventoryItem.getId() + "\tavailable: " + inventoryItem.getAvailability() + "\treserve" + inventoryItem.getReserve() + "\theldForSource:" + inventoryItem.getHeldForSource() + "\twebsite_hold:" + inventoryItem.getHoldInventory() + "\tdefault_inv:" +inventoryItem.getDefaultInventory() + "\theldorders" + heldorders);row = sheet.getRow((short) iterator);long inventoryForRiskyItem = actualavailability - holdinventory;if(inventoryItem.getRisky()){if(inventoryForRiskyItem > 0){if((Math.round(inventoryForRiskyItem*2/3) - heldorders + inventoryItem.getHeldForSource()) > 0){sent_inventory = Math.round(inventoryForRiskyItem*2/3) - heldorders + inventoryItem.getHeldForSource();}else{sent_inventory = 0;}}else{sent_inventory = 0;}}else{if(actualavailability > defaultinventory){if((Math.round(actualavailability*2/3) + inventoryItem.getHeldForSource()) > heldorders){System.out.println("actual" + actualavailability + "\t2/3actual" + Math.round(actualavailability*2/3) + "\theld for source" + inventoryItem.getHeldForSource() + "\theldorders" + heldorders + "\tFinal Value is : " + (Math.round(actualavailability*2/3) + inventoryItem.getHeldForSource() - heldorders));sent_inventory = Math.round(actualavailability*2/3) + inventoryItem.getHeldForSource() - heldorders;}else{sent_inventory = 0;}}else{if(defaultinventory > heldorders){sent_inventory = defaultinventory - heldorders;}else{sent_inventory = 0;}}}if(inventory.getAvailableInventory()!= sent_inventory){row.getCell((short) 0).setCellValue(inventory.getSupc());row.getCell((short) 1).setCellValue(inventory.getSellerSku());row.getCell((short) 2).setCellValue(inventory.getProductName());row.getCell((short) 3).setCellValue(inventory.getAvailableInventory());row.getCell((short) 4).setCellValue(sent_inventory);if(inventory.getAvailableInventory()!=0 && sent_inventory==0){outOfStockItems.append(sku+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+sent_inventory);}if(inventory.getAvailableInventory()==0 && sent_inventory!=0){backInStockItems.append(sku+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+sent_inventory);}if(inventory.isLive()){row.getCell((short) 5).setCellValue("Yes");}else{row.getCell((short) 5).setCellValue("No");}SnapdealInventoryItem snapdealinventoryitem = new SnapdealInventoryItem();snapdealinventoryitem.setAvailability(sent_inventory);snapdealinventoryitem.setItem_id(Long.parseLong(inventory.getSellerSku()));System.out.println("Updating inventory snapshot " + inventory.getSellerSku());snapdealinventoryitem.setLastUpdatedOnSnapdeal(time);try{inventoryClient.addOrUpdateSnapdealInventoryForItem(snapdealinventoryitem);}catch(TTransportException e){inventoryClient = new InventoryClient().getClient();inventoryClient.addOrUpdateSnapdealInventoryForItem(snapdealinventoryitem);}iterator++;}}else{continue;}}FileOutputStream fileOut = null;fis.close();try {System.out.println("Before writing file ");fileOut = new FileOutputStream(SNAPDEAL_INVENTORY_SHEET);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {hwb.write(fileOut);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}/* HttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");BufferedReader rd= null;List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("j_username","khushal.bhatia@saholic.com"));nameValuePairs.add(new BasicNameValuePair("j_password","sonline"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));HttpResponse response = null;String line;try {response = client.execute(post);rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));while ((line = rd.readLine()) != null) {System.out.println(line);}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}post = new HttpPost("http://seller.snapdeal.com/inventory/upload");File file = new File("/home/vikram/snapdeal-inventory-1389608325312.xls");MultipartEntity mpEntity = new MultipartEntity();ContentBody cbFile = new FileBody(file,"application/vnd.ms-excel");mpEntity.addPart("file", cbFile);post.setEntity(mpEntity);response = client.execute(post);try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (IllegalStateException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}line = "";try {while ((line = rd.readLine()) != null) {System.out.println(line);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}*/}}