Subversion Repositories SmartDukaan

Rev

Rev 10072 | Rev 10074 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
10049 vikram.rag 1
package in.shop2020;
2
 
3
import in.shop2020.model.v1.catalog.FlipkartItem;
4
import in.shop2020.model.v1.catalog.Item;
5
import in.shop2020.model.v1.catalog.SnapdealItem;
6
import in.shop2020.model.v1.inventory.FlipkartInventorySnapshot;
7
import in.shop2020.model.v1.inventory.InventoryService.Client;
8
import in.shop2020.thrift.clients.CatalogClient;
9
import in.shop2020.thrift.clients.InventoryClient;
10
import in.shop2020.utils.GmailUtils;
11
 
12
import java.io.BufferedReader;
13
import java.io.FileInputStream;
14
import java.io.FileNotFoundException;
15
import java.io.FileOutputStream;
16
import java.io.IOException;
17
import java.io.InputStream;
18
import java.io.InputStreamReader;
19
import java.io.PrintStream;
20
import java.io.UnsupportedEncodingException;
21
import java.text.SimpleDateFormat;
22
import java.util.ArrayList;
23
import java.util.HashMap;
24
import java.util.List;
25
import java.util.Map;
26
 
27
import javax.mail.MessagingException;
28
 
29
import org.apache.http.HttpResponse;
30
import org.apache.http.NameValuePair;
31
import org.apache.http.client.ClientProtocolException;
32
import org.apache.http.client.HttpClient;
33
import org.apache.http.client.entity.UrlEncodedFormEntity;
34
import org.apache.http.client.methods.HttpGet;
35
import org.apache.http.client.methods.HttpPost;
36
import org.apache.http.impl.client.DefaultHttpClient;
37
import org.apache.http.message.BasicNameValuePair;
38
import org.apache.poi.hssf.usermodel.HSSFSheet;
39
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
40
import org.apache.poi.ss.usermodel.Cell;
41
import org.apache.poi.ss.usermodel.Row;
42
import org.apache.poi.ss.usermodel.Sheet;
43
import org.apache.poi.ss.usermodel.Workbook;
44
import org.apache.thrift.TException;
45
import org.apache.thrift.transport.TTransportException;
46
 
47
 
