Subversion Repositories SmartDukaan

Rev

Rev 21087 | Rev 25950 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 21087 Rev 23813
Line 1... Line 1...
1
package in.shop2020.support.controllers;
1
package in.shop2020.support.controllers;
2
 
2
 
3
import in.shop2020.model.v1.order.LineItem;
-
 
4
import in.shop2020.model.v1.order.Order;
-
 
5
import in.shop2020.model.v1.order.OrderStatus;
-
 
6
import in.shop2020.model.v1.order.TransactionServiceException;
-
 
7
import in.shop2020.support.utils.ReportsUtils;
-
 
8
import in.shop2020.thrift.clients.PaymentClient;
-
 
9
import in.shop2020.thrift.clients.TransactionClient;
-
 
10
import in.shop2020.thrift.clients.UserClient;
-
 
11
 
-
 
12
import java.io.InputStream;
3
import java.io.InputStream;
13
import java.text.DateFormat;
4
import java.text.DateFormat;
14
import java.text.SimpleDateFormat;
5
import java.text.SimpleDateFormat;
15
import java.util.ArrayList;
6
import java.util.ArrayList;
16
import java.util.Calendar;
7
import java.util.Calendar;
17
import java.util.Date;
8
import java.util.Date;
-
 
9
import java.util.HashMap;
18
import java.util.List;
10
import java.util.List;
-
 
11
import java.util.Map;
19
 
12
 
20
import javax.servlet.ServletContext;
13
import javax.servlet.ServletContext;
21
import javax.servlet.ServletOutputStream;
14
import javax.servlet.ServletOutputStream;
22
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletRequest;
23
import javax.servlet.http.HttpServletResponse;
16
import javax.servlet.http.HttpServletResponse;
Line 41... Line 34...
41
import org.slf4j.Logger;
34
import org.slf4j.Logger;
42
import org.slf4j.LoggerFactory;
35
import org.slf4j.LoggerFactory;
43
 
36
 
44
import com.opensymphony.xwork2.ActionSupport;
37
import com.opensymphony.xwork2.ActionSupport;
45
 
38
 
-
 
39
import in.shop2020.model.v1.order.LineItem;
-
 
40
import in.shop2020.model.v1.order.Order;
-
 
41
import in.shop2020.model.v1.order.OrderStatus;
-
 
42
import in.shop2020.model.v1.order.TransactionServiceException;
-
 
43
import in.shop2020.model.v1.user.UserContextService.Client;
-
 
44
import in.shop2020.support.utils.ReportsUtils;
-
 
45
import in.shop2020.thrift.clients.PaymentClient;
-
 
46
import in.shop2020.thrift.clients.TransactionClient;
-
 
47
import in.shop2020.thrift.clients.UserClient;
-
 
48
 
46
@InterceptorRefs({ @InterceptorRef("defaultStack"), @InterceptorRef("login") })
49
@InterceptorRefs({ @InterceptorRef("defaultStack"), @InterceptorRef("login") })
47
@Results({ @Result(name = "authfail", type = "redirectAction", params = {
50
@Results({ @Result(name = "authfail", type = "redirectAction", params = { "actionName", "reports" }) })
48
		"actionName", "reports" })
-
 
49
})
-
 
