Rev 9931 | Rev 11268 | 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 java.io.BufferedReader;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;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.http.HttpResponse;import org.apache.http.NameValuePair;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;public static void main(String[] args) throws UnsupportedEncodingException{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();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(System.currentTimeMillis()));logger.info("Snapdeal Order Recon End Date .. "+endDate);//endDate = endDate.replace("-", "%2F");HttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost("http://shipping.snapdeal.com/login_security_check?spring-security-redirect=http://shipping.snapdeal.com/vendor/product-shipment/shippingDashboard&");HttpGet get;BufferedReader rd= null;List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("j_username","saholic-snapdeal@saholic.com"));nameValuePairs.add(new BasicNameValuePair("j_password","d73eaa39"));post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));HttpResponse 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);}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);}JSONObject 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));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/?startDate="+startDate+"&endDate="+endDate+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";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 {jsonDataObj = new JSONObject(rd.readLine());jsonDataShip = new JSONArray(jsonDataObj.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(int 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+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";logger.info("One Ship Url "+oneShipUrl);get = new HttpGet(oneShipUrl);try {response = client.execute(get);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship delivered orders", e);}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);}try {jsonDataObj = new JSONObject(rd.readLine());jsonDataShip = new JSONArray(jsonDataObj.get("jsonDataString").toString());} 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){String subOrderCode =(String) jsonObj.get("suborderCode");String referenceNumber =(String) jsonObj.get("referenceCode");String deliveryDate =(String) jsonObj.get("deliveredOn");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);}}}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 {jsonDataObj = new JSONObject(rd.readLine());jsonDataShip = new JSONArray(jsonDataObj.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(int 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);get = new HttpGet(oneShipCancelUrl);try {response = client.execute(get);} catch (Exception e) {logger.error("Unable to get Http Response for snapdeal oneship cancelled orders", e);}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);}try {jsonDataObj = new JSONObject(rd.readLine());jsonDataShip = new JSONArray(jsonDataObj.get("jsonDataString").toString());} 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){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);}}}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);}}}}