我想在最近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;
}