/** * 可进行查询的分页列表 */ public Page<MessageConsumeFailLog> list(LogQueryParam param){ Sort sort = new Sort( Sort.Direction.DESC ,"createTime"); Pageable pageable = new PageRequest( param.getPageNo(), param.getPageSize(), sort ); return messageConsumeFailLogRepository.findAll( (root, query, cb) -> listSpecification(root, cb, param), pageable ); }
/** * 分页列表的查询构成器 */ private Predicate listSpecification(Root<MessageConsumeFailLog> root, CriteriaBuilder cb, LogQueryParam param){ List<Predicate> predicates = Lists.newArrayListWithExpectedSize(10); //消息队列名称 if (!StringUtils.isEmpty(param.getQueueName())){ predicates.add( cb.like( root.get( "queueName" ).as( String.class ), "%"+param.getQueueName()+"%")); } //关键词 if (!StringUtils.isEmpty(param.getKeyWord())){ predicates.add( cb.like( root.get( "keyWord" ).as( String.class ), "%"+param.getKeyWord()+"%")); } //关键内容 if (!StringUtils.isEmpty(param.getKeyWordValue())){ predicates.add( cb.like( root.get( "keyWordValue" ).as( String.class ), "%"+param.getKeyWordValue()+"%")); } //日志状态 if (!Objects.isNull(param.getState())){ predicates.add( cb.equal( root.get( "state" ).as( Integer.class ), param.getState())); } //开始时间 结束时间 if (!Objects.isNull(param.getStartTime())&&!Objects.isNull(param.getEndTime())){ //时间戳转Date Date startTime = new Date( param.getStartTime() ); Date entTime = new Date( param.getEndTime() ); predicates.add( cb.between( root.get( "createTime" ).as( Date.class ), startTime, entTime)); } int size = predicates.size(); return cb.and( predicates.toArray(new Predicate[size]) ); }