package com.fzzy.sys; import com.bstek.dorado.annotation.DataProvider; import com.fzzy.sys.entity.LogLogin; import com.fzzy.api.utils.ContextUtil; import com.fzzy.sys.repository.LogLoginRep; import org.springframework.beans.factory.annotation.Autowired; import com.bstek.dorado.data.provider.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * @Description 登录日志 * @Author CZT * @Date 2024/5/30 15:53 */ @Component public class LogLoginPR { @Autowired private LogLoginRep logLoginRep; /** * logLoginPR#pageLogLogin * * @param page * @param param * @throws Exception */ @DataProvider public void pageLogLogin(Page page, Map param) { //多参数分页查询 Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.DESC, LogLogin.SORT_PROP); if (null == param) { org.springframework.data.domain.Page japPage = logLoginRep.findAll(pageable); page.setEntityCount((int) japPage.getTotalElements()); page.setEntities(japPage.getContent()); return; } Specification specification = new Specification() { private static final long serialVersionUID = 1L; public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List predicates = new ArrayList<>(); //所有的断言 Date date = (Date) param.get("start"); if (null != date) { Predicate predicate3 = cb.greaterThan(root.get("loginTime"), ContextUtil.getCurZero(date)); predicates.add(predicate3); } date = (Date) param.get("end"); if (null != date) { Predicate predicate4 = cb.lessThan(root.get("loginTime"), ContextUtil.getNextZero(date)); predicates.add(predicate4); } return cb.and(predicates.toArray(new Predicate[0])); } }; org.springframework.data.domain.Page japPage = logLoginRep.findAll(specification, pageable); page.setEntityCount((int) japPage.getTotalElements()); page.setEntities(japPage.getContent()); } }