Rev 9883 | Rev 10565 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020;import in.shop2020.model.v1.order.Order;import in.shop2020.model.v1.order.OrderSource;import in.shop2020.thrift.clients.TransactionClient;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.InputStreamReader;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 org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.NameValuePair;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SnapdealOrderStatusReconciliation{private static Logger logger;public static void main(String[] args){logger = LoggerFactory.getLogger(SnapdealOrderStatusReconciliation.class);Map<String,List<List<String>>> orderDataMap = new HashMap<String,List<List<String>>>();List<List<String>> deliveredOrderDataList = new ArrayList<List<String>>();List<List<String>> cancelledOrderDataList = new ArrayList<List<String>>();long minCreationDate = 0l;long currentTime = System.currentTimeMillis();TransactionClient tsc = null;try {tsc = new TransactionClient();minCreationDate = tsc.getClient().getMinCreatedTimeStampUndeliveredOrdersForSource(OrderSource.SNAPDEAL.getValue());/*minCreationDate = 1383291412000l;*/} catch (Exception e) {logger.error("Unable to establish connection to the transaction service while getting Minimum Order Created Timstamp for Undelivered Orders ", e);}//Dec 14, 2013 12:00:00 AM 1383291412000lSimpleDateFormat snapdealDateFormat = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat gotSnapdealDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss aaa");SimpleDateFormat ourDBDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String startDate= "";Date start_date = new Date(minCreationDate);Date end_date = new Date(currentTime);if(minCreationDate > 0l){startDate = snapdealDateFormat.format(new Date(minCreationDate));}else{startDate = snapdealDateFormat.format(new Date(currentTime));}logger.info("Snapdeal Order Recon Start Date .. "+startDate);/*startDate = startDate.replace("-", "%2F");*/String endDate = snapdealDateFormat.format(new Date(currentTime));logger.info("Snapdeal Order Recon End Date .. "+endDate);/*endDate = endDate.replace("-", "%2F");*/HttpClient newClient = new HttpClient();PostMethod postMethod = new PostMethod("http://shipping.snapdeal.com/login_security_check?spring-security-redirect=http://shipping.snapdeal.com/vendor/product-shipment/shippingDashboard&");List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new NameValuePair("j_username","khushal.bhatia@saholic.com"));nameValuePairs.add(new NameValuePair("j_password","s@h0l1c"));NameValuePair[] nameValuePairArray = new NameValuePair[nameValuePairs.size()];nameValuePairArray = nameValuePairs.toArray(nameValuePairArray);postMethod.addParameters(nameValuePairArray);BufferedReader rd = null;int statusCode = 0;try{statusCode = newClient.executeMethod(postMethod);}catch(Exception e){logger.error("Unable to get Http Response for snapdeal seller portal login", e);}try {rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(postMethod.getResponseBody())));} catch (Exception e1) {logger.error("Unable to read Http Response for snapdeal seller portal login", e1);}String line = "";try {while ((line = rd.readLine()) != null) {System.out.println(line);}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal seller portal login", e);}JSONArray jsonDataShip = null;String line1 = "";for(long start = start_date.getTime(); start < end_date.getTime();){long end = start + 604800000l;if(end > end_date.getTime()){end = end_date.getTime();}startDate = snapdealDateFormat.format(new Date(start));startDate = startDate.replace("-", "%2F");endDate = snapdealDateFormat.format(new Date(end));endDate = endDate.replace("-", "%2F");logger.info("==== Start Date.."+startDate+"\n");logger.info("==== End Date.."+endDate+"\n");logger.info("Getting Delivery Information for DropShip Snapdeal Orders");String dropshipUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";logger.info("Drop Ship Url "+dropshipUrl);GetMethod getMethod = new GetMethod(dropshipUrl);try {statusCode = newClient.executeMethod(getMethod);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal dropship delivered orders", e);}try {rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(getMethod.getResponseBody())));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal dropship delivered orders", e);}try {while ((line1 = rd.readLine()) != null) {if(line1.contains("jsonString")){String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));logger.info("Response get from SnapDeal DropShip.. ");jsonDataShip = new JSONArray(jsonString);break;}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal dropship delivered orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(int i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){//System.out.println(jsonObj);String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceNumber");String deliveryDate =(String) jsonObj.get("deliveredOn");//System.out.println("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());List<String> deliveredOrdelList = new ArrayList<String>();deliveredOrdelList.add(referenceNumber);deliveredOrdelList.add(subOrderCode);deliveredOrdelList.add(deliveryDate);deliveredOrderDataList.add(deliveredOrdelList);}} catch (Exception e) {logger.error("Unable to add delivered order details for updation regarding snapdeal dropship delivered orders", e);}}}getMethod.releaseConnection();logger.info("Getting Delivery Information for OneShip Snapdeal Orders");String oneShipUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";logger.info("One Ship Url "+oneShipUrl);getMethod = new GetMethod(oneShipUrl);try {statusCode = newClient.executeMethod(getMethod);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship delivered orders", e);}try {rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(getMethod.getResponseBody())));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal oneship delivered orders", e);}try {while ((line1 = rd.readLine()) != null) {if(line1.contains("jsonString")){String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));logger.info("Response get from SnapDeal OneShip.. ");jsonDataShip = new JSONArray(jsonString);break;}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal oneship delivered orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(int i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){//System.out.println(jsonObj);String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceNumber");String deliveryDate =(String) jsonObj.get("deliveredOn");//System.out.println("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);logger.info("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());List<String> deliveredOrdelList = new ArrayList<String>();deliveredOrdelList.add(referenceNumber);deliveredOrdelList.add(subOrderCode);deliveredOrdelList.add(deliveryDate);deliveredOrderDataList.add(deliveredOrdelList);}} catch (Exception e) {logger.error("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders", e);}}}getMethod.releaseConnection();logger.info("Getting Information for Cancelled DropShip Snapdeal Orders");String dropshipCancelUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=CANCELLATION_COMPLETE&statusColumn=cancelledOn&dispatchCategoryId=0&sCode=CANCELLATION_COMPLETE";logger.info("Drop Ship Cancel Url "+dropshipCancelUrl);getMethod = new GetMethod(dropshipCancelUrl);try {statusCode = newClient.executeMethod(getMethod);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal dropship cancelled orders", e);}try {rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(getMethod.getResponseBody())));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal dropship cancelled orders", e);}try {while ((line1 = rd.readLine()) != null) {if(line1.contains("jsonString")){String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));logger.info("Response get from SnapDeal DropShip Cancelled Orders.. ");jsonDataShip = new JSONArray(jsonString);break;}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal dropship cancelled orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(int i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){//System.out.println(jsonObj);String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceNumber");//System.out.println("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);List<String> cancelledOrdelList = new ArrayList<String>();cancelledOrdelList.add(referenceNumber);cancelledOrdelList.add(subOrderCode);cancelledOrderDataList.add(cancelledOrdelList);}} catch (Exception e) {logger.error("Unable to add cancelled order details for updation regarding snapdeal dropship orders", e);}}}getMethod.releaseConnection();logger.info("Getting Information for OneShip Snapdeal Cancelled Orders");String oneShipCancelUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=CANCELLATION_COMPLETE&statusColumn=cancelledOn&dispatchCategoryId=0&sCode=CANCELLATION_COMPLETE";logger.info("One Ship Cancel Url "+oneShipCancelUrl);getMethod = new GetMethod(oneShipCancelUrl);try {statusCode = newClient.executeMethod(getMethod);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship cancelled orders", e);}try {rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(getMethod.getResponseBody())));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal oneship cancelled orders", e);}try {while ((line1 = rd.readLine()) != null) {if(line1.contains("jsonString")){String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));logger.info("Response get from SnapDeal OneShip Cancelled Orders.. ");jsonDataShip = new JSONArray(jsonString);break;}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal oneship cancelled orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(int i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){//System.out.println(jsonObj);String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceNumber");//System.out.println("Snapdeal OneShip Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);logger.info("Snapdeal OneShip Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);List<String> cancelledOrdelList = new ArrayList<String>();cancelledOrdelList.add(referenceNumber);cancelledOrdelList.add(subOrderCode);cancelledOrderDataList.add(cancelledOrdelList);}} catch (Exception e) {logger.error("Unable to add cancelled order details for updation regarding snapdeal oneship orders", e);}}}getMethod.releaseConnection();start = end + 86400000l;}if(deliveredOrderDataList!=null && deliveredOrderDataList.size()>0){logger.info("Delivered Orders Size .. "+deliveredOrderDataList.size());orderDataMap.put("Delivered", deliveredOrderDataList);}if(cancelledOrderDataList!=null && cancelledOrderDataList.size()>0){logger.info("Cancelled Orders Size .. "+cancelledOrderDataList.size());orderDataMap.put("Cancelled", cancelledOrderDataList);}if(orderDataMap!=null && orderDataMap.size()>0){try{new TransactionClient().getClient().updateSnapdealOrdersStatus(orderDataMap);} catch(Exception e){logger.error("Unable to update delivery information for snapdeal orders", e);}}}}