Rev 15601 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020;import in.shop2020.serving.services.SnapdealSessionCookie;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.Logger;import org.slf4j.LoggerFactory;public class SnapdealOrderStatusReconciliation{private static Logger logger;static String emailFromAddress;static String password;static GmailUtils mailer;static String sendTo[];private static Map<String, String> headers = new HashMap<String, String>();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" };headers.put("User-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11");headers.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");headers.put("Accept-Language", "en-US,en;q=0.8");headers.put("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");}public static void main(String[] args) throws UnsupportedEncodingException, MessagingException{try{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();SnapdealSessionCookie sdSessionCookie = new SnapdealSessionCookie();String cookies = sdSessionCookie.getCookies();JSONObject cookieObject = new JSONObject(cookies);Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_MONTH, -60);minCreationDate = cal.getTimeInMillis();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();HttpResponse response = null;BufferedReader rd = null;String line = "";HttpGet get = new HttpGet("http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/pendingOrders/40?fulfillmentModelCode=ONESHIP");for(String key:headers.keySet())get.addHeader(key, headers.get(key));get.addHeader("Cookie","AWSELB="+cookieObject.get("AWSELB")+";JSESSIONID="+cookieObject.get("JSESSIONID")+";");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;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");int i;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);HttpPost post = new HttpPost("http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch");cookies = sdSessionCookie.getCookies();cookieObject = new JSONObject(cookies);for(String key:headers.keySet())post.addHeader(key, headers.get(key));post.addHeader("Cookie","AWSELB="+cookieObject.get("AWSELB")+";JSESSIONID="+cookieObject.get("JSESSIONID")+";");List<NameValuePair> 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");if(!jsonObj.get("deliveredOn").toString().equalsIgnoreCase("null")){try{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){Integer deliveryDate =(Integer) 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);continue;}}}} 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 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");cookies = sdSessionCookie.getCookies();cookieObject = new JSONObject(cookies);for(String key:headers.keySet())post.addHeader(key, headers.get(key));post.addHeader("Cookie","AWSELB="+cookieObject.get("AWSELB")+";JSESSIONID="+cookieObject.get("JSESSIONID")+";");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>");}}}