Subversion Repositories SmartDukaan

Rev

Rev 13668 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.serving.services;

import in.shop2020.model.v1.catalog.FlipkartItem;
import in.shop2020.model.v1.order.FlipkartAdvantageOrder;

import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.utils.GmailUtils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
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;

public class FlipkartAdvantageOrderRecon{
        
        private static java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        private static String cookies;
        
        public static void main(String[] args) throws IOException {
                File file = new File("/home/manish/alerts/faorder.txt");
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("https://seller.flipkart.com/login");
                
                long totalOrders = 0l;
                long existingOrders = 0l;
                long processedOrders = 0l;
                long failedDelOrders = 0l;
                
                StringBuffer sbFailedDelOrders = new StringBuffer();
                
                sbFailedDelOrders.append("Following Orders were not exist in our system:- Created Now \n");
                
                SimpleDateFormat gotFlipkartDateFormat = new SimpleDateFormat("MMM dd, yyyy hh:mm aaa");
                SimpleDateFormat gotFlipkartDateFormatSh = new SimpleDateFormat("MMM dd, yyyy");
                
                List<FlipkartAdvantageOrder> faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                
                String emailFromAddress = "build-staging@shop2020.in";
                String password = "shop2020";
                GmailUtils mailer = new GmailUtils();
                //String sendTo[] = new String[]{"manish.sharma@shop2020.in"};
                String sendTo[] = new String[]{ "eng@shop2020.in","khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
                                "yukti.jain@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in"}; 
                
                java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Calendar cal=GregorianCalendar.getInstance();
                BufferedReader rd= null;
                HttpGet get_new;
                HttpResponse response;
                String line = "";
                FlipkartItem flipkartItem;
                long time = System.currentTimeMillis();
                try {
                        get_new = new HttpGet("https://seller.flipkart.com/");
                        get_new.addHeader("Host","seller.flipkart.com");
            get_new.addHeader("User-agent", "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
            get_new.addHeader("Connection","keep-alive");
            
            response = client.execute(get_new);
            rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            line = "";
            while ((line = rd.readLine()) != null) {
                System.out.println(line);
            }
            cookies = response.getFirstHeader("Set-Cookie") == null ? "" : 
                response.getFirstHeader("Set-Cookie").getValue();
            
            System.out.println("Cookies Before Login "+ cookies);
            
                        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                        nameValuePairs.add(new BasicNameValuePair("authName",
                        "flipkart"));
                        nameValuePairs.add(new BasicNameValuePair("username",
                        "flipkart-support@saholic.com"));
                        nameValuePairs.add(new BasicNameValuePair("password",
                        "bestmobiledeals2010"));
                        post.addHeader("Cookie",cookies);
                        post.addHeader("User-agent", "Mozilla/4.0");
                        post.addHeader("Referer", "seller.flipkart.com");
                        post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
                        response = client.execute(post);
                        cookies = response.getFirstHeader("Set-Cookie") == null ? "" : 
                response.getFirstHeader("Set-Cookie").getValue();
                        System.out.println("Cookies After Login "+cookies);
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                        line = "";
                        
                        while ((line = rd.readLine()) != null) {
                                System.out.println(line);
                        }
                        
                        TransactionClient transactionServiceClient = new TransactionClient();
                        in.shop2020.model.v1.order.TransactionService.Client tClient = transactionServiceClient.getClient();
                        
                        
                        
                        int i=1;
                        while(true){
                                get_new = new HttpGet("https://seller.flipkart.com/dashboard/som/shipped_order_items?status=approved&service_profile=fbf&page="+i+"&page_size=50&_="+time);
                                //get_new.addHeader("Cookie","__gads=ID=dfe0374cf04d1576:T=1381304511:S=ALNI_Ma2TpDrlF9_amkoqp3MOYJBaFAOUg; km_lv=x; S=d1t173VTuVxLMgd3in7R3mbHGNz0STqFkHgnidNrhKqBdz8wEKt%2BO9d%2B%2FRDHtf6fmq2ugaE7nZHV7zYSxOLcWBzq31A%3D%3D; __isReg=true; pincode=201301; __sonar=6631097455123118581; s_cc=true; s_sq=%5B%5BB%5D%5D; __utma=19769839.1733153395.1408690721.1416647806.1417179072.33; __utmc=19769839; __utmz=19769839.1415795608.26.5.utmcsr=savemoneyindia.com|utmccn=(referral)|utmcmd=referral|utmcct=/; SN=2.VIB1DBEC9C6CD94162ACB61060135212D1.SI47EBA2DE47044D0AA7C05F24AD4F42EB.VS141717906546900755654.1417179082; VID=2.VIB1DBEC9C6CD94162ACB61060135212D1.1417179082.VS141717906546900755654; NSID=2.SI47EBA2DE47044D0AA7C05F24AD4F42EB.1417179082.VIB1DBEC9C6CD94162ACB61060135212D1; T=TI138130450866706710769873257251497444628820234222703981199700765991; s_ppv=53; __CG=u%3A6208250296506778000%2Cs%3A1505183865%2Ct%3A1417179187815%2Cc%3A2%2Ck%3Awww.flipkart.com/30/77/1452%2Cf%3A0%2Ci%3A1; is_login=true; sellerId=m2z93iskuj81qiid; __utma=143439159.1156779613.1390806906.1417274947.1417519426.46; __utmb=143439159.4.10.1417519426; __utmc=143439159; __utmz=143439159.1390806906.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ga=GA1.2.1156779613.1390806906; km_ai=m2z93iskuj81qiid; km_ni=m2z93iskuj81qiid; km_vs=1; km_uq=");
                                get_new.addHeader("Cookie",cookies+"; __utmt=1; __utma=143439159.1675929865.1422546011.1422546011.1422546011.1; __utmb=143439159.1.10.1422546011; __utmc=143439159; __utmz=143439159.1422546011.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); is_login=true; sellerId=m2z93iskuj81qiid");
                                get_new.addHeader("Host","seller.flipkart.com");
                    get_new.addHeader("User-agent", "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
                    get_new.addHeader("Connection","keep-alive");
                                
                    response = client.execute(get_new);
                                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                                line = "";
                                
                                line = rd.readLine();
                                
                                
                                JSONObject jsonDataObj = null;
                                JSONArray jsonObjArr = null;
                                
                                if(line == null || line.isEmpty()){
                                        break;
                                }
                                jsonDataObj = new JSONObject(line);
                                
                                totalOrders = Long.parseLong(jsonDataObj.get("total").toString());
                                jsonObjArr = new JSONArray(jsonDataObj.get("order_items").toString());

                                if(jsonObjArr==null || jsonObjArr.length()==0){
                                        break;
                                }
                                
                                if(jsonObjArr!=null && jsonObjArr.length()>0){
                                        //System.out.println(jsonObjArr);
                                        for(int k=0; k< jsonObjArr.length(); k++){
                                                JSONObject jsonObj = null;
                                                jsonObj = jsonObjArr.getJSONObject(k);
                                                
                                                if(!tClient.isAlive()){
                                                        tClient  = transactionServiceClient.getClient();
                                                }
                                                
                                                boolean exists = tClient.flipkartFaOrderExists(jsonObj.getString("external_id"), jsonObj.getString("order_item_id"));
                                                
                                                if(exists){
                                                        existingOrders++;
                                                        continue;
                                                }
                                                
                                                FlipkartAdvantageOrder faOrder = new FlipkartAdvantageOrder();
                                                faOrder.setFkOrderId(jsonObj.getString("external_id"));
                                                faOrder.setFkOrderItemId(jsonObj.getString("order_item_id"));
                                                faOrder.setProductTitle(jsonObj.getString("title"));
                                                faOrder.setCreationTimestamp(gotFlipkartDateFormat.parse(jsonObj.getString("created_date")+" "+jsonObj.getString("created_time")).getTime());
                                                //flipkartItem = new CatalogClient().getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                flipkartItem = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                faOrder.setSku(flipkartItem.getItem_id());
                                                faOrder.setCustomerName(jsonObj.getString("shipping_address_name"));
                                                faOrder.setCustomerAddress(jsonObj.getString("shipping_address_line1"));
                                                faOrder.setPincode(jsonObj.getString("shipping_address_pincode"));
                                                faOrder.setCustomerPhone(jsonObj.getString("phone"));
                                                faOrder.setCustomerCity(jsonObj.getString("shipping_address_city"));
                                                faOrder.setCustomerState(jsonObj.getString("shipping_address_state"));
                                                faOrder.setStatus(jsonObj.getString("status"));
                                                faOrder.setQuantity(Long.parseLong(jsonObj.getString("quantity")));
                                                faOrder.setTotalPrice(Double.parseDouble(jsonObj.getString("total_price")));
                                                faOrder.setListPrice(Double.parseDouble(jsonObj.getString("list_price")));
                                                faOrder.setModifiedDate(gotFlipkartDateFormatSh.parse(jsonObj.getString("modified_date")).getTime());
                                                faOrder.setListingId(jsonObj.getString("listing_id"));
                                                if(jsonObj.getString("cancel_reason")!=null){
                                                        faOrder.setCancelReason(jsonObj.getString("cancel_reason"));
                                                } else {
                                                        faOrder.setCancelReason(" ");
                                                }
                                                if(jsonObj.getString("return_reason")!=null){
                                                        faOrder.setReturnReason(jsonObj.getString("return_reason"));
                                                } else {
                                                        faOrder.setReturnReason(" ");
                                                }
                                                if(jsonObj.getString("freebie")!=null){
                                                        faOrder.setFreebieItemId(jsonObj.getString("freebie"));
                                                } else {
                                                        faOrder.setFreebieItemId(" ");
                                                }
                                                
                                                //System.out.println(faOrder.getFkOrderId());
                                                
                                                if(k%500==0){
                                                        if(!tClient.isAlive()){
                                                                tClient  = transactionServiceClient.getClient();
                                                        }
                                                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                                                        }
                                                        
                                                        faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                                                }
                                                faOrdersAddUpdateList.add(faOrder);
                                        }
                                }
                                i++;
                        }
                        
                        if(!tClient.isAlive()){
                                tClient  = transactionServiceClient.getClient();
                        }
                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                        }
                        
                        processedOrders = totalOrders- existingOrders;
                
                } catch (Exception e) {
                        e.printStackTrace();
                        //sendTo = new String[] {"manish.sharma@shop2020.in"};
                        String emailSubjectTxt = "FA Order Process"+sdf.format(cal.getTime()) +" Some Service Error";
                        try{
                                mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Please check system", emailFromAddress, password, new ArrayList<File>());
                        }catch (Exception e1) {
                                e1.printStackTrace();
                        }
                        return;
                }
                
                //sendTo = new String[] {"manish.sharma@shop2020.in"};
                String emailSubjectTxt = "FA Order Process"+sdf.format(cal.getTime());
                try{
                        mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Total Orders : "+totalOrders+"\n"+"Processed Orders : "+processedOrders+"\n"+"Existing Orders : "+existingOrders, emailFromAddress, password, new ArrayList<File>());
                }catch (Exception e) {
                        e.printStackTrace();
                }
                
                
                faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                processedOrders =0l;
                existingOrders = 0l;
                try{
                        TransactionClient transactionServiceClient = new TransactionClient();
                        in.shop2020.model.v1.order.TransactionService.Client tClient = transactionServiceClient.getClient();
                        
                        List<FlipkartAdvantageOrder> faApprovedOrderList = tClient.getAllFAOrdersList("approved");
                        
                        List<FlipkartAdvantageOrder> faShippedOrderList = tClient.getAllFAOrdersList("shipped");
                        
                        List<FlipkartAdvantageOrder> faAllOrderList = tClient.getAllFAOrdersList("all");
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderIdApprovedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderItemIdApprovedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderIdShippedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderItemIdShippedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderIdAllOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderItemIdAllOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();                  
                        
                        for(FlipkartAdvantageOrder faOrder : faShippedOrderList){
                                fkOrderIdShippedOrdersMap.put(faOrder.getFkOrderId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faShippedOrderList){
                                fkOrderItemIdShippedOrdersMap.put(faOrder.getFkOrderItemId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faApprovedOrderList){
                                fkOrderIdApprovedOrdersMap.put(faOrder.getFkOrderId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faApprovedOrderList){
                                fkOrderItemIdApprovedOrdersMap.put(faOrder.getFkOrderItemId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faAllOrderList){
                                fkOrderIdAllOrdersMap.put(faOrder.getFkOrderId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faAllOrderList){
                                fkOrderItemIdAllOrdersMap.put(faOrder.getFkOrderItemId(), faOrder);
                        }
                        
                        int i=1;
                        while(true){
                                System.out.println("https://seller.flipkart.com/dashboard/som/shipped_order_items?status=delivered&service_profile=fbf&page="+i+"&page_size=50&_="+time);
                                System.out.println(cookies);
                                get_new = new HttpGet("https://seller.flipkart.com/dashboard/som/shipped_order_items?status=delivered&service_profile=fbf&page="+i+"&page_size=50&_="+time);
                                get_new.addHeader("Cookie",cookies+"; __utmt=1; __utma=143439159.1675929865.1422546011.1422546011.1422546011.1; __utmb=143439159.1.10.1422546011; __utmc=143439159; __utmz=143439159.1422546011.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); is_login=true; sellerId=m2z93iskuj81qiid");
                                get_new.addHeader("Host","seller.flipkart.com");
                    get_new.addHeader("User-agent", "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
                    get_new.addHeader("Connection","keep-alive");
                    
                                response = client.execute(get_new);
                                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                                line = "";
                                
                                line = rd.readLine();
                                
                                JSONObject jsonDataObj = null;
                                JSONArray jsonObjArr = null;
                                
                                if(line == null || line.isEmpty()){
                                        break;
                                }
                                jsonDataObj = new JSONObject(line);
                                
                                totalOrders = Long.parseLong(jsonDataObj.get("total").toString());
                                jsonObjArr = new JSONArray(jsonDataObj.get("order_items").toString());
                                if(jsonObjArr==null || jsonObjArr.length()==0){
                                        break;
                                }
                                
                                if(jsonObjArr!=null && jsonObjArr.length()>0){
                                        System.out.println(jsonObjArr);
                                        for(int k=0; k< jsonObjArr.length(); k++){
                                                JSONObject jsonObj = null;
                                                jsonObj = jsonObjArr.getJSONObject(k);                                  
                                                
                                                if(fkOrderIdApprovedOrdersMap.containsKey(jsonObj.getString("external_id")) && fkOrderItemIdApprovedOrdersMap.containsKey(jsonObj.getString("order_item_id"))){
                                                        FlipkartAdvantageOrder faOrder = fkOrderItemIdApprovedOrdersMap.get(jsonObj.getString("order_item_id"));
                                                        if("approved".equalsIgnoreCase(faOrder.getStatus())){
                                                                faOrder.setStatus(jsonObj.getString("status"));
                                                                faOrder.setModifiedDate(gotFlipkartDateFormatSh.parse(jsonObj.getString("modified_date")).getTime());
                                                                faOrdersAddUpdateList.add(faOrder);
                                                                processedOrders++;
                                                        }
                                                } else if(fkOrderIdShippedOrdersMap.containsKey(jsonObj.getString("external_id")) && fkOrderItemIdShippedOrdersMap.containsKey(jsonObj.getString("order_item_id"))){
                                                        existingOrders ++;
                                                        continue;
                                                } else if(fkOrderIdAllOrdersMap.containsKey(jsonObj.getString("external_id")) && fkOrderItemIdAllOrdersMap.containsKey(jsonObj.getString("order_item_id"))){
                                                        existingOrders ++;
                                                        continue;
                                                }
                                                else {                                                  
                                                        FlipkartAdvantageOrder faOrder = new FlipkartAdvantageOrder();
                                                        faOrder.setFkOrderId(jsonObj.getString("external_id"));
                                                        faOrder.setFkOrderItemId(jsonObj.getString("order_item_id"));
                                                        faOrder.setProductTitle(jsonObj.getString("title"));
                                                        faOrder.setCreationTimestamp(gotFlipkartDateFormat.parse(jsonObj.getString("created_date")+" "+jsonObj.getString("created_time")).getTime());
                                                        //flipkartItem = new CatalogClient().getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                        flipkartItem = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                        faOrder.setSku(flipkartItem.getItem_id());
                                                        faOrder.setCustomerName(jsonObj.getString("shipping_address_name"));
                                                        faOrder.setCustomerAddress(jsonObj.getString("shipping_address_line1"));
                                                        faOrder.setPincode(jsonObj.getString("shipping_address_pincode"));
                                                        faOrder.setCustomerPhone(jsonObj.getString("phone"));
                                                        faOrder.setCustomerCity(jsonObj.getString("shipping_address_city"));
                                                        faOrder.setCustomerState(jsonObj.getString("shipping_address_state"));
                                                        faOrder.setStatus(jsonObj.getString("status"));
                                                        faOrder.setQuantity(Long.parseLong(jsonObj.getString("quantity")));
                                                        faOrder.setTotalPrice(Double.parseDouble(jsonObj.getString("total_price")));
                                                        faOrder.setListPrice(Double.parseDouble(jsonObj.getString("list_price")));
                                                        faOrder.setModifiedDate(gotFlipkartDateFormatSh.parse(jsonObj.getString("modified_date")).getTime());
                                                        faOrder.setListingId(jsonObj.getString("listing_id"));
                                                        if(jsonObj.getString("cancel_reason")!=null){
                                                                faOrder.setCancelReason(jsonObj.getString("cancel_reason"));
                                                        } else {
                                                                faOrder.setCancelReason(" ");
                                                        }
                                                        if(jsonObj.getString("return_reason")!=null){
                                                                faOrder.setReturnReason(jsonObj.getString("return_reason"));
                                                        } else {
                                                                faOrder.setReturnReason(" ");
                                                        }
                                                        if(jsonObj.getString("freebie")!=null){
                                                                faOrder.setFreebieItemId(jsonObj.getString("freebie"));
                                                        } else {
                                                                faOrder.setFreebieItemId(" ");
                                                        }
                                                        faOrdersAddUpdateList.add(faOrder);
                                                        
                                                        sbFailedDelOrders.append("Flipkart Order Id : "+ jsonObj.getString("external_id")+ " Flipkart Order Item Id : " +jsonObj.getString("order_item_id")+ "\n");
                                                        failedDelOrders++;
                                                        continue;
                                                }
                                                
                                                if(k%500==0){
                                                        if(!tClient.isAlive()){
                                                                tClient  = transactionServiceClient.getClient();
                                                        }
                                                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                                                        }
                                                        
                                                        faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                                                }
                                        }
                                }
                                i++;
                        }
                        
                        if(!tClient.isAlive()){
                                tClient  = transactionServiceClient.getClient();
                        }
                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                        }
                        
                }
                catch (Exception e) {
                        e.printStackTrace();
                        emailSubjectTxt = "FA Order Shipped Mark Process "+sdf.format(cal.getTime()) +" Some Service Error";
                        try{
                                mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Please check system", emailFromAddress, password, new ArrayList<File>());
                        }catch (Exception e1) {
                                e1.printStackTrace();
                        }
                        return;
                }
                
                emailSubjectTxt = "FA Order Shipped Mark Process "+sdf.format(cal.getTime());
                try{
                        mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Total Orders : "+totalOrders+"\n"+"Processed Orders : "+processedOrders+"\n"+"Already Shipped-Delivered Orders : "+existingOrders+"\n"+"Newly Created Orders : "+failedDelOrders+"\n"+sbFailedDelOrders.toString(), emailFromAddress, password, new ArrayList<File>());
                }catch (Exception e) {
                        e.printStackTrace();
                } 
                
                
                
                faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                processedOrders =0l;
                existingOrders = 0l;
                failedDelOrders = 0l;
                sbFailedDelOrders = new StringBuffer();
                try{
                        TransactionClient transactionServiceClient = new TransactionClient();
                        in.shop2020.model.v1.order.TransactionService.Client tClient = transactionServiceClient.getClient();
                        
                        List<FlipkartAdvantageOrder> faShippedOrderList = tClient.getAllFAOrdersList("shipped");
                        
                        List<FlipkartAdvantageOrder> faDeliveredOrderList = tClient.getAllFAOrdersList("delivered");
                        
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderIdShippedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderItemIdShippedOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderIdDeliveredOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        Map<String, FlipkartAdvantageOrder> fkOrderItemIdDeliveredOrdersMap = new HashMap<String, FlipkartAdvantageOrder>();
                        
                        for(FlipkartAdvantageOrder faOrder : faShippedOrderList){
                                fkOrderIdShippedOrdersMap.put(faOrder.getFkOrderId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faShippedOrderList){
                                fkOrderItemIdShippedOrdersMap.put(faOrder.getFkOrderItemId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faDeliveredOrderList){
                                fkOrderIdDeliveredOrdersMap.put(faOrder.getFkOrderId(), faOrder);
                        }
                        
                        for(FlipkartAdvantageOrder faOrder : faDeliveredOrderList){
                                fkOrderItemIdDeliveredOrdersMap.put(faOrder.getFkOrderItemId(), faOrder);
                        }
                        
                        int i=1;
                        while(true){
                                System.out.println("https://seller.flipkart.com/dashboard/som/shipped_order_items?status=delivered&service_profile=fbf&page="+i+"&page_size=50&_="+time);
                                get_new = new HttpGet("https://seller.flipkart.com/dashboard/som/shipped_order_items?status=delivered&service_profile=fbf&page="+i+"&page_size=50&_="+time);
                                get_new.addHeader("Cookie",cookies+"; __utmt=1; __utma=143439159.1675929865.1422546011.1422546011.1422546011.1; __utmb=143439159.1.10.1422546011; __utmc=143439159; __utmz=143439159.1422546011.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); is_login=true; sellerId=m2z93iskuj81qiid");
                                get_new.addHeader("Host","seller.flipkart.com");
                    get_new.addHeader("User-agent", "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
                    get_new.addHeader("Connection","keep-alive");
                    
                                response = client.execute(get_new);
                                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                                line = "";
                                
                                line = rd.readLine();
                                
                                JSONObject jsonDataObj = null;
                                JSONArray jsonObjArr = null;
                                
                                if(line == null || line.isEmpty()){
                                        break;
                                }
                                jsonDataObj = new JSONObject(line);
                                
                                totalOrders = Long.parseLong(jsonDataObj.get("total").toString());
                                jsonObjArr = new JSONArray(jsonDataObj.get("order_items").toString());
                                if(jsonObjArr==null || jsonObjArr.length()==0){
                                        break;
                                }
                                
                                if(jsonObjArr!=null && jsonObjArr.length()>0){
                                        System.out.println(jsonObjArr);
                                        for(int k=0; k< jsonObjArr.length(); k++){
                                                JSONObject jsonObj = null;
                                                jsonObj = jsonObjArr.getJSONObject(k);                                  
                                                
                                                if(fkOrderIdShippedOrdersMap.containsKey(jsonObj.getString("external_id")) && fkOrderItemIdShippedOrdersMap.containsKey(jsonObj.getString("order_item_id"))){
                                                        FlipkartAdvantageOrder faOrder = fkOrderItemIdShippedOrdersMap.get(jsonObj.getString("order_item_id"));
                                                        if("shipped".equalsIgnoreCase(faOrder.getStatus())){
                                                                faOrder.setStatus(jsonObj.getString("status"));
                                                                faOrder.setModifiedDate(gotFlipkartDateFormatSh.parse(jsonObj.getString("modified_date")).getTime());
                                                                faOrdersAddUpdateList.add(faOrder);
                                                                processedOrders++;
                                                        }
                                                } else if(fkOrderIdDeliveredOrdersMap.containsKey(jsonObj.getString("external_id")) && fkOrderItemIdDeliveredOrdersMap.containsKey(jsonObj.getString("order_item_id"))){
                                                        existingOrders ++;
                                                        continue;
                                                }
                                                else {                                                  
                                                        FlipkartAdvantageOrder faOrder = new FlipkartAdvantageOrder();
                                                        faOrder.setFkOrderId(jsonObj.getString("external_id"));
                                                        faOrder.setFkOrderItemId(jsonObj.getString("order_item_id"));
                                                        faOrder.setProductTitle(jsonObj.getString("title"));
                                                        faOrder.setCreationTimestamp(gotFlipkartDateFormat.parse(jsonObj.getString("created_date")+" "+jsonObj.getString("created_time")).getTime());
                                                        //flipkartItem = new CatalogClient().getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                        flipkartItem = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient().getFlipkartItemBySkyAtFlipkart(jsonObj.getString("sku"));
                                                        faOrder.setSku(flipkartItem.getItem_id());
                                                        faOrder.setCustomerName(jsonObj.getString("shipping_address_name"));
                                                        faOrder.setCustomerAddress(jsonObj.getString("shipping_address_line1"));
                                                        faOrder.setPincode(jsonObj.getString("shipping_address_pincode"));
                                                        faOrder.setCustomerPhone(jsonObj.getString("phone"));
                                                        faOrder.setCustomerCity(jsonObj.getString("shipping_address_city"));
                                                        faOrder.setCustomerState(jsonObj.getString("shipping_address_state"));
                                                        faOrder.setStatus(jsonObj.getString("status"));
                                                        faOrder.setQuantity(Long.parseLong(jsonObj.getString("quantity")));
                                                        faOrder.setTotalPrice(Double.parseDouble(jsonObj.getString("total_price")));
                                                        faOrder.setListPrice(Double.parseDouble(jsonObj.getString("list_price")));
                                                        faOrder.setModifiedDate(gotFlipkartDateFormatSh.parse(jsonObj.getString("modified_date")).getTime());
                                                        faOrder.setListingId(jsonObj.getString("listing_id"));
                                                        if(jsonObj.getString("cancel_reason")!=null){
                                                                faOrder.setCancelReason(jsonObj.getString("cancel_reason"));
                                                        } else {
                                                                faOrder.setCancelReason(" ");
                                                        }
                                                        if(jsonObj.getString("return_reason")!=null){
                                                                faOrder.setReturnReason(jsonObj.getString("return_reason"));
                                                        } else {
                                                                faOrder.setReturnReason(" ");
                                                        }
                                                        if(jsonObj.getString("freebie")!=null){
                                                                faOrder.setFreebieItemId(jsonObj.getString("freebie"));
                                                        } else {
                                                                faOrder.setFreebieItemId(" ");
                                                        }
                                                        faOrdersAddUpdateList.add(faOrder);
                                                        
                                                        sbFailedDelOrders.append("Flipkart Order Id : "+ jsonObj.getString("external_id")+ " Flipkart Order Item Id : " +jsonObj.getString("order_item_id")+ "\n");
                                                        failedDelOrders++;
                                                        continue;
                                                }
                                                
                                                if(k%500==0){
                                                        if(!tClient.isAlive()){
                                                                tClient  = transactionServiceClient.getClient();
                                                        }
                                                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                                                        }
                                                        
                                                        faOrdersAddUpdateList = new ArrayList<FlipkartAdvantageOrder>();
                                                }
                                        }
                                }
                                i++;
                        }
                        
                        if(!tClient.isAlive()){
                                tClient  = transactionServiceClient.getClient();
                        }
                        if(faOrdersAddUpdateList!=null && faOrdersAddUpdateList.size()>0){
                                tClient.addUpdateFaOrdersBulk(faOrdersAddUpdateList);
                        }
                        
                }catch (Exception e) {
                        e.printStackTrace();
                        emailSubjectTxt = "FA Order Delivery Mark Process "+sdf.format(cal.getTime()) +" Some Service Error";
                        try{
                                mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Please check system", emailFromAddress, password, new ArrayList<File>());
                        }catch (Exception e1) {
                                e1.printStackTrace();
                        }
                        return;
                }
                
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
                
                bufferedWriter.write(StringUtils.join(new String[] {"FlipkartFAOrderUpdationDate",sdf.format(new Date())}, '\t'));
                bufferedWriter.close();
                
                emailSubjectTxt = "FA Order Delivery Mark Process "+sdf.format(cal.getTime());
                try{
                        mailer.sendSSLMessage(sendTo, emailSubjectTxt, "Total Orders : "+totalOrders+"\n"+"Processed Orders : "+processedOrders+"\n"+"Already Delivered Orders : "+existingOrders+"\n"+"Newly Created Orders : "+failedDelOrders+"\n"+sbFailedDelOrders.toString(), emailFromAddress, password, new ArrayList<File>());
                }catch (Exception e) {
                        e.printStackTrace();
                } 
        }
}