2017-09-28 50 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

回答