From c3ff7417bcc2746016a494f894719c52ea3659a0 Mon Sep 17 00:00:00 2001 From: CZT <czt18638530771@163.com> Date: 星期一, 26 六月 2023 20:58:56 +0800 Subject: [PATCH] 优化文件接口--分页条件查询 --- src/main/java/com/fzzy/api/view/pr/Api1109PR.java | 61 +++++++++++++++++++++++++++--- 1 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/fzzy/api/view/pr/Api1109PR.java b/src/main/java/com/fzzy/api/view/pr/Api1109PR.java index f3bd298..c8d1101 100644 --- a/src/main/java/com/fzzy/api/view/pr/Api1109PR.java +++ b/src/main/java/com/fzzy/api/view/pr/Api1109PR.java @@ -3,6 +3,7 @@ import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.annotation.DataResolver; import com.bstek.dorado.annotation.Expose; +import com.bstek.dorado.data.provider.Page; import com.fzzy.api.data.ApiParam; import com.fzzy.api.service.ApiCommonService; import com.fzzy.api.service.ApiPushManager; @@ -13,17 +14,23 @@ import com.fzzy.api.entity.ApiConfs; import com.fzzy.api.utils.ContextUtil; import com.fzzy.api.view.repository.Api1109Rep; - import lombok.extern.slf4j.Slf4j; - import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +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 sun.misc.BASE64Encoder; - +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; import java.io.*; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -50,8 +57,50 @@ * @return */ @DataProvider - public List<Api1109> listAll() { - return api1109Rep.findAll(); + public void listAll(Page<Api1109> page, ApiParam param) { + //澶氬弬鏁板垎椤垫煡璇� + Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.DESC, Api1109.SORT_PROP); + + if (null == param) { + org.springframework.data.domain.Page<Api1109> japPage = api1109Rep.findAll(pageable); + page.setEntityCount((int) japPage.getTotalElements()); + page.setEntities(japPage.getContent()); + + return; + } + + Specification<Api1109> specification = new Specification<Api1109>() { + private static final long serialVersionUID = 1L; + + public Predicate toPredicate(Root<Api1109> root, CriteriaQuery<?> query, CriteriaBuilder cb) { + List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█ + + if (StringUtils.isNotBlank(param.getKqdm())) { + Predicate predicate1 = cb.equal(root.get("kqdm"), param.getKqdm()); + predicates.add(predicate1); + } + + if (StringUtils.isNotBlank(param.getCzbz())) { + Predicate predicate2 = cb.equal(root.get("czbz"), param.getCzbz()); + predicates.add(predicate2); + } + if (null != param.getStart()) { + Predicate predicate3 = cb.greaterThan(root.<Date>get("qdrq"), ContextUtil.getCurZero(param.getStart())); + predicates.add(predicate3); + } + + if (null != param.getEnd()) { + Predicate predicate4 = cb.lessThan(root.<Date>get("qdrq"), ContextUtil.getNextZero(param.getEnd())); + predicates.add(predicate4); + } + return cb.and(predicates.toArray(new Predicate[0])); + } + }; + + log.debug("---------鍒嗛〉鍙傛暟鏌ヨ----------{}", param.toString()); + org.springframework.data.domain.Page<Api1109> japPage = api1109Rep.findAll(specification, pageable); + page.setEntityCount((int) japPage.getTotalElements()); + page.setEntities(japPage.getContent()); } /** -- Gitblit v1.9.3