Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
4801 anupam.sin 1
package in.shop2020.support.controllers;
2
 
3
import java.io.ByteArrayOutputStream;
4
import java.io.IOException;
5
import java.text.DateFormat;
6
import java.text.ParseException;
7
import java.text.SimpleDateFormat;
8
import java.util.ArrayList;
9
import java.util.Calendar;
10
import java.util.Date;
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
import java.util.SortedSet;
15
import java.util.TimeZone;
16
 
17
import javax.servlet.ServletOutputStream;
18
import javax.servlet.http.HttpServletRequest;
19
import javax.servlet.http.HttpServletResponse;
20
import javax.servlet.http.HttpSession;
21
 
22
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
23
import org.apache.poi.ss.usermodel.Cell;
24
import org.apache.poi.ss.usermodel.CellStyle;
25
import org.apache.poi.ss.usermodel.CreationHelper;
26
import org.apache.poi.ss.usermodel.Font;
27
import org.apache.poi.ss.usermodel.Row;
28
import org.apache.poi.ss.usermodel.Sheet;
29
import org.apache.poi.ss.usermodel.Workbook;
30
import org.apache.poi.ss.util.CellRangeAddress;
31
import org.apache.struts2.interceptor.ServletRequestAware;
32
import org.apache.struts2.interceptor.ServletResponseAware;
33
import org.apache.thrift.TException;
34
import org.apache.thrift.transport.TTransportException;
35
import org.slf4j.Logger;
36
import org.slf4j.LoggerFactory;
37
 
38
import in.shop2020.logistics.LogisticsServiceException;
39
import in.shop2020.logistics.Provider;
5354 anupam.sin 40
import in.shop2020.model.v1.order.LineItem;
4801 anupam.sin 41
import in.shop2020.model.v1.order.Order;
42
import in.shop2020.model.v1.order.OrderStatus;
43
import in.shop2020.model.v1.order.TransactionServiceException;
44
import in.shop2020.support.utils.ReportsUtils;
45
import in.shop2020.thrift.clients.LogisticsClient;
46
import in.shop2020.thrift.clients.TransactionClient;
47
 
