1,service逻辑层的查询方法
public DataGrid findOrderBillCountList(OrderBillCount orderBillCount) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DataGrid dg = new DataGrid();
List<OrderBillCount> l = new ArrayList<OrderBillCount>();
int total = 0;
List params1 = new ArrayList();
List params2 = new ArrayList();
String totalSql = "SELECT COUNT(*) FROM ("+
" select * from T_ORDERBILL_COUNT s where 1=1";
String sql = "select * from (SELECT B.*, ROWNUM R FROM ("+
" select * from T_ORDERBILL_COUNT s where 1=1 ";
/*
* 条件查询
*/
//省份
if (orderBillCount.getProvincename()!= null && !orderBillCount.getProvincename().equals("")&&!orderBillCount.getProvincename().equals("全部")) {
totalSql += " and s.PROVINCENAME = ?";
sql += " and s.PROVINCENAME = ?";
params1.add( orderBillCount.getProvincename().toString());
params2.add( orderBillCount.getProvincename().toString());
}
//月份
if (orderBillCount.getTime()!= null && !orderBillCount.getTime().equals("")) {
totalSql += " and s.TIME = ?";
sql += " and s.TIME = ?";
params1.add(orderBillCount.getTime().toString() );
params2.add(orderBillCount.getTime().toString() );
}
//类型
if (orderBillCount.getType()!= null && !orderBillCount.getType().equals("")) {
totalSql += " and s.TYPE = ?";
sql += " and s.TYPE = ?";
params1.add(Integer.valueOf(orderBillCount.getType()) );
params2.add( Integer.valueOf(orderBillCount.getType()) );
}
//业务名称
if (orderBillCount.getService()!= null && !orderBillCount.getService().equals("")) {
totalSql += " and s.SERVICE = ?";
sql += " and s.SERVICE = ?";
params1.add( orderBillCount.getService().toString());
params2.add( orderBillCount.getService().toString());
}
//sql拼接
totalSql += " order by s.UPDATETIME DESC)";
sql += " order by s.UPDATETIME DESC) B WHERE ROWNUM <= ? ) WHERE R >= ? ";
params2.add(orderBillCount.getPage() * orderBillCount.getRows());
params2.add((orderBillCount.getPage() - 1) * orderBillCount.getRows() + 1);
logger.info("totalSql: " + totalSql);
logger.info("sql: " + sql);
total = jdbcTemplate.queryForInt(totalSql, params1.toArray());
OrderBillCount orderBillCount2 = null;
if (total > 0) {
List list = jdbcTemplate.queryForList(sql, params2.toArray());
if (list != null) {
Iterator it = list.iterator();
while (it.hasNext()) {
Map temp = (Map) it.next();
String id = temp.get("ID") == null ? ""
: temp.get("ID").toString();
String provincename = temp.get("PROVINCENAME") == null ? ""
: (String) temp.get("PROVINCENAME");
String time = temp.get("TIME") == null ? ""
: (String) temp.get("TIME");
String orderCount = temp.get("ORDER_COUNT") == null ? ""
: temp.get("ORDER_COUNT").toString();
String billCount = temp.get("BILL_COUNT") == null ? ""
: temp.get("BILL_COUNT").toString();
String type = temp.get("TYPE") == null ? ""
: temp.get("TYPE").toString();
String updatetime = temp.get("UPDATETIME") == null ? ""
: dateFormat.format(temp.get("UPDATETIME")).toString();
String service = temp.get("SERVICE") == null ? ""
: temp.get("SERVICE").toString();
orderBillCount2 = new OrderBillCount();
orderBillCount2.setId(id);
orderBillCount2.setProvincename(provincename);
orderBillCount2.setTime(time);
orderBillCount2.setOrderCount(orderCount);
orderBillCount2.setBillCount(billCount);
orderBillCount2.setType(type);
orderBillCount2.setUpdatetime(updatetime);
orderBillCount2.setService(service);
l.add(orderBillCount2);
}
//新增统计行
int orderSum = 0;
int billSum = 0;
OrderBillCount a = new OrderBillCount();
for(int i=0;i<l.size();i++){
a=l.get(i);
orderSum+= Integer.valueOf(l.get(i).getOrderCount());
billSum+= Integer.valueOf(l.get(i).getBillCount());
}
OrderBillCount b= new OrderBillCount();
b.setId("总计");
b.setProvincename("总计");
b.setTime(null);
b.setService(null);
b.setOrderCount(Integer.valueOf(orderSum).toString());
b.setBillCount(Integer.valueOf(billSum).toString());
b.setType(null);
b.setUpdatetime(null);
l.add(b);
}
dg.setRows(l);
dg.setTotal((Long.valueOf(total)));
}
return dg;
}
2.效果图–每一页下面都有一行统计行