使用stream处理分页
  uKahXdGfk0hw 2023年11月22日 45 0
//pageVo  存放分页数据
@Data
@ApiModel("自定义分页")
public class ResultPage {
    @ApiModelProperty(value = "数据集合")
    private List<?> list;

    @ApiModelProperty(value = "当前页")
    private Integer current;

    @ApiModelProperty(value = "总条数")
    private Integer total;

    @ApiModelProperty(value = "每页条数")
    private Integer size;

    @ApiModelProperty(value = "总页数")
    private Integer pages;
}
public Result<?>buyerWindowList(@RequestParam(name = "pageNo",defaultValue = "1")Integer pageNo,
                                @RequestParam(name = "pageSize",defaultValue = "10")Integer pageSize){
                                    
//此处建了一个pageVo用来存放分页数据 
   ResultPage page = new ResultPage();
   
   LoginUser user = LoginUserUtil.get();
   QueryWrapper<OutOrder> wrapper = new QueryWrapper<>();
   wrapper.lambda().eq(OutOrder::getUserId,user.getId());
   wrapper.lambda().eq(OutOrder::getCategory, OrderCategoryEnum.OUT_DISPLAY_WINDOW.getCategory());
   List<OutOrder> list = orderService.list(wrapper);

//    startPosition 是计算的取值开始位置
   int startPosition = (pageNo-1)*pageSize;
//    list.stream().skip(Y) 此方法是指从第Y位开始取值  .limit(X) 并取前X个值
   Stream<OutOrder> stream = list.stream().skip(startPosition).limit(pageSize);
//    stream.collect(Collectors.toList())  返回一个list
   List<OutOrder> collect = stream.collect(Collectors.toList());


   BuyerWindowListVo vo = new BuyerWindowListVo();
   ArrayList<BuyerWindowListVo> listVos = new ArrayList<>();

   for (OutOrder outOrder : collect) {
      //获取任务版本最终版
      QueryWrapper<OutRequirementTaskVersion> queryWrapper = new QueryWrapper<>();
      queryWrapper.lambda().eq(OutRequirementTaskVersion::getTaskId,outOrder.getTaskId());
      queryWrapper.lambda().eq(OutRequirementTaskVersion::getUserId,outOrder.getUserId());
      queryWrapper.lambda().orderByDesc(OutRequirementTaskVersion::getVersionNumber);
      queryWrapper.lambda().last("limit 0,1");
      OutRequirementTaskVersion one = taskVersionService.getOne(queryWrapper);
      OutDisplayWindow window = outDisplayWindowService.getById(outOrder.getTaskId());
      vo.setTitle(window.getTitle());
      vo.setId(window.getId());
      vo.setCreateTime(outOrder.getCreateTime());
      vo.setGoodsPrice(outOrder.getGoodsPrice());
      if (one!=null){
         vo.setAudit(one.getAudit());
      }else {
         vo.setAudit(OutDateEnum.PLANING_TASK_AUDIT_ING.getCode());
      }
      //截稿时间的计算,先获取开始时间
       Date date = outOrder.getCreateTime();
      //获取交稿所需时间
      Integer submissionTime = window.getSubmissionTime();
      //计算
      Date date1 = DateUtil.addDay(date, submissionTime);
      String endTime = DateUtil.format(date1, "yyyy-MM-dd");
      vo.setEndTime(endTime);
      listVos.add(vo);
   }
   page.setCurrent(pageNo);
   page.setSize(pageSize);
   page.setTotal(list.size());
   page.setList(listVos);
   Double ceil = Math.ceil((float) list.size() / pageSize);
   Integer pages = ceil.intValue();
   page.setPages(pages);
   return Result.OK(page);
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月22日 0

暂无评论

推荐阅读
  rvP2pqm8fEoB   2023年12月24日   37   0   0 ListJavaListJava
uKahXdGfk0hw
作者其他文章 更多