50
public class StatisticsController implements ServletRequestAware, ServletResponseAware,
51
public class StatisticsController implements ServletRequestAware, ServletResponseAware, ServletContextAware {
51
		ServletContextAware {
-
 
52
 
52
 
53
	private static Logger logger = LoggerFactory
53
	private static Logger logger = LoggerFactory.getLogger(StatisticsController.class);
54
			.getLogger(StatisticsController.class);
-
 
55
	
-
 
56
 
54
 
57
	private HttpServletResponse response;
55
	private HttpServletResponse response;
58
	private String type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
56
	private String type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
59
 
57
 
60
	public String getType() {
58
	public String getType() {
61
		return type;
59
		return type;
62
	}
60
	}
63
 
61
 
Line 82... Line 80...
82
	private in.shop2020.model.v1.order.TransactionService.Client tClient;
80
	private in.shop2020.model.v1.order.TransactionService.Client tClient;
83
 
81
 
84
	private PaymentClient psc;
82
	private PaymentClient psc;
85
	private in.shop2020.payments.PaymentService.Client pClient;
83
	private in.shop2020.payments.PaymentService.Client pClient;
86
 
84
 
87
	private final DateFormat formatter = new SimpleDateFormat(
85
	private final DateFormat formatter = new SimpleDateFormat("EEE, dd-MMM-yyyy hh:mm a");
88
			"EEE, dd-MMM-yyyy hh:mm a");
-
 
89
 
86
 
90
	public StatisticsController() {
87
	public StatisticsController() {
91
		try {
88
		try {
92
 
89
 
93
			tsc = new TransactionClient();
90
			tsc = new TransactionClient();
94
			tClient = tsc.getClient();
91
			tClient = tsc.getClient();
95
 
92
 
96
			psc = new PaymentClient();
93
			psc = new PaymentClient();
97
			pClient = psc.getClient();
94
			pClient = psc.getClient();
98
		} catch (Exception e) {
95
		} catch (Exception e) {
99
			logger.error(
-
 
100
					"Error connecting to one of the user, order or payment service",
96
			logger.error("Error connecting to one of the user, order or payment service", e);
101
					e);
-
 
102
		}
97
		}
103
	}
98
	}
104
 
99
 
105
	public String index() {
100
	public String index() {
106
		if (!ReportsUtils.canAccessReport(
-
 
107
				(Long) session.getAttribute(ReportsUtils.ROLE),
101
		if (!ReportsUtils.canAccessReport((Long) session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
108
				request.getServletPath())) {
-
 
109
			return "authfail";
102
			return "authfail";
110
		}
103
		}
111
		getStats();
104
		getStats();
112
		return "authsuccess";
105
		return "authsuccess";
113
 
106
 
Line 177... Line 170...
177
 
170
 
178
	public List<Order> getValidOrders() {
171
	public List<Order> getValidOrders() {
179
		return validOrders;
172
		return validOrders;
180
	}
173
	}
181
 
174
 
182
	public LineItem getItem(Order order) throws TransactionServiceException,
175
	public LineItem getItem(Order order) throws TransactionServiceException, TException {
183
			TException {
-
 
184
		LineItem lItem = order.getLineitems().get(0);
176
		LineItem lItem = order.getLineitems().get(0);
185
		return lItem;
177
		return lItem;
186
	}
178
	}
187
 
179
 
188
	public String getOrderStatusString(OrderStatus status) {
180
	public String getOrderStatusString(OrderStatus status) {
Line 217... Line 209...
217
	public int getQuantity() {
209
	public int getQuantity() {
218
		return quantity;
210
		return quantity;
219
	}
211
	}
220
 
212
 
221
	public String download() throws Exception {
213
	public String download() throws Exception {
-
 
214
		Client uc = new UserClient().getClient();
222
		InputStream is = getClass().getClassLoader().getResourceAsStream("orderformat.xlsx");
215
		InputStream is = getClass().getClassLoader().getResourceAsStream("orderformat.xlsx");
223
		XSSFWorkbook workBook = new XSSFWorkbook(is);
216
		XSSFWorkbook workBook = new XSSFWorkbook(is);
224
		XSSFDataFormat df1 = workBook.createDataFormat();
217
		XSSFDataFormat df1 = workBook.createDataFormat();
225
		CellStyle cs = workBook.createCellStyle();
218
		CellStyle cs = workBook.createCellStyle();
226
		cs.setDataFormat(df1.getFormat("dd-mm-yy HH:mm"));
219
		cs.setDataFormat(df1.getFormat("dd-mm-yy HH:mm"));
227
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
220
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
228
		Sheet sheet = workBook.getSheetAt(0);
221
		Sheet sheet = workBook.getSheetAt(0);
229
		workBook.setSheetName(0, this.getMy());
222
		workBook.setSheetName(0, this.getMy());
230
		DateFormat df = new SimpleDateFormat("MMM, yyyy");
223
		DateFormat df = new SimpleDateFormat("MMM, yyyy");
231
		Date fromDate = df.parse(this.getMy());
224
		Date fromDate = df.parse(this.getMy());
232
 
-
 
-
 
225
		Map<Long, Boolean> isFofo = new HashMap<Long, Boolean>();
233
		Calendar toDateCal = Calendar.getInstance();
226
		Calendar toDateCal = Calendar.getInstance();
234
		toDateCal.add(Calendar.MONTH, 1);
227
		toDateCal.add(Calendar.MONTH, 1);
235
		List<Order> orders = tClient.getAllOrders(new ArrayList<OrderStatus>(), fromDate.getTime(), toDateCal.getTime().getTime(), 0);
228
		List<Order> orders = tClient.getAllOrders(new ArrayList<OrderStatus>(), fromDate.getTime(),
-
 
229
				toDateCal.getTime().getTime(), 0);
236
		int rowNum=2;
230
		int rowNum = 2;
237
		for(Order o : orders){
231
		for (Order o : orders) {
238
			Row row = sheet.createRow(rowNum);
232
			Row row = sheet.createRow(rowNum);
239
			int i=0;
233
			int i = 0;
240
			row.createCell(i++).setCellValue(o.getId());
234
			row.createCell(i++).setCellValue(o.getId());
241
			Cell created  = row.createCell(i++);
235
			Cell created = row.createCell(i++);
242
			created.setCellValue(new Date(o.getCreated_timestamp()));
236
			created.setCellValue(new Date(o.getCreated_timestamp()));
243
			created.setCellStyle(cs);
237
			created.setCellStyle(cs);
244
			
238
 
245
			i++;
239
			i++;
246
			if(o.getVerification_timestamp()>0){
240
			if (o.getVerification_timestamp() > 0) {
247
				Cell verified  = row.createCell(i++);
241
				Cell verified = row.createCell(i++);
248
				verified.setCellValue(new Date(o.getVerification_timestamp()));
242
				verified.setCellValue(new Date(o.getVerification_timestamp()));
249
				verified.setCellStyle(cs);
243
				verified.setCellStyle(cs);
250
			} else {
244
			} else {
251
				i++;
245
				i++;
252
			}
246
			}
253
			i++;
247
			i++;
254
			
248
 
255
			row.createCell(i++).setCellValue(o.getInvoice_number());
249
			row.createCell(i++).setCellValue(o.getInvoice_number());
256
			row.createCell(i++).setCellValue(o.getBilled_by());
250
			row.createCell(i++).setCellValue(o.getBilled_by());
257
			i++;
251
			i++;
258
			if(o.getBilling_timestamp()>0){
252
			if (o.getBilling_timestamp() > 0) {
259
				Cell billed  = row.createCell(i++);
253
				Cell billed = row.createCell(i++);
260
				billed.setCellValue(new Date(o.getBilling_timestamp()));
254
				billed.setCellValue(new Date(o.getBilling_timestamp()));
261
				billed.setCellStyle(cs);
255
				billed.setCellStyle(cs);
262
			} else {
256
			} else {
263
				i++;
257
				i++;
264
			}
258
			}
265
			if(o.getShipping_timestamp()>0) {
259
			if (o.getShipping_timestamp() > 0) {
266
				Cell shipped  = row.createCell(i++);
260
				Cell shipped = row.createCell(i++);
267
				shipped.setCellValue(new Date(o.getShipping_timestamp()));
261
				shipped.setCellValue(new Date(o.getShipping_timestamp()));
268
				shipped.setCellStyle(cs);
262
				shipped.setCellStyle(cs);
269
			} else {
263
			} else {
270
				i++;
264
				i++;
271
			}
265
			}
272
			row.createCell(i++).setCellValue(o.getAirwaybill_no());
266
			row.createCell(i++).setCellValue(o.getAirwaybill_no());
273
			row.createCell(i++).setCellValue(o.getLogistics_provider_id());
267
			row.createCell(i++).setCellValue(o.getLogistics_provider_id());
274
			i++;
268
			i++;
275
			if(o.getDelivery_timestamp()>0){
269
			if (o.getDelivery_timestamp() > 0) {
276
				Cell delivered  = row.createCell(i++);
270
				Cell delivered = row.createCell(i++);
277
				delivered.setCellValue(new Date(o.getDelivery_timestamp()));
271
				delivered.setCellValue(new Date(o.getDelivery_timestamp()));
278
				delivered.setCellStyle(cs);
272
				delivered.setCellStyle(cs);
279
			} else {
273
			} else {
280
				i++;
274
				i++;
281
			}
275
			}
282
			row.createCell(i++).setCellValue(o.getLineitems().get(0).getQuantity());
276
			row.createCell(i++).setCellValue(o.getLineitems().get(0).getQuantity());
283
			row.createCell(i++).setCellValue(o.getTotal_amount() + o.getShippingCost());
277
			row.createCell(i++).setCellValue(o.getTotal_amount() + o.getShippingCost());
284
			if(o.getStatus().equals(OrderStatus.DELIVERY_SUCCESS)) {
278
			if (o.getStatus().equals(OrderStatus.DELIVERY_SUCCESS)) {
285
				row.createCell(i++).setCellValue(o.getTotal_amount() + o.getShippingCost());
279
				row.createCell(i++).setCellValue(o.getTotal_amount() + o.getShippingCost());
286
			}else {
280
			} else {
287
				i++;
281
				i++;
288
			}
282
			}
289
			if(o.isCod()) {
283
			if (o.isCod()) {
290
				row.createCell(i++).setCellValue("COD");
284
				row.createCell(i++).setCellValue("COD");
291
			} else {
285
			} else {
292
				row.createCell(i++).setCellValue("PREPAID");
286
				row.createCell(i++).setCellValue("PREPAID");
293
			}
287
			}
294
			row.createCell(i++).setCellValue(o.getStatus().getDescription());
288
			row.createCell(i++).setCellValue(o.getStatus().getDescription());
Line 297... Line 291...
297
			row.createCell(i++).setCellValue(o.getCustomer_city());
291
			row.createCell(i++).setCellValue(o.getCustomer_city());
298
			row.createCell(i++).setCellValue(o.getCustomer_pincode());
292
			row.createCell(i++).setCellValue(o.getCustomer_pincode());
299
			row.createCell(i++).setCellValue(o.getCustomer_state());
293
			row.createCell(i++).setCellValue(o.getCustomer_state());
300
			row.createCell(i++).setCellValue(o.getLineitems().get(0).getItem_id());
294
			row.createCell(i++).setCellValue(o.getLineitems().get(0).getItem_id());
301
			LineItem lineItem = o.getLineitems().get(0);
295
			LineItem lineItem = o.getLineitems().get(0);
302
			row.createCell(i++).setCellValue((lineItem.getBrand() +  " " + getValidName(lineItem.getModel_name()) +" " + getValidName(lineItem.getModel_number()).replaceAll("  ", " ")));
296
			row.createCell(i++).setCellValue((lineItem.getBrand() + " " + getValidName(lineItem.getModel_name()) + " "
-
 
297
					+ getValidName(lineItem.getModel_number()).replaceAll("  ", " ")));
303
			row.createCell(i++).setCellValue(lineItem.getColor());
298
			row.createCell(i++).setCellValue(lineItem.getColor());
304
			row.createCell(i++).setCellValue(o.getLogisticsTransactionId());
299
			row.createCell(i++).setCellValue(o.getLogisticsTransactionId());
-
 
300
			row.createCell(i++).setCellValue(o.getLogisticsTransactionId());
-
 
301
			if (!isFofo.containsKey(o.getCustomer_id())) {
-
 
302
				try {
-
 
303
					uc = new UserClient().getClient();
-
 
304
					isFofo.put(o.getCustomer_id(), uc.getPrivateDealUser(o.getCustomer_id()).getIsFofo() == 1);
-
 
305
				} catch (Exception e) {
-
 
306
					uc = new UserClient().getClient();
-
 
307
					isFofo.put(o.getCustomer_id(), uc.getPrivateDealUser(o.getCustomer_id()).getIsFofo() == 1);
-
 
308
				}
-
 
309
			}
-
 
310
			row.createCell(i++).setCellValue(isFofo.get(o.getCustomer_id()));
-
 
311
 
305
			rowNum++;
312
			rowNum++;
306
		}
313
		}
307
		ServletOutputStream os = response.getOutputStream();
314
		ServletOutputStream os = response.getOutputStream();
308
		workBook.write(bos);
315
		workBook.write(bos);
309
		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
316
		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
310
		String filename=this.getMy() + "-order.xlsx";
317
		String filename = this.getMy() + "-order.xlsx";
311
		response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
318
		response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
312
		bos.writeTo(os);
319
		bos.writeTo(os);
313
		os.flush();
320
		os.flush();
314
 
321
 
315
		
-
 
316
		return ActionSupport.NONE;
322
		return ActionSupport.NONE;
317
	}
323
	}
318
 
324
 
319
	public void setMy(String my) {
325
	public void setMy(String my) {
320
		this.my = my;
326
		this.my = my;
Line 325... Line 331...
325
	}
331
	}
326
 
332
 
327
	@Override
333
	@Override
328
	public void setServletResponse(HttpServletResponse arg0) {
334
	public void setServletResponse(HttpServletResponse arg0) {
329
		this.response = arg0;
335
		this.response = arg0;
-
 
336
 
330
		
337
	}
-
 
338
 
-
 
339
	private String getValidName(String name) {
-
 
340
		return name != null ? name : "";
331
	}
341
	}
332
	
-
 
333
	private String getValidName(String name){
-
 
334
        return name!=null?name:"";
-
 
335
    }
-
 
336
}
342
}