1.controller
@PostMapping(value = "/listPage/{type}")
public EasyUIPagination getPageStorageTaskList(@PathVariable("type") Integer type, SterilizeTaskVo sterilizeTaskVo,
QueryTaskListVo params) throws Exception
{
Page<InventoryCheckTaskListVo> page = storageTaskService.getPageStorageTaskList(type,sterilizeTaskVo,params);
return PageToPaginationUtil.toPagination(page);
}
2.impl
@Override
public Page<InventoryCheckTaskListVo> getPageStorageTaskList(Integer type, SterilizeTaskVo sterilizeTaskVo, QueryTaskListVo params) throws Exception {
Pageable pageable = JpaUtil.getPagebleBySort(params.getOrder(), params.getSort(),
params.getPage(), params.getRows());
Specification<InventoryCheckTask> spec = (root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
if (type != null) {
Predicate typePre = cb.equal(root.get("taskType").as(Integer.class), type);
list.add(typePre);
}
if (StringUtils.isNotBlank(sterilizeTaskVo.getCustomer())) {
list.add(cb.equal(root.get("customer").get("id").as(String.class), sterilizeTaskVo.getCustomer()));
}
if (StringUtils.isNotBlank(sterilizeTaskVo.getCustomerOrgName())) {
list.add(cb.like(root.get("customerOrg").get("name").as(String.class), "%"+sterilizeTaskVo.getCustomerOrgName()+"%"));
}
if (StringUtils.isNotBlank(sterilizeTaskVo.getStatus())) {
list.add(cb.equal(root.get("status").as(Integer.class), sterilizeTaskVo.getStatus()));
}
if (StringUtils.isNotBlank(sterilizeTaskVo.getSterilizeTimeStart())) {
list.add(cb.greaterThanOrEqualTo(root.get("createDate").as(String.class), sterilizeTaskVo.getSterilizeTimeStart()));
}
if (StringUtils.isNotBlank(sterilizeTaskVo.getSterilizeTimeEnd())) {
DateTimeFormatter timeDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(sterilizeTaskVo.getSterilizeTimeEnd(), timeDtf);
String tmp = localDate.plusDays(1).format(timeDtf);
list.add(cb.lessThan(root.get("createDate").as(String.class), tmp));
}
return cb.and(list.toArray(new Predicate[list.size()]));
};
Page<InventoryCheckTask> page = inventoryCheckTaskRepository.findAll(spec, pageable);
if(page==null || page.getTotalElements()<1) {
return new PageImpl<>(new ArrayList<>(0), pageable, 0);
}
List<InventoryCheckTask> lists = page.getContent();
if(lists!=null && lists.size()>0) {
List<InventoryCheckTaskListVo> arr = InventoryCheckTaskListVo.taskData2Vo(lists);
return new PageImpl<>(arr, pageable, page.getTotalElements());
}
return new PageImpl<>(new ArrayList<>(0), pageable, 0);
}
3.JPAUtil
public class JpaUtil {
public static Pageable getPagebleBySort(String order,String sortStr,Integer page,Integer rows) {
Sort sort = null;
Pageable pageable = null;
if(sortStr!=null && !"".equals(sortStr))
{
if(order==null || "".equals(order)){
sort = Sort.by(Sort.Direction.ASC, sortStr);
}else{
sort = Sort.by(Sort.Direction.fromString(order), sortStr);
}
pageable = PageRequest.of(page - 1, rows,sort);
}else {
pageable = PageRequest.of(page - 1, rows);
}
return pageable;
}
public static Pageable getPagebleByPageParams(EasyUIPagingationParam pageParams) {
return getPagebleBySort(
pageParams.getOrder(),
pageParams.getSort(),
pageParams.getPage(),
pageParams.getRows());
}
}