java PageInfo分页插件 使用list 或stream 时候 total 不对的问题

原逻辑

 reconciliationDataList = sysVerifyDrawRecordDao.selectList(lambdaQueryWrapper);
            List<SysVerifyDrawRecordVo> list =
                    reconciliationDataList.stream().map(e -> {
                        try {
                            String systemStatusName = "";
                            String thirdStatusName = "";
                            SysVerifyDrawRecordVo sysVerifyDrawRecordVo = new SysVerifyDrawRecordVo();

                            sysVerifyDrawRecordVo.setId(e.getId());
                            sysVerifyDrawRecordVo.setStatus(e.getStatus());
                            if (e.getStatus() != null) {
                                sysVerifyDrawRecordVo.setStatusName(SysVerifyRecordEnum.getName(e.getStatus()));
                            }
                            sysVerifyDrawRecordVo.setTradeOutNo(e.getTradeOutNo());
                            sysVerifyDrawRecordVo.setTradeTime(e.getTradeTime());
                            sysVerifyDrawRecordVo.setSystemMoney(e.getSystemMoney());
                            sysVerifyDrawRecordVo.setSystemStatus(e.getSystemStatus());
                            if (e.getSystemStatus().equals(2)){
                               systemStatusName = "成功";
                            }
                            sysVerifyDrawRecordVo.setSystemStatusName(systemStatusName);
                            sysVerifyDrawRecordVo.setThirdMoney(e.getThirdMoney());
                            sysVerifyDrawRecordVo.setThirdStatus(e.getThirdStatus());
                            sysVerifyDrawRecordVo.setThirdTradeTime(e.getThirdTradeTime());
                            sysVerifyDrawRecordVo.setThirdMoney(e.getThirdMoney());
                            sysVerifyDrawRecordVo.setThirdStatus(e.getThirdStatus());
                            if(e.getThirdStatus() != null && e.getThirdStatus().equals(1)){
                                thirdStatusName = "成功";
                            }
                            sysVerifyDrawRecordVo.setThirdStatusName(thirdStatusName);
                            sysVerifyDrawRecordVo.setBankCodeName(e.getBankCodeName());
                            sysVerifyDrawRecordVo.setBankCard(e.getBankCard());
                            sysVerifyDrawRecordVo.setBankHolderIdentify(e.getBankHolderIdentify());
                            sysVerifyDrawRecordVo.setBankHolderName(e.getBankHolderName());
                            sysVerifyDrawRecordVo.setModifyUserId(e.getModifyUserId());
                            sysVerifyDrawRecordVo.setRemark(e.getRemark());
                            sysVerifyDrawRecordVo.setErrorReason(e.getErrorReason());
                            String userName = "";
                            if (e.getModifyUserId() != null) {
                                try {
                                    Result<SysUser> sysUserResult = userFeignClient.selectUserInfoByUserId(e.getModifyUserId());
                                    if (sysUserResult != null){
                                        if (sysUserResult.isSucceed() == true) {
                                            userName = sysUserResult.getData().getRealname() != null ? sysUserResult.getData().getRealname() : "";
                                        }
                                    }else{
                                        log.info("异常处理:TradeOutNo:{},ModifyUserId:{}",e.getTradeOutNo(),e.getModifyUserId());

                                    }
                                }catch (Exception se){
                                    log.warn("异常处理:获取用户信息Feign异常,E:{}",se.getMessage());
                                    //throw new ServiceException("获取用户信息Feign异常");
                                }


                            }
                            sysVerifyDrawRecordVo.setModifyUserName(userName);
                            return sysVerifyDrawRecordVo;
                        }catch (Exception se){
                            throw new ServiceException(se);
                        }

                    }).collect(Collectors.toList());

改进后的方法

