Rev 14642 | Rev 14644 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020;import in.shop2020.model.v1.order.OrderSource;import in.shop2020.model.v1.order.OrderStatus;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.utils.GmailUtils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.mail.MessagingException;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.json.JSONArray;import org.json.JSONObject;import org.slf4j.LoggerFactory;import org.slf4j.Logger;public class SnapdealOrderStatusReconciliation{private static Logger logger;static String emailFromAddress;static String password;static GmailUtils mailer;static String sendTo[];static {emailFromAddress = "build-staging@shop2020.in";password = "shop2020";mailer = new GmailUtils();sendTo = new String[] { "kshitij.sood@shop2020.in", "manish.sharma@shop2020.in", "amit.gupta@shop2020.in" };}public static void main(String[] args) throws UnsupportedEncodingException, MessagingException{try{logger = LoggerFactory.getLogger(SnapdealOrderStatusReconciliation.class);/*List<OrderStatus> statuses = new ArrayList<OrderStatus>();statuses.add(OrderStatus.SHIPPED_FROM_WH);statuses.add(OrderStatus.SHIPPED_TO_LOGST);*/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();Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_MONTH, -60);minCreationDate = cal.getTimeInMillis();/*TransactionClient tsc = null;try {tsc = new TransactionClient();minCreationDate = tsc.getClient().getMinCreatedTimeStampUndeliveredOrdersForSource(OrderSource.SNAPDEAL.getValue());minCreationDate = 1393612200000l;} 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 1383291412000l*/SimpleDateFormat 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(System.currentTimeMillis()));logger.info("Snapdeal Order Recon End Date .. "+endDate);//endDate = endDate.replace("-", "%2F");HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet("http://selleraccounts.snapdeal.com/keymaker/login");HttpResponse response = null;try {response = client.execute(get);} catch (Exception e) {e.printStackTrace();throw new Exception("Excption while login to snapdeal panel");}BufferedReader rd = null;try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e1) {e1.printStackTrace();throw new Exception("Excption while reading login response");}String line = "";StringBuffer sb = new StringBuffer();try {while ((line = rd.readLine()) != null) {sb.append(line);//System.out.println(line);}} catch (IOException e) {e.printStackTrace();throw new Exception("Excption while reading login response");}int i= sb.toString().indexOf("name=\"lt\" value=");char[] charArray = sb.toString().toCharArray();String lt = "";int j=0;for(j=i+16;j<=charArray.length;j++){if(charArray[j]==' '){break;}}lt = sb.substring(i+17,j-1);System.out.println("LT VALUE " + lt);i= sb.toString().indexOf("name=\"execution\" value=");charArray = sb.toString().toCharArray();String ex = "";j=0;for(j=i+24;j<=charArray.length;j++){if(charArray[j]==' '){break;}}ex = sb.substring(i+24,j-1);System.out.println("EXECUTION VALUE " + ex);HttpPost post = new HttpPost("http://selleraccounts.snapdeal.com/login?service=http%3A%2F%2Fshipping.snapdeal.com%2Fj_spring_cas_security_check");List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();//nameValuePairs.add(new BasicNameValuePair("username",//"khushal.bhatia@saholic.com"));nameValuePairs.add(new BasicNameValuePair("username","saholic-snapdeal@saholic.com"));//nameValuePairs.add(new BasicNameValuePair("password",//"sonline"));nameValuePairs.add(new BasicNameValuePair("password","snapsaholic"));nameValuePairs.add(new BasicNameValuePair("_eventId","submit"));nameValuePairs.add(new BasicNameValuePair("execution",ex));nameValuePairs.add(new BasicNameValuePair("lt",lt));nameValuePairs.add(new BasicNameValuePair("submit","LOGIN"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));//response = null;try {response = client.execute(post);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal seller portal login", e);}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e1) {logger.error("Unable to read Http Response for snapdeal seller portal login", e1);throw new Exception("Unable to read Http Response for snapdeal seller portal login");}//Striline = "";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);throw new Exception("Unable to extract Http Response for snapdeal seller portal login");}get = new HttpGet("http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/pendingOrders/40?fulfillmentModelCode=ONESHIP");try {response = client.execute(get);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));while((line=rd.readLine())!=null){}JSONArray jsonDataObj = null;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));endDate = snapdealDateFormat.format(new Date(end));logger.info("==== Start Date.."+startDate+"\n");logger.info("==== End Date.."+endDate+"\n");/*logger.info("Getting Delivery Information for DropShip Snapdeal Orders");//http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch?statusCode=COURIER_DELIVERED&dispatchCategoryId=0&startDate=2014%2F04%2F01&endDate=2014%2F04%2F07&statusColumn=deliveredOnString dropshipUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?startDate="+startDate+"&endDate="+endDate+"&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0";logger.info("Drop Ship Url "+dropshipUrl);get = new HttpGet(dropshipUrl);try {response = client.execute(get);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal dropship delivered orders", e);}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal dropship delivered orders", e);}try {String resP = rd.readLine();jsonDataObj = new JSONArray("["+resP+"]");JSONObject j1 = (JSONObject)jsonDataObj.get(0);jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal dropship delivered orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceCode");String deliveryDate =(String) jsonObj.get("deliveredOn");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);}}}*/logger.info("Getting Delivery Information for OneShip Snapdeal Orders");//statusCode=CLD&dispatchCategoryId=0&startDate=2013%2F11%2F01&endDate=2013%2F11%2F07&statusColumn=cancelledOnString oneShipUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?startDate="+startDate+"&endDate="+endDate+"&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0";logger.info("One Ship Url "+oneShipUrl);post = new HttpPost("http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch");nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("startDate",startDate));nameValuePairs.add(new BasicNameValuePair("endDate",endDate));nameValuePairs.add(new BasicNameValuePair("statusColumn","deliveredOn"));nameValuePairs.add(new BasicNameValuePair("queryType","CREATED"));nameValuePairs.add(new BasicNameValuePair("statusCode","COURIER_DELIVERED"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));try {response = client.execute(post);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship delivered orders", e);throw new Exception("Unable to get Http Response for snapdeal oneship delivered orders");}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal oneship delivered orders", e);throw new Exception("Unable to read Http Response for snapdeal oneship delivered orders");}try {String resP;while((resP=rd.readLine())!=null){if(resP!=null && !resP.isEmpty()){System.out.println("Response... "+resP);jsonDataObj = new JSONArray("["+resP+"]");JSONObject j1 = (JSONObject)jsonDataObj.get(0);jsonDataShip = new JSONArray(j1.get("shippedDataDTOs").toString());}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal oneship delivered orders", e);throw new Exception("Unable to extract Http Response for snapdeal oneship delivered orders");}if(jsonDataShip!=null && jsonDataShip.length()>0){for(i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceCode");Long deliveryDate =(Long) jsonObj.get("deliveredOn");logger.info("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);String deliveryDateStr = ourDBDateFormat.format(new Date(deliveryDate));List<String> deliveredOrdelList = new ArrayList<String>();deliveredOrdelList.add(referenceNumber);deliveredOrdelList.add(subOrderCode);deliveredOrdelList.add(deliveryDateStr);deliveredOrderDataList.add(deliveredOrdelList);}} catch (Exception e) {logger.error("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders", e);throw new Exception("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders");}}}/*logger.info("Getting Information for Cancelled DropShip Snapdeal Orders");String dropshipCancelUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";logger.info("Drop Ship Cancel Url "+dropshipCancelUrl);get = new HttpGet(dropshipCancelUrl);try {response = client.execute(get);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal dropship cancelled orders", e);}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal dropship cancelled orders", e);}try {String resP = rd.readLine();jsonDataObj = new JSONArray("["+resP+"]");JSONObject j1 = (JSONObject)jsonDataObj.get(0);jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal dropship cancelled orders", e);}if(jsonDataShip!=null && jsonDataShip.length()>0){for(i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceCode");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);}}}*/logger.info("Getting Information for OneShip Snapdeal Cancelled Orders");String oneShipCancelUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";logger.info("One Ship Cancel Url "+oneShipCancelUrl);post = new HttpPost("http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch");nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("startDate",startDate));nameValuePairs.add(new BasicNameValuePair("endDate",endDate));nameValuePairs.add(new BasicNameValuePair("statusColumn","cancelledOn"));nameValuePairs.add(new BasicNameValuePair("queryType","CREATED"));nameValuePairs.add(new BasicNameValuePair("statusCode","CLD"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));try {response = client.execute(post);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship cancelled orders", e);throw new Exception("Unable to get Http Response for snapdeal oneship cancelled orders");}try {rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));} catch (Exception e) {logger.error("Unable to read Http Response for snapdeal oneship cancelled orders", e);throw new Exception("Unable to read Http Response for snapdeal oneship cancelled orders");}try {String resP;while((resP=rd.readLine())!=null){if(resP!=null && !resP.isEmpty()){jsonDataObj = new JSONArray("["+resP+"]");JSONObject j1 = (JSONObject)jsonDataObj.get(0);jsonDataShip = new JSONArray(j1.get("shippedDataDTOs").toString());}}} catch (Exception e) {logger.error("Unable to extract Http Response for snapdeal oneship cancelled orders", e);throw new Exception("Unable to extract Http Response for snapdeal oneship cancelled orders");}if(jsonDataShip!=null && jsonDataShip.length()>0){for(i=0; i< jsonDataShip.length(); i++){JSONObject jsonObj = null;try {jsonObj = jsonDataShip.getJSONObject(i);if(jsonObj!=null){String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceCode");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);throw new Exception("Unable to add cancelled order details for updation regarding snapdeal oneship orders");}}}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);throw new Exception("Unable to update delivery information for snapdeal orders");}}}catch(Exception e){e.printStackTrace();mailer.sendSSLMessage(sendTo, "Error in Snapdeal Order Status Recon", emailFromAddress, password, "<html><body><p>Please check log</p></body></html>");}}}