package com.jcommerce.gwt.client.panels.statistics;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.DecoratedTabPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.jcommerce.gwt.client.ContentWidget;
import com.jcommerce.gwt.client.PageState;
import com.jcommerce.gwt.client.service.ReportService;
public class SaleStatisticsReport extends ContentWidget {
private VerticalPanel datePanel = new VerticalPanel();
private VerticalPanel searchconditions = new VerticalPanel();
private VerticalPanel orderReportPanel = new VerticalPanel();
private VerticalPanel saleReportPanel = new VerticalPanel();
private ListBox lstYearStartYear = new ListBox();
private ListBox lstYearEndYear = new ListBox();
private ListBox lstMonthStartYear = new ListBox();
private ListBox lstMonthEndYear = new ListBox();
private ListBox lstMonthStartMonth = new ListBox();
private ListBox lstMonthEndMonth = new ListBox();
private HtmlContainer orderHtml;
private HtmlContainer saleHtml;
private DecoratedTabPanel tabPanel = new DecoratedTabPanel();
public static class State extends PageState {
public String getPageClassName() {
return SaleStatisticsReport.class.getName();
}
public String getMenuDisplayName() {
return "销售概况";
}
}
public State getCurState() {
if (curState == null) {
curState = new State();
}
return (State) curState;
}
// end of block
public String getDescription() {
return "cwBasicTextDescription";
}
public String getName() {
return "销售概况";
}
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
datePanel.setHeight("30");
searchconditions.setWidth("100%");
add(getTopDate());
add(searchconditions);
searchconditions.setHorizontalAlignment(searchconditions.ALIGN_CENTER);
tabPanel.setWidth("100%");
tabPanel.setAnimationEnabled(true);
tabPanel.add(orderReportPanel, "订单走势");
orderHtml = new HtmlContainer();
orderReportPanel.add(orderHtml);
tabPanel.add(saleReportPanel, "销售额走势");
saleHtml = new HtmlContainer();
saleReportPanel.add(saleHtml);
tabPanel.selectTab(0);
searchconditions.add(tabPanel);
}
private VerticalPanel getTopDate() {
Integer startYear = 2010;
for(int i = 0; i < 10;i++) {
lstYearStartYear.addItem(startYear.toString());
lstYearEndYear.addItem(startYear.toString());
lstMonthStartYear.addItem(startYear.toString());
lstMonthEndYear.addItem(startYear.toString());
startYear++;
}
Integer startMonth = 1;
for(int i = 0; i < 12;i++) {
lstMonthStartMonth.addItem(startMonth.toString());
lstMonthEndMonth.addItem(startMonth.toString());
startMonth++;
}
HorizontalPanel yearPanel = new HorizontalPanel();
yearPanel.add(new Label("年走势"));
yearPanel.add(lstYearStartYear);
yearPanel.add(new Label("-"));
yearPanel.add(lstYearEndYear);
Button searchByYear = new Button("查询");
searchByYear.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String startYear = lstYearStartYear.getItemText(lstYearStartYear.getSelectedIndex());
String startDate = startYear + "-01-01 00:00:00";//开始时间设为当年第一天的0点
String endYear = lstYearEndYear.getItemText(lstYearEndYear.getSelectedIndex());
String endDate = endYear + "-12-31 23:59:59";//结束时间设为当年最后一天的23:59:59
getReport(startDate, endDate, "Y");
}
});
yearPanel.add(searchByYear);
datePanel.add(yearPanel);
HorizontalPanel monthPanel = new HorizontalPanel();
monthPanel.add(new Label("月走势"));
monthPanel.add(lstMonthStartYear);
monthPanel.add(lstMonthStartMonth);
monthPanel.add(new Label("-"));
monthPanel.add(lstMonthEndYear);
monthPanel.add(lstMonthEndMonth);
Button searchByMonth = new Button("查询");
searchByMonth.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String startYear = lstMonthStartYear.getItemText(lstMonthStartYear.getSelectedIndex());
String startMonth = lstMonthStartMonth.getItemText(lstMonthStartMonth.getSelectedIndex());
if(Integer.parseInt(startMonth) < 10)
startMonth = "0" + startMonth;
String startDate = startYear + "-" + startMonth + "-01" + " 00:00:00"; //开始时间加上 天时分秒 分别为当月第一天的0点整
String endYear = lstMonthEndYear.getItemText(lstMonthEndYear.getSelectedIndex());
String endMonth = lstMonthEndMonth.getItemText(lstMonthEndMonth.getSelectedIndex());
if(Integer.parseInt(endMonth) < 10)
endMonth = "0" + endMonth;
String endDate = endYear + "-" + endMonth + "-31" + " 23:59:59";//结束时间加上 天时分秒 分别为当月最后一天的23:59:59
getReport(startDate, endDate, "M");
}
});
monthPanel.add(searchByMonth);
datePanel.add(monthPanel);
return datePanel;
}
private void getReport(String startDate, String endDate, String type) {
Map<String, String> params = new HashMap<String, String>();
String format = type.equals("Y") ? "%Y" : "%Y-%M";
params.put("STARTDATE", startDate);
params.put("ENDDATE", endDate);
params.put("FORMAT", format);
new ReportService().generateReport("OrderStatisticsReport", params, new ReportService.Listener() {
@Override
public void onSuccess(String content) {
content = content.substring(content.indexOf("<html>"));
orderHtml.setHtml(content);
System.out.println(content);
}
});
new ReportService().generateReport("SaleStatisticsReport", params, new ReportService.Listener() {
@Override
public void onSuccess(String content) {
content = content.substring(content.indexOf("<html>"));
saleHtml.setHtml(content);
}
});
}
}