需求:对汇总的结果进行统计,分为日统计,月统计,年统计,及普通统计
对前三个统计,可以使用框架对数据库直接进行查询返回分页的结果。普通统计根据用户输入的开始时间和结束时间对数据库进行求和运算
根据代码
manager层:
ge 为Repo 方法查询数据库返回的结果,对于普通统计来说,手动进行分页返回前台。分页计算如下:
Pagination page = new Pagination();
int pageCount = ge.size() % req.getPageSize() == 0 ? ge.size() / req.getPageSize()
: ge.size() / req.getPageSize() + 1;
if (ge.size() > req.getPageSize()) {
if (req.getPageNo() > 0 && req.getPageNo() < pageCount)
result = ge.subList((req.getPageNo() - 1) * req.getPageSize(), req.getPageNo() * req.getPageSize());
else
result = ge.subList((req.getPageNo() - 1) * req.getPageSize(), ge.size());
} else {
result.addAll(ge);
}
page.setCurrentPage(req.getPageNo());
page.setPageSize(req.getPageSize());
page.setPageCount(pageCount);
page.setTotalCount(ge.size());
page.setResult(result);
return page;
Repo层:
@Query(" select new cn.com.taiji.business.stat.entity.summary.ErrCount(obcc,sum(dbcount),sum(correctCount),sort) from ErrCount where statTime >= ?1 and statTime <= ?2 ")
public List<ErrCount> findByGenerate(String calendarDateTime, String calendarDateTime2);
上面的JPA 中通过 new 实体类中的构造函数来的到查询结果,因为需要统计的字段为int,所以在求和的返回的结果的构造函数中又强转成了int, long 为数据库sum相加的和
entity:
public ErrCount(String obcc, long dbcount, long filecount, long totalcount,
long autoPhoneCount, long manualPhoneCount, long totalPhoneCount, long correctCount, int sort) {
this.obcc = obcc;
this.dbcount = (int)dbcount;
this.filecount = (int)filecount;
this.totalcount = (int)totalcount;
this.autoPhoneCount = (int)autoPhoneCount;
this.manualPhoneCount = (int)manualPhoneCount;
this.totalPhoneCount = (int)totalPhoneCount;
this.correctCount = (int)correctCount;
this.sort = sort;
}