48
public class CourierPerformanceController implements ServletRequestAware, ServletResponseAware {
49
 
50
    private List<OrderStatus> rtoStatuses;
51
    private List<Order> orders;
52
 
53
    private static Logger log = LoggerFactory.getLogger(CourierPerformanceController.class);
54
 
55
    private HttpServletResponse response;
56
    private HttpServletRequest request;
57
    private HttpSession session;
58
    private String errorMsg;
59
    private Date startDate;
60
    private Date endDate;
61
    private Map<Long, String> logisticProviderMap;
62
 
63
    public CourierPerformanceController() {
64
        rtoStatuses = new ArrayList<OrderStatus>();
65
        rtoStatuses.add(OrderStatus.RTO_IN_TRANSIT);
66
        rtoStatuses.add(OrderStatus.RTO_RECEIVED_PRESTINE);
67
        rtoStatuses.add(OrderStatus.RTO_RESHIPPED);
68
        rtoStatuses.add(OrderStatus.RTO_REFUNDED);
69
        rtoStatuses.add(OrderStatus.RTO_RECEIVED_DAMAGED);
70
        rtoStatuses.add(OrderStatus.RTO_LOST_IN_TRANSIT);
71
        rtoStatuses.add(OrderStatus.RTO_DAMAGED_RESHIPPED);
72
        rtoStatuses.add(OrderStatus.RTO_DAMAGED_REFUNDED);
73
        rtoStatuses.add(OrderStatus.RTO_LOST_IN_TRANSIT_RESHIPPED);
74
        rtoStatuses.add(OrderStatus.RTO_LOST_IN_TRANSIT_REFUNDED);
75
        rtoStatuses.add(OrderStatus.RTO_INVENTORY_REVERSED);
76
    }
77
 
78
    public String index() {
79
        log.info(request.getServletPath());
80
        if (!ReportsUtils.canAccessReport(
81
                (Long) session.getAttribute(ReportsUtils.ROLE),
82
                request.getServletPath())) 
83
        {
84
            return "authfail";
85
        }
86
        return "index";
87
    }
88
 
89
    public String create() {
90
        try {
91
            logisticProviderMap = new HashMap<Long, String>();
92
            LogisticsClient lc = new LogisticsClient();
93
            List<Provider> providers = lc.getClient().getAllProviders();    
94
            for (Provider provider : providers) {
95
                logisticProviderMap.put(provider.getId(), provider.getName());
96
            }
97
 
98
            String startDateStr = request.getParameter("startDate");
99
            String endDateStr = request.getParameter("endDate");
100
 
101
            DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
102
            df.setTimeZone(TimeZone.getTimeZone("IST"));
103
            try {
104
                startDate = df.parse(startDateStr);
105
                endDate = df.parse(endDateStr);
106
                //Calendar cal = Calendar.getInstance();
107
                //cal.setTime(endDate);
108
                //endDate.setTime(cal.getTimeInMillis());
109
            } catch (ParseException pe) {
110
                errorMsg = "Please enter start and end dates in format MM/dd/yyyy";
111
                return "index";
112
            }
113
 
114
            response.setContentType("application/vnd.ms-excel");
115
 
116
            response.setHeader("Content-disposition", "inline; filename=" + "courier-performance-report" + ".xls");
117
 
118
            ServletOutputStream sos;
119
            try {
120
                ByteArrayOutputStream baos = getSpreadSheetData();
121
                sos = response.getOutputStream();
122
                baos.writeTo(sos);
123
                sos.flush();
124
            } catch (IOException e) {
125
                log.error("Unable to stream the courier performance report", e);
126
                errorMsg = "Failed to write to response.";
127
            }
128
        } catch (TTransportException e) {
129
            // TODO Auto-generated catch block
130
            e.printStackTrace();
131
        } catch (TException e) {
132
            // TODO Auto-generated catch block
133
            e.printStackTrace();
134
        } catch (LogisticsServiceException e) {
135
            // TODO Auto-generated catch block
136
            e.printStackTrace();
137
        }
138
        return "index";
139
    }
140
 
141
    private ByteArrayOutputStream getSpreadSheetData() {
142
        ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
143
 
144
        Workbook wb = new HSSFWorkbook();
145
 
146
        Font font = wb.createFont();
147
        font.setBoldweight(Font.BOLDWEIGHT_BOLD);
148
        CellStyle style = wb.createCellStyle();
149
        style.setFont(font);
150
 
151
        CreationHelper createHelper = wb.getCreationHelper();
152
        CellStyle dateCellStyle = wb.createCellStyle();
153
        dateCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("DD/MM/YYYY"));
154
 
155
        createRtoSheet(wb, style, dateCellStyle);
156
        createDeliveredSheet(wb, style, dateCellStyle);
157
 
158
        // Write the workbook to the output stream
159
        try {
160
            wb.write(baosXLS);
161
            baosXLS.close();
162
        } catch (IOException e) {
163
            log.error("Unable to get the byte array for the affiliate report", e);
164
        }       
165
        return baosXLS;
166
    }
167
 
