LineChart Primefaces从DB获取数据

时间:2017-09-28 10:12:05

标签: jsf charts primefaces

我想在最近30天制作收入报告折线图,我只需要系列1(水平图表)上的日期和系列2(垂直图表)上的总收入。 对象是包含字符串日期的DayBill和BigDecimal totalAmount。我想像date = 2017-09-19得到totalamount = 112527.5,等等。

public class ChartViewBean implements Serializable {

private LineChartModel lineModel1;
private List<DayBill> bills;
private TotalSalesDAO dao;

@PostConstruct
public void init() {
    createLineModels();
}

public void itemSelect(ItemSelectEvent event) {
    FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Item selected",
                    "Item Index: " + event.getItemIndex() + ", Series Index:" + event.getSeriesIndex());

    FacesContext.getCurrentInstance().addMessage(null, msg);
}

public LineChartModel getLineModel1() {
    return lineModel1;
}

private void createLineModels() {

    lineModel1 = initLinearModel();
    lineModel1.setTitle("Linear Chart");
    lineModel1.setLegendPosition("e");
    Axis yAxis = lineModel1.getAxis(AxisType.Y);
    yAxis.setMin(0);
    yAxis.setMax(10);
    lineModel1.setExtender("skinChart");
}


private LineChartModel initLinearModel() {
    LineChartModel model = new LineChartModel(); 
    LineChartSeries series1 = new LineChartSeries();
    series1.setLabel("Series 1");

    series1.set(1, 2);
    series1.set(2, 1);
    series1.set(3, 3);
    series1.set(4, 6);
    series1.set(5, 8);

    LineChartSeries series2 = new LineChartSeries();
    series2.setLabel("Series 2");

    series2.set(1, 6);
    series2.set(2, 3);
    series2.set(3, 2);
    series2.set(4, 7);
    series2.set(5, 9);

    model.addSeries(series1);
    model.addSeries(series2);

    return model;

}

这是我的DAO,我已经获得了我想要的数据。问题是我不知道如何将数据放到图表中。

public List<DayBill> getDayBills() throws Exception
{
    Connection conn = ds.getConnection();
    PreparedStatement ps = null;
    ResultSet rs = null;
    StringBuffer query = new StringBuffer();
    List<DayBill> list = new ArrayList<DayBill>();

    query
    .append(" select SUM(GRAND_TOTAL) , substr(BILL_DATE,0,11) ")
    .append(" from R_BILL where substr(BILL_DATE,0,11) >= date('now','localtime','-30 day') ");

    query.append(" group by strftime('%d',BILL_DATE) ");
    query.append(" order by BILL_DATE ASC ");

    try
    {
        DayBill daybill;
        ps = conn.prepareStatement(query.toString());
        rs = ps.executeQuery();

        while(rs.next())
        {
            daybill = new DayBill();
            daybill.setTotalAmount(rs.getBigDecimal(1));
            daybill.setDate(rs.getString(2));
            list.add(daybill);
        }
    }
    finally
    {
        if(rs != null)
            rs.close();
        if(ps != null)
            ps.close();
        if(conn != null)
            conn.close();
    }

    return list;
}

1 个答案:

答案 0 :(得分:-1)

相关问题