JPA多条件查询

1.controller
/**
	 * 	获取查询任务列表
	 *  <p>type为任务类型,1清点,2验收,3验收,4消毒
	 */
	@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())) {
				//日期加1
				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 {
	
	/**
	 * 获取排序分页查询条件
	 * @param order		升序降序
	 * @param sortStr	字段
	 * @param page		页数
	 * @param rows		条数
	 * @return	
	 */
	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;
	}

	/**
	 * 获取排序分页查询条件
	 * @param pageParams 分页封装参数
	 * @return	
	 */
	public static Pageable getPagebleByPageParams(EasyUIPagingationParam pageParams) {
		return getPagebleBySort(
				pageParams.getOrder(),
				pageParams.getSort(),
				pageParams.getPage(),
				pageParams.getRows());
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值