168
    private void createRtoSheet(Workbook wb, 
169
                                       CellStyle style,
170
                                       CellStyle dateCellStyle) {
171
        // Summary SHEET
172
        Sheet sheet1 = wb.createSheet("RTO");
173
        short affSerialNo = 0;
174
 
175
        DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
176
 
177
        Row affTitleRow = sheet1.createRow(affSerialNo ++);
178
        Cell affTitleCell = affTitleRow.createCell(0);
179
        affTitleCell.setCellValue("Courier Performance Report : RTO Orders");
180
        affTitleCell.setCellStyle(style);
181
        sheet1.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
182
 
183
        sheet1.createRow(affSerialNo ++);
184
 
185
        Row affDateRangeRow = sheet1.createRow(affSerialNo ++);
186
        Cell affDateRangeCell = affDateRangeRow.createCell(0);
187
        affDateRangeCell.setCellValue("Date Range : " + df.format(startDate) + " - " + df.format(endDate));
188
        affDateRangeCell.setCellStyle(style);
189
        sheet1.addMergedRegion(new CellRangeAddress(3, 3, 0, 6));
190
 
191
        sheet1.createRow(affSerialNo ++);sheet1.createRow(affSerialNo ++);
192
 
193
        Row affHeaderRow = sheet1.createRow(affSerialNo++);
5428 anupam.sin 194
 
4801 anupam.sin 195
        affHeaderRow.createCell(0).setCellValue("Order Id");
196
        affHeaderRow.createCell(1).setCellValue("Payment Type");
5428 anupam.sin 197
        affHeaderRow.createCell(2).setCellValue("Product Name");
198
        affHeaderRow.createCell(3).setCellValue("AWB");
199
        affHeaderRow.createCell(4).setCellValue("Pincode");
200
        affHeaderRow.createCell(5).setCellValue("City");
201
        affHeaderRow.createCell(6).setCellValue("Logistics Provider");
202
        affHeaderRow.createCell(7).setCellValue("Order Created Date");
203
        affHeaderRow.createCell(8).setCellValue("Promised Shipping Date");
204
        affHeaderRow.createCell(9).setCellValue("Shipping Date");
205
        affHeaderRow.createCell(10).setCellValue("First Delivery Attempt");
5354 anupam.sin 206
        affHeaderRow.createCell(11).setCellValue("Promised Delivery Date");
5428 anupam.sin 207
        affHeaderRow.createCell(12).setCellValue("Expected Delivery Date");
208
        affHeaderRow.createCell(13).setCellValue("RTO Declare date");
5354 anupam.sin 209
        affHeaderRow.createCell(14).setCellValue("Return Receive Date");
5428 anupam.sin 210
        affHeaderRow.createCell(15).setCellValue("RTO Refund Date");
211
        affHeaderRow.createCell(16).setCellValue("RTO Reship Date");
5354 anupam.sin 212
 
5428 anupam.sin 213
        affHeaderRow.createCell(17).setCellValue("Shipping to Return Time");
214
        affHeaderRow.createCell(18).setCellValue("First Attempt Delay");
215
 
216
        for (int i=0; i<19 ;i++) {
4801 anupam.sin 217
            affHeaderRow.getCell(i).setCellStyle(style);
218
        }
219
 
220
        try {
221
            TransactionClient tc = new TransactionClient();
222
            orders = tc.getClient().getAllOrders(rtoStatuses, startDate.getTime(), endDate.getTime(), 0);
223
        } catch (TransactionServiceException e) {
224
            // TODO Auto-generated catch block
225
            e.printStackTrace();
226
        } catch (TException e) {
227
            // TODO Auto-generated catch block
228
            e.printStackTrace();
229
        }
230
 
231
        for(Order order : orders) {
232
            long diffDays = -99;
233
            affSerialNo++;
234
            Row commContentRow = sheet1.createRow(affSerialNo);
5428 anupam.sin 235
 
4801 anupam.sin 236
            commContentRow.createCell(0).setCellValue(order.getId());
237
            commContentRow.createCell(1).setCellValue(order.isCod() ? "COD" : "PREPAID");
5428 anupam.sin 238
 
239
            List<LineItem> items = order.getLineitems();
240
            String product = items.get(0).getBrand() + " " + items.get(0).getModel_name() + " " + items.get(0).getModel_number();
241
            commContentRow.createCell(2).setCellValue(product);
242
 
243
            commContentRow.createCell(3).setCellValue(order.getAirwaybill_no());
244
            commContentRow.createCell(4).setCellValue(order.getCustomer_pincode());
245
            commContentRow.createCell(5).setCellValue(order.getCustomer_city());
246
            commContentRow.createCell(6).setCellValue(logisticProviderMap.get(order.getLogistics_provider_id()));
247
 
248
            commContentRow.createCell(7).setCellValue(new Date(order.getCreated_timestamp()));
4801 anupam.sin 249
            commContentRow.getCell(7).setCellStyle(dateCellStyle);
5354 anupam.sin 250
 
5428 anupam.sin 251
            commContentRow.createCell(8).setCellValue(new Date(order.getPromised_shipping_time()));
252
            commContentRow.getCell(8).setCellStyle(dateCellStyle);
253
 
254
            commContentRow.createCell(9).setCellValue(new Date(order.getShipping_timestamp()));
4801 anupam.sin 255
            commContentRow.getCell(9).setCellStyle(dateCellStyle);
5354 anupam.sin 256
 
257
            if (order.getFirst_attempt_timestamp() != 0) {
5428 anupam.sin 258
                commContentRow.createCell(10).setCellValue(new Date(order.getFirst_attempt_timestamp()));
259
                commContentRow.getCell(10).setCellStyle(dateCellStyle);
5354 anupam.sin 260
            } else {
261
                commContentRow.createCell(10).setCellValue("N/A");
262
            }
263
 
264
            commContentRow.createCell(11).setCellValue(new Date(order.getPromised_delivery_time()));
4801 anupam.sin 265
            commContentRow.getCell(11).setCellStyle(dateCellStyle);
5428 anupam.sin 266
 
267
            commContentRow.createCell(12).setCellValue(new Date(order.getExpected_delivery_time()));
5354 anupam.sin 268
            commContentRow.getCell(12).setCellStyle(dateCellStyle);
269
 
5428 anupam.sin 270
            if (order.getDelivery_timestamp() != 0) {
271
                //When our courier partners declare a shipment as RTO we mark that time as delivered timestamp in our DB.
272
                commContentRow.createCell(13).setCellValue(new Date(order.getDelivery_timestamp()));//This is actually RTO Declare date.
273
                commContentRow.getCell(13).setCellStyle(dateCellStyle);
274
            } else {
275
                commContentRow.createCell(13).setCellValue("N/A");
276
            }
277
 
278
            if (order.getReceived_return_timestamp() != 0) {
279
                commContentRow.createCell(14).setCellValue(new Date(order.getReceived_return_timestamp()));
280
                commContentRow.getCell(14).setCellStyle(dateCellStyle);
281
            } else {
282
                commContentRow.createCell(14).setCellValue("N/A");
283
            }
284
 
285
            if (order.getRefund_timestamp() != 0) {
286
                commContentRow.createCell(15).setCellValue(new Date(order.getRefund_timestamp()));
287
                commContentRow.getCell(15).setCellStyle(dateCellStyle);
288
            } else {
289
                commContentRow.createCell(15).setCellValue("N/A");
290
            }
291
 
292
            if (order.getReship_timestamp() != 0) {
293
                commContentRow.createCell(16).setCellValue(new Date(order.getReship_timestamp()));
294
                commContentRow.getCell(16).setCellStyle(dateCellStyle);
295
            } else {
296
                commContentRow.createCell(16).setCellValue("N/A");
297
            }
298
 
299
            long delayInShipping = GetDelayinDays(order.getShipping_timestamp(), order.getPromised_shipping_time());
300
 
301
            if (order.getReceived_return_timestamp() != 0) {
302
                diffDays = GetDelayinDays(order.getReceived_return_timestamp(), order.getShipping_timestamp());
303
                commContentRow.createCell(17).setCellValue(diffDays);
304
            } else {
305
                commContentRow.createCell(17).setCellValue("N/A");
306
            }
307
 
308
            if (order.getFirst_attempt_timestamp() != 0) {
309
                diffDays = GetDelayinDays(order.getFirst_attempt_timestamp(), order.getExpected_delivery_time());
310
                commContentRow.createCell(18).setCellValue(diffDays - delayInShipping);
311
            } else {
312
                commContentRow.createCell(18).setCellValue("N/A");
313
            }
4801 anupam.sin 314
        }
5428 anupam.sin 315
        for (int i = 0; i<19; i++) {
4801 anupam.sin 316
            sheet1.autoSizeColumn(i);
317
        }
318
    }