lambdaQueryWrapper.orderByDesc(SysVerifyDrawRecord::getTradeTime);
            PageInfo<SysVerifyDrawRecord> objectPageInfo = PageHelper.startPage(query.getPage(), query.getLimit())
                    .doSelectPageInfo(() -> sysVerifyDrawRecordDao.selectList(lambdaQueryWrapper));
            List<SysVerifyDrawRecordVo> list= new ArrayList<>();


            objectPageInfo.getList().forEach(e->{
                        try {
                            String systemStatusName = "";
                            String thirdStatusName = "";
                            SysVerifyDrawRecordVo sysVerifyDrawRecordVo = new SysVerifyDrawRecordVo();

                            sysVerifyDrawRecordVo.setId(e.getId());
                            sysVerifyDrawRecordVo.setStatus(e.getStatus());
                            if (e.getStatus() != null) {
                                sysVerifyDrawRecordVo.setStatusName(SysVerifyRecordEnum.getName(e.getStatus()));
                            }
                            sysVerifyDrawRecordVo.setTradeOutNo(e.getTradeOutNo());
                            sysVerifyDrawRecordVo.setTradeTime(e.getTradeTime());
                            sysVerifyDrawRecordVo.setSystemMoney(e.getSystemMoney());
                            sysVerifyDrawRecordVo.setSystemStatus(e.getSystemStatus());
                            if (e.getSystemStatus().equals(2)){
                                systemStatusName = "成功";
                            }
                            sysVerifyDrawRecordVo.setSystemStatusName(systemStatusName);
                            sysVerifyDrawRecordVo.setThirdMoney(e.getThirdMoney());
                            sysVerifyDrawRecordVo.setThirdStatus(e.getThirdStatus());
                            sysVerifyDrawRecordVo.setThirdTradeTime(e.getThirdTradeTime());
                            sysVerifyDrawRecordVo.setThirdMoney(e.getThirdMoney());
                            sysVerifyDrawRecordVo.setThirdStatus(e.getThirdStatus());
                            if(e.getThirdStatus() != null && e.getThirdStatus().equals(1)){
                                thirdStatusName = "成功";
                            }
                            sysVerifyDrawRecordVo.setThirdStatusName(thirdStatusName);
                            sysVerifyDrawRecordVo.setBankCodeName(e.getBankCodeName());
                            sysVerifyDrawRecordVo.setBankCard(e.getBankCard());
                            sysVerifyDrawRecordVo.setBankHolderIdentify(e.getBankHolderIdentify());
                            sysVerifyDrawRecordVo.setBankHolderName(e.getBankHolderName());
                            sysVerifyDrawRecordVo.setModifyUserId(e.getModifyUserId());
                            sysVerifyDrawRecordVo.setRemark(e.getRemark());
                            sysVerifyDrawRecordVo.setErrorReason(e.getErrorReason());
                            String userName = "";
                            if (e.getModifyUserId() != null) {
                                try {
                                    Result<SysUser> sysUserResult = userFeignClient.selectUserInfoByUserId(e.getModifyUserId());
                                    if (sysUserResult != null){
                                        if (sysUserResult.isSucceed() == true) {
                                            userName = sysUserResult.getData().getRealname() != null ? sysUserResult.getData().getRealname() : "";
                                        }
                                    }else{
                                        log.info("异常处理:TradeOutNo:{},ModifyUserId:{}",e.getTradeOutNo(),e.getModifyUserId());

                                    }
                                }catch (Exception se){
                                    log.warn("异常处理:获取用户信息Feign异常,E:{}",se.getMessage());
                                    //throw new ServiceException("获取用户信息Feign异常");
                                }


                            }
                            sysVerifyDrawRecordVo.setModifyUserName(userName);
                            list.add(sysVerifyDrawRecordVo);
                        }catch (Exception se){
                            throw new ServiceException(se);
                        }

                    }
            );




            PageInfo<SysVerifyDrawRecordVo> pageInfo = (PageInfo<SysVerifyDrawRecordVo>) (PageInfo<?>)objectPageInfo;
            pageInfo.setList(list);


           
Java中对list进行分页,可以通过对list进行切片(slice)来实现。下面是一个示例代码,可以将一个list按照指定的每页数量进行分页: ```java public class Paginator<T> { private List<T> items; private int pageSize; public Paginator(List<T> items, int pageSize) { this.items = items; this.pageSize = pageSize; } public List<T> getPage(int pageNumber) { int startIndex = (pageNumber - 1) * pageSize; int endIndex = Math.min(startIndex + pageSize, items.size()); return items.subList(startIndex, endIndex); } public int getTotalPages() { return (int) Math.ceil((double) items.size() / pageSize); } } ``` 这个类接受两个参数:一个是要分页的list,另一个是每页的数量。它提供了两个方法:getPage用于获取指定页数的分页后的list,getTotalPages用于获取总页数。 例如,假设有一个包含10个整数的list,需要每页分页3个,可以使用以下代码进行分页: ```java List<Integer> items = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int pageSize = 3; Paginator<Integer> paginator = new Paginator<>(items, pageSize); for (int i = 1; i <= paginator.getTotalPages(); i++) { List<Integer> pageItems = paginator.getPage(i); System.out.println(pageItems); } ``` 这个代码会输出: ``` [1, 2, 3] [4, 5, 6] [7, 8, 9] [10] ``` 注意,这个类并没有改变原始的list,而是返回了一个新的分页后的list。如果你需要在原始list上进行分页,可以使用类似`items.subList(startIndex, endIndex).clear(); items.addAll(startIndex, newItems);`的语法来替换原始的list的对应部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值