@Override public Response chipListByPage(ChipPageListParam request) {
//查询条件
Query query = new Query(); Criteria criteria = new Criteria();
if (StringUtils.isNotBlank(request.getTitleLike())) { Pattern pattern = Pattern.compile("^.*" + request.getTitleLike() + ".*$", Pattern.CASE_INSENSITIVE); criteria = criteria.and("chipName").regex(pattern); } if (StringUtils.isNotBlank(request.getPartnersId())) { criteria = criteria.and("partnersId").is(request.getPartnersId()); }
Integer pageNum = request.getPageNum(); if (pageNum == null || pageNum <= 0) { pageNum = 1; } Integer pageSize = request.getPageSize(); if (pageSize == null || pageSize <= 0) { pageSize = 10; }
//mongodb分页查询核心代码
Query countQuery = new Query(criteria);
long totalCount = mongoTemplate.count(countQuery, RedChip.class); query = query.limit(pageSize).skip((pageNum - 1) * pageSize); query = query.addCriteria(criteria); query = query.with(Sort.by(Sort.Order.desc("createTime"))); List<RedChip> redChips = mongoTemplate.find(query, RedChip.class);
// 转换vo List<ChipListVO> chipListVOS = JSON.parseArray(JSON.toJSONString(redChips), ChipListVO.class); for (ChipListVO item: chipListVOS ) { if(StringUtils.isBlank(item.getBatchCode())|| Objects.isNull(item.getSuitPlatformId())|| Objects.isNull(item.getActiveRelatedStatus())) continue; if(item.getSuitPlatformId().equals(RedChipDetailSuitEnum.LiZan.getValue()) && 1 == item.getActiveRelatedStatus()){ item.setPacketTitle("("+item.getBatchCode()+")"); } } Page<ChipListVO> page = new Page<>(); page.setRows(chipListVOS); page.setTotalCount(totalCount); BigDecimal totalPage = new BigDecimal(totalCount); totalPage = totalPage.divide(new BigDecimal(request.getPageSize()), RoundingMode.CEILING); page.setTotalPage(totalPage.longValue()); page.setPageNum(pageNum); page.setPageSize(pageSize); return Response.success(page); }
//分页类
@ApiModel(value = "分页参数") @Data public class BasePageParam implements Serializable { /** * 当前页页码 */ @ApiModelProperty(value = "当前页页码") @NotNull(message = "缺少分页参数: pageNum") @Min(value = 1) private Integer pageNum; /** * 每页记录数 */ @ApiModelProperty(value = "每页记录数") @NotNull(message = "缺少分页参数: pageSize") @Min(value = 1) private Integer pageSize; }
/** * 分页类 */ @Getter @Setter public class Page<T> extends BasePageParam { //总页数 private long totalPage;
//总记录数 private long totalCount;
//每页显示集合 private List<T> rows; }
来源:https://www.cnblogs.com/guangxiang/p/13092137.html |