319
 
320
    private void createDeliveredSheet(Workbook wb, 
321
            CellStyle style,
322
            CellStyle dateCellStyle) {
323
        // Summary SHEET
324
        Sheet sheet2 = wb.createSheet("Delivered");
325
        short affSerialNo = 0;
326
 
327
        DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
328
 
329
        Row affTitleRow = sheet2.createRow(affSerialNo ++);
330
        Cell affTitleCell = affTitleRow.createCell(0);
331
        affTitleCell.setCellValue("Courier Performance Report : Delivered Orders");
332
        affTitleCell.setCellStyle(style);
333
        sheet2.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
334
 
335
        sheet2.createRow(affSerialNo ++);
336
 
337
        Row affDateRangeRow = sheet2.createRow(affSerialNo ++);
338
        Cell affDateRangeCell = affDateRangeRow.createCell(0);
339
        affDateRangeCell.setCellValue("Date Range : " + df.format(startDate) + " - " + df.format(endDate));
340
        affDateRangeCell.setCellStyle(style);
341
        sheet2.addMergedRegion(new CellRangeAddress(3, 3, 0, 6));
342
 
343
        sheet2.createRow(affSerialNo ++);sheet2.createRow(affSerialNo ++);
344
 
345
        Row affHeaderRow = sheet2.createRow(affSerialNo++);
346
        affHeaderRow.createCell(0).setCellValue("Order Id");
347
        affHeaderRow.createCell(1).setCellValue("Payment Type");
5428 anupam.sin 348
        affHeaderRow.createCell(2).setCellValue("Product Name");
349
        affHeaderRow.createCell(3).setCellValue("AWB");
350
        affHeaderRow.createCell(4).setCellValue("Pincode");
351
        affHeaderRow.createCell(5).setCellValue("City");
352
        affHeaderRow.createCell(6).setCellValue("Logistics Provider");
353
        affHeaderRow.createCell(7).setCellValue("Order Created Date");
354
        affHeaderRow.createCell(8).setCellValue("Promised Shipping Date");
355
        affHeaderRow.createCell(9).setCellValue("Shipping Date");
356
        affHeaderRow.createCell(10).setCellValue("First Delivery Attempt");
357
        affHeaderRow.createCell(11).setCellValue("Promised Delivery Date");
358
        affHeaderRow.createCell(12).setCellValue("Expected Delivery Date");
359
        affHeaderRow.createCell(13).setCellValue("Delivery Date");
5354 anupam.sin 360
 
5428 anupam.sin 361
        affHeaderRow.createCell(14).setCellValue("Delay");
362
        affHeaderRow.createCell(15).setCellValue("First Attempt Delay");
4801 anupam.sin 363
 
5354 anupam.sin 364
        for (int i=0; i<16 ;i++) {
4801 anupam.sin 365
            affHeaderRow.getCell(i).setCellStyle(style);
366
        }
367
 
368
        try {
369
            TransactionClient tc = new TransactionClient();
370
            List<OrderStatus> deliveredStatuses = new ArrayList<OrderStatus>();
371
            deliveredStatuses.add(OrderStatus.DELIVERY_SUCCESS);
372
            orders = tc.getClient().getAllOrders(deliveredStatuses, startDate.getTime(), endDate.getTime(), 0);
373
        } catch (TransactionServiceException e) {
374
            // TODO Auto-generated catch block
375
            e.printStackTrace();
376
        } catch (TException e) {
377
            // TODO Auto-generated catch block
378
            e.printStackTrace();
379
        }
380
 
381
        for(Order order : orders) {
382
            affSerialNo++;
383
            Row commContentRow = sheet2.createRow(affSerialNo);
5428 anupam.sin 384
 
4801 anupam.sin 385
            commContentRow.createCell(0).setCellValue(order.getId());
386
            commContentRow.createCell(1).setCellValue(order.isCod() ? "COD" : "PREPAID");
5428 anupam.sin 387
 
388
            List<LineItem> items = order.getLineitems();
389
            String product = items.get(0).getBrand() + " " + items.get(0).getModel_name() + " " + items.get(0).getModel_number();
390
            commContentRow.createCell(2).setCellValue(product);
391
 
392
            commContentRow.createCell(3).setCellValue(order.getAirwaybill_no());
393
            commContentRow.createCell(4).setCellValue(order.getCustomer_pincode());
394
            commContentRow.createCell(5).setCellValue(order.getCustomer_city());
395
            commContentRow.createCell(6).setCellValue(logisticProviderMap.get(order.getLogistics_provider_id()));
396
 
397
            commContentRow.createCell(7).setCellValue(new Date(order.getCreated_timestamp()));
4801 anupam.sin 398
            commContentRow.getCell(7).setCellStyle(dateCellStyle);
5354 anupam.sin 399
 
5428 anupam.sin 400
            if (order.getPromised_shipping_time() != 0) {
401
                commContentRow.createCell(8).setCellValue(new Date(order.getPromised_shipping_time()));
402
                commContentRow.getCell(8).setCellStyle(dateCellStyle);
403
            } else {
404
                commContentRow.createCell(8).setCellValue("N/A");
405
            }
406
 
407
            commContentRow.createCell(9).setCellValue(new Date(order.getShipping_timestamp()));
4801 anupam.sin 408
            commContentRow.getCell(9).setCellStyle(dateCellStyle);
5354 anupam.sin 409
 
5428 anupam.sin 410
            if (order.getFirst_attempt_timestamp() != 0) {
411
                commContentRow.createCell(10).setCellValue(new Date(order.getFirst_attempt_timestamp()));
412
                commContentRow.getCell(10).setCellStyle(dateCellStyle);
413
            } else {
414
                commContentRow.createCell(10).setCellValue("N/A");
415
            }
5354 anupam.sin 416
 
417
            commContentRow.createCell(11).setCellValue(new Date(order.getPromised_delivery_time()));
4801 anupam.sin 418
            commContentRow.getCell(11).setCellStyle(dateCellStyle);
5354 anupam.sin 419
 
5428 anupam.sin 420
            if (order.getDelivery_timestamp() != 0) { 
421
                commContentRow.createCell(12).setCellValue(new Date(order.getExpected_delivery_time()));
422
                commContentRow.getCell(12).setCellStyle(dateCellStyle);
423
            } else {
424
                commContentRow.createCell(12).setCellValue("N/A");
425
            }
5354 anupam.sin 426
 
5428 anupam.sin 427
            if (order.getDelivery_timestamp() != 0) {    
428
                commContentRow.createCell(13).setCellValue(new Date(order.getDelivery_timestamp()));
429
                commContentRow.getCell(13).setCellStyle(dateCellStyle);
430
            } else {
431
                commContentRow.createCell(13).setCellValue("N/A");
432
            }
433
 
434
 
435
            //We are subtracting delay due to shipping from delay in delivery as it was not courier's
436
            //fault that the shipment was delayed
437
 
438
            long delayInShipping = 0;
439
            long diffDays = GetDelayinDays(order.getDelivery_timestamp(), order.getExpected_delivery_time());
440
 
441
            if (order.getPromised_shipping_time() != 0) {
442
                delayInShipping = GetDelayinDays(order.getShipping_timestamp(), order.getPromised_shipping_time());
443
                commContentRow.createCell(14).setCellValue(diffDays - delayInShipping);
444
            } else {
445
                commContentRow.createCell(14).setCellValue(diffDays);
446
            }
447
 
448
            diffDays = GetDelayinDays(order.getFirst_attempt_timestamp(), order.getExpected_delivery_time());
449
 
450
            if (order.getFirst_attempt_timestamp() != 0) { 
451
                if (order.getPromised_shipping_time() != 0) {
452
                    delayInShipping = GetDelayinDays(order.getShipping_timestamp(), order.getPromised_shipping_time());
453
                    commContentRow.createCell(15).setCellValue(diffDays - delayInShipping);
454
                }
455
            } else { 
456
                commContentRow.createCell(15).setCellValue("N/A");
457
            }
4801 anupam.sin 458
        }
5354 anupam.sin 459
        for (int i = 0; i<16; i++) {
4801 anupam.sin 460
            sheet2.autoSizeColumn(i);
461
        }
462
    }
