2017-09-28 43 views
0

我想在过去30天内创建收益报告折线图,我只需要系列1(水平图)上的日期和系列2(垂直图)上的总收入。 对象是包含String日期和BigDecimal totalAmount的DayBill。我想让日期= 2017-09-19得到totalamount = 112527.5,依此类推。LineChart Primefaces从DB获取数据

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; 
} 
+0

所以有效这个问题是不是数据库,因为数据库的部分作品有关系吗? – Kukeltje

+0

我的意思是我想做一个折线图,但我从上面的查询中获得数据,然后我放入模型中,然后我只想知道如何将模型放入折线图 – Andre

+0

很明显你想要什么,但是如果数据库查询的工作原理与数据库没有关系,那么您应该查看数据库结果并填写它,就像在PrimeFaces展示中所做的那样 – Kukeltje

回答