48
public class FlipkartInventoryReconcillation {
49
 
10061 vikram.rag 50
 
10049 vikram.rag 51
	public static void main(String... args) throws ClientProtocolException, IOException, TException{
52
		SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
53
		String emailFromAddress = "build@shop2020.in";
54
		String password = "cafe@nes";
55
		GmailUtils mailer = new GmailUtils();
56
		String[] sendTo = new String[]{"vikram.raghav@shop2020.in"};
57
		/*String[] sendTo = new String[]{ "sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
58
				"khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
59
				"yukti.jain@shop2020.in","manoj.pal@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in","amar.kumar@shop2020.in"};
60
		*/
10058 vikram.rag 61
		Map<String,Long> itemInventoryMap = FetchInventoryAtFlipkart();
10049 vikram.rag 62
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = new CatalogClient().getClient();
63
		List<FlipkartItem> flipkartItems = catalogClient.getAllFlipkartItems();
10071 vikram.rag 64
		List<Item> aliveItems;
65
		try{
10053 vikram.rag 66
			aliveItems = catalogClient.getAllAliveItems();
67
		}
10066 vikram.rag 68
		catch(Exception e){
10073 vikram.rag 69
			catalogClient = new CatalogClient().getClient();
70
			aliveItems = catalogClient.getAllAliveItems();
10071 vikram.rag 71
		}
10066 vikram.rag 72
		Map<Long,FlipkartItem> flipkartItemsMap = new HashMap<Long,FlipkartItem>();
10049 vikram.rag 73
		Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>();
74
		for(Item item:aliveItems){
75
			aliveItemsMap.put(item.getId(),item);
76
		}
77
		for(FlipkartItem flipkartItem:flipkartItems){
78
			if(flipkartItem.isIsListedOnFlipkart() && !flipkartItem.isSetSuppressInventoryFeed()){
79
				flipkartItemsMap.put(flipkartItem.getItem_id(), flipkartItem);
80
			}
81
		}
82
		Client inventoryServiceClient = new InventoryClient("inventory_service_server_host","inventory_service_server_port").getClient();
83
		List<FlipkartInventorySnapshot> flipkartInventorySnapshot;
84
		try {
85
			flipkartInventorySnapshot = inventoryServiceClient.getFlipkartInventorySnapshot();
86
		} catch (TException e) {
87
			e.printStackTrace();
88
			inventoryServiceClient = new InventoryClient("inventory_service_server_host","inventory_service_server_port").getClient();
89
			flipkartInventorySnapshot = inventoryServiceClient.getFlipkartInventorySnapshot();
90
		}
91
		FlipkartItem flipkartItem;
92
		Long availabilityAtFlipkart = 0L;
93
		Item item;
94
		String tableHeader = "<html><table border=\"1\" align=\"center\"><tr>" 
95
			+ "<td><b>" + "Product Name" +"</b></td>"
96
			+"<td><b>" + "Item ID" + "</b></td>"
97
			+"<td><b>" + "Inventory Sent" + "</b></td>"
98
			+"<td><b>" + "Inventory Updated" + "</b></td>"
99
			+"<td><b>" + "Orders Added" + "</b></td>"
100
			+"<td><b>" + "Order Held" + "</b></td>"
101
			+"<td><b>" + "Difference" + "</b></td>"
102
			+"</tr>";
103
		String tableFooter = "</table></html>";
104
		StringBuffer reconcilledItems = new StringBuffer();
105
		for(FlipkartInventorySnapshot snapshot:flipkartInventorySnapshot){
106
			System.out.println("Item ID " + snapshot.getItem_id());
107
			System.out.println("Sent Inventory " + snapshot.getAvailability());
108
			System.out.println("Held Orders " + snapshot.getHeldOrders());
109
			System.out.println("Created Orders " + snapshot.getCreatedOrders());
110
			flipkartItem = flipkartItemsMap.get(snapshot.getItem_id());
111
			availabilityAtFlipkart = itemInventoryMap.get(flipkartItem.getSkuAtFlipkart());
112
			item = aliveItemsMap.get(snapshot.getItem_id());
113
			snapshot.getItem_id();
114
			snapshot.getAvailability();
115
			snapshot.getCreatedOrders();
116
			snapshot.getHeldOrders();
117
			if(snapshot.getAvailability() - snapshot.getCreatedOrders() - snapshot.getHeldOrders() !=0){
118
			reconcilledItems .append("<tr>" 
119
					+ "<td>" +getProductName(item)+"</td>"
120
					+"<td>" + snapshot.getItem_id() + "</td>"
121
					+"<td>" + snapshot.getAvailability() + "</td>"
122
					+"<td>" + availabilityAtFlipkart + "</td>"
123
					+"<td>" + snapshot.getCreatedOrders() + "</td>"
124
					+"<td>" + snapshot.getHeldOrders() + "</td>"
125
					+"<td>" + (snapshot.getAvailability() - snapshot.getCreatedOrders() - snapshot.getHeldOrders()) + "</td>"
126
					+"</tr>");
127
			}
128
		}
129
		String text = tableHeader+reconcilledItems.toString()+tableFooter;
130
		try {
131
			mailer.sendSSLMessage(sendTo,"Flipkart Inventory Reconcillation ", emailFromAddress, password, text);
132
		} catch (MessagingException e) {
133
			e.printStackTrace();
134
		}
135
	}
10058 vikram.rag 136
	public static Map<String, Long> FetchInventoryAtFlipkart() throws ClientProtocolException, IOException{
137
		Map<String,Long> itemInventoryMap = new HashMap<String,Long>();
10049 vikram.rag 138
		HttpClient client = new DefaultHttpClient();
139
		HttpPost post = new HttpPost("https://seller.flipkart.com/login");
140
		BufferedReader rd= null;
141
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
142
		nameValuePairs.add(new BasicNameValuePair("authName",
143
		"flipkart"));
144
		nameValuePairs.add(new BasicNameValuePair("username",
145
		"flipkart-support@saholic.com"));
146
		nameValuePairs.add(new BasicNameValuePair("password",
147
		"076c27ee24d7596b06608a8ed2559f87"));
148
		post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
149
		HttpResponse response = client.execute(post);
150
		rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
151
		String line ="";
152
		while ((line  = rd.readLine()) != null) {
153
			//System.out.println(line);
154
		}
155
		HttpGet get = new HttpGet("https://seller.flipkart.com/sellerListing/listing/downloadTemplateForExistingProducts?category=Mobiles+%26+Cameras&sellerId=m2z93iskuj81qiid&feedType=PRICING_STOCK&useDefaultTemplate=false");
156
		response = client.execute(get);
157
		InputStream in = response.getEntity().getContent();
158
		Workbook wb = new HSSFWorkbook(in);
159
		Sheet sheet = wb.getSheetAt(0);
160
		Row firstRow = sheet.getRow(0);
161
		Row SecondRow = sheet.getRow(1);
162
		for (Row row : sheet) {
163
			if(row.equals(firstRow) || row.equals(SecondRow))
164
				continue;
165
			row.getCell(6).setCellType(Cell.CELL_TYPE_STRING);
166
			row.getCell(15).setCellType(Cell.CELL_TYPE_STRING);
167
			System.out.println("SKU " + row.getCell(6).getStringCellValue() + " " + "Quantity "+ row.getCell(15).getStringCellValue());
168
			if(!row.getCell(15).getStringCellValue().equals("")){
10058 vikram.rag 169
				itemInventoryMap.put(row.getCell(6).getStringCellValue(), Long.parseLong(row.getCell(15).getStringCellValue()));
10049 vikram.rag 170
			}
171
			else{
10058 vikram.rag 172
				itemInventoryMap.put(row.getCell(6).getStringCellValue(),0L);
10049 vikram.rag 173
			}
174
		}
175
		return itemInventoryMap;
176
	}
177
	static String getProductName(Item item){
178
		return getName(item.getBrand())+" " + getName(item.getModelName())+" " + getName(item.getModelNumber())+" " + getName(item.getColor()); 
179
 
180
	}
181
	static String getName(String name){
182
		if(name==null || name.length()==0){
183
			return "";
184
		}
185
		else{
186
			return name;
187
		}
188
	}
189
 
190
 
191
}