5354 anupam.sin 463
 
464
    long GetDelayinDays(long actualDate, long expectedDate) {
465
 
466
        Calendar actualTime = Calendar.getInstance();
467
        Calendar expectedTime = Calendar.getInstance();
468
        long millisInDays = 24 * 60 * 60 * 1000;
469
 
470
        actualTime.setTimeInMillis(actualDate);
471
        expectedTime.setTimeInMillis(expectedDate);
472
 
473
        long actualTimeInMillis = actualTime.getTimeInMillis();
474
        long expectedTimeInMillis = expectedTime.getTimeInMillis();
475
        long diff = actualTimeInMillis - expectedTimeInMillis;
476
        long diffDays = diff / millisInDays;
477
 
478
        return diffDays;
479
    }
4801 anupam.sin 480
 
481
    public List<OrderStatus> getRtoStatuses() {
482
        return rtoStatuses;
483
    }
484
 
485
    public void setRtoStatuses(List<OrderStatus> rtoStatuses) {
486
        this.rtoStatuses = rtoStatuses;
487
    }
488
 
489
    public void setOrders(List<Order> orders) {
490
        this.orders = orders;
491
    }
492
 
493
    public List<Order> getOrders() {
494
        return orders;
495
    }
496
 
497
    @Override
498
    public void setServletResponse(HttpServletResponse res) {
499
        this.response = res;
500
    }
501
 
502
    @Override
503
    public void setServletRequest(HttpServletRequest req) {
504
        this.request = req;
505
        this.session = req.getSession();
506
    }
507
 
508
    public String getErrorMsg() {
509
        return errorMsg;
510
    }
511
 
512
    public void setErrorMsg(String errorMsg) {
513
        this.errorMsg = errorMsg;
514
    }
515
 
516
    public Date getStartDate() {
517
        return startDate;
518
    }
519
 
520
    public void setStartDate(Date startDate) {
521
        this.startDate = startDate;
522
    }
523
 
524
    public Date getEndDate() {
525
        return endDate;
526
    }
527
 
528
    public void setEndDate(Date endDate) {
529
        this.endDate = endDate;
530
    }
531
}