工具类pageutils
/**
* 当前页
*/
private int currentPage;
/**
* 每页数据条数
*/
private int pageSize;
/**
* 经销商
*/
private Dealer dealer;
/**
* 贷款
*/
private Loan loan;
/**
* 起始时间
*/
private Date startTime;
/**
* 终止时间
*/
private Date endTime;
/**
* 金额最小值
*/
private BigDecimal minMoney;
/**
* 金额最大值
*/
private BigDecimal maxMoney;
/**
* 城市
*/
private Cities cities;
/**
* 经纪人
*/
private Agent agent;
/**
* 酒厂
*/
private Distillery distillery;
/**
* 提货
*/
private Pickup pickup;
/**
* 还款计划
*/
private RepaymentPlan repaymentPlan;
/**
* 管理员
*/
private Manager manager;
Dao层
/**
* 多条件分页查询贷款信息
*
* @param spec
* @param pageable
* @return
*/
Page<Loan> findAll(Specification<Loan> spec, Pageable pageable);
/**
* 申请贷款时分页查询用到的方法
*/
@Override
public Page<Loan> findAllByMultiConditionAndPage(PageUtils pageUtils) {
// 获取当前登录用户所对应的经销商
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
String username = userDetails.getUsername();
User user = userService.findByName(username);
// 拼接多条件分页查询
Sort sort = new Sort(Direction.DESC, "loanApplicationDate");
PageRequest pageRequest = new PageRequest(
pageUtils.getCurrentPage() - 1, pageUtils.getPageSize(), sort);
return loanDao.findAll(new Specification<Loan>() {
@Override
public Predicate toPredicate(Root<Loan> root,
CriteriaQuery<?> query, CriteriaBuilder builder) {
Loan loan = null;
if (null == pageUtils.getLoan()) {
loan = new Loan();
loan.setDealer(user.getDealer());
} else {
loan = pageUtils.getLoan();
loan.setDealer(user.getDealer());
}
List<Predicate> predicates = new ArrayList<Predicate>();
// 先加入对应的经销商ID,只能查询属于他自己的贷款记录
predicates.add(builder.equal(
root.get("dealer").get("dealerId"), loan.getDealer()
.getDealerId()));
// 加入酒厂
if (null != loan.getDistillery()
&& StringUtils.isNotBlank(loan.getDistillery()
.getDistilleryName())) {
predicates.add(builder.equal(root.get("distillery"),
loan.getDistillery()));
}
// 加入贷款申请状态
if (null != loan.getLoanState()
&& !LoanState.被删除.equals(loan.getLoanState())) {
predicates.add(builder.equal(root.get("loanState"),
loan.getLoanState()));
}
// 加入申请贷款时间
if (null != pageUtils.getStartTime()
&& null != pageUtils.getEndTime()) {
predicates.add(builder.between(
root.get("loanApplicationDate"),
pageUtils.getStartTime(), pageUtils.getEndTime()));
}
// 加入申请贷款周期
if (null != loan.getLoanCycle()) {
predicates.add(builder.equal(root.get("loanCycle"),
loan.getLoanCycle()));
}
// 加入申请贷款金额
if (null != pageUtils.getMinMoney()
&& null != pageUtils.getMaxMoney()) {
predicates.add(builder.between(
root.get("loanApplicationMoney"),
pageUtils.getMinMoney(), pageUtils.getMaxMoney()));
}
query.where(predicates.toArray(new Predicate[predicates.size()]));
return null;
}
}, pageRequest);
}