PageHelper分页总数、页数错误问题

问题描述
在使用PageHelper进行分页的时候,total总数和实际总数对不上,total数量=每页数据量
原代码
public PageInfo selectTowerWarning(String projectId, String deviceId, String date, String type) {
        String table = "equip_tower_log_" + projectId;
        if (StringUtils.isBlank(date)) {
            date = DateUtils.formatDate(new Date());
        }
        List<TowerLog> lists = baseMapper.selectTowerWarning(table, deviceId, date, type);
        List<Map<String, String>> listVo = dataTransform(lists)
        PageInfo<Map<String, String>> pageInfo = new PageInfo(listVo);
        return pageInfo;
    }
问题原因
对分页后的结果进行了二次封装
PageHelper.startPage(pageIndex, pageSize);返回Page对象(继承ArrayList),里面有总数、当前页、页数等信息。
policyTypeService.queryPolicyTypePageList(pageReq);返回的实际也是Page对象,所以在进行Map转换的时候会丢失Page的分页信息。
解决方案
获取原始Page分页信息对vo对象进行手动赋值
public PageInfo selectTowerWarning(String projectId, String deviceId, String date, String type) {
        String table = "equip_tower_log_" + projectId;
        if (StringUtils.isBlank(date)) {
            date = DateUtils.formatDate(new Date());
        }
        List<TowerLog> lists = baseMapper.selectTowerWarning(table, deviceId, date, type);
        List<Map<String, String>> listVo = dataTransform(lists)
               PageInfo<Map<String, String>> pageInfo = new PageInfo();
        if (lists instanceof Page) {
            pageInfo.setPageNum(((Page<TowerLog>) lists).getPageNum());
            pageInfo.setPageSize(((Page<TowerLog>) lists).getPageSize());
            pageInfo.setPages(((Page<TowerLog>) lists).getPages());
            pageInfo.setTotal(((Page<TowerLog>) lists).getTotal());
        }
        pageInfo.setList(listVo);
        return pageInfo;
    }