【JAVA基础】Page处理

Page处理

List与Page转换

page.getContent()

  @Override
    @ProcessLovValue
    @ProcessCacheValue
    public Page<PaymentDTO> selectList(Long organizationId, PageRequest pageRequest, PaymentDTO paymentDTO) {
        // 1. 查询付款头列表
        Page<PaymentDTO> page = PageHelper.doPageAndSort(pageRequest, () -> paymentRepository.cusSelectList(paymentDTO));
        List<PaymentDTO> content = page.getContent();
        if (CollectionUtils.isEmpty(content)) {
            return new Page<>();
        }
        //子查询:合同协议号(行or材料行),拼接展示
        List<Long> paymentHeaderIdList = content.stream().map(PaymentDTO::getPaymentHeaderId).collect(Collectors.toList());
        //查询付款行
        PaymentLineDTO queryPaymentLine = new PaymentLineDTO();
        queryPaymentLine.setPayHeaderIdList(paymentHeaderIdList);
        List<PaymentLine> paymentLineList = paymentLineRepository.selectList(queryPaymentLine);
        Map<Long, String> lineOverseasContractCodeMap = null;
        if (CollectionUtils.isNotEmpty(paymentLineList)){
            //根据PaymentHeaderId 分组,逗号拼接OverseasContractCode
            lineOverseasContractCodeMap = paymentLineList.stream()
                    .filter(paymentLine -> StringUtils.isNotBlank(paymentLine.getOverseasContractCode()))
                    .collect(Collectors.groupingBy(PaymentLine::getPaymentHeaderId, Collectors.mapping(PaymentLine::getOverseasContractCode, Collectors.joining(","))));
        }
        //查询材料行
        PaymentMaterial queryPaymentMaterial = new PaymentMaterial();
        queryPaymentMaterial.setPayHeaderIdList(paymentHeaderIdList);
        List<PaymentMaterial> paymentMaterialList = paymentMaterialRepository.selectList(queryPaymentMaterial);
        Map<Long, String> materialOverseasContractCodeMap = null;
        if (CollectionUtils.isNotEmpty(paymentMaterialList)){
            //根据PaymentHeaderId 分组,逗号拼接OverseasContractCode
            materialOverseasContractCodeMap = paymentMaterialList.stream()
                    .filter(paymentMaterial -> StringUtils.isNotBlank(paymentMaterial.getOverseasContractCode()))
                    .collect(Collectors.groupingBy(PaymentMaterial::getPaymentHeaderId, Collectors.mapping(PaymentMaterial::getOverseasContractCode, Collectors.joining(","))));
        }
        //设置到头上
        for (PaymentDTO payment : content) {
            StringBuffer overseasContractCode = new StringBuffer();
            if (MapUtils.isNotEmpty(lineOverseasContractCodeMap) && StringUtils.isNotBlank(lineOverseasContractCodeMap.get(payment.getPaymentHeaderId()))) {
                String lineOverseasContractCode = lineOverseasContractCodeMap.get(payment.getPaymentHeaderId());
                overseasContractCode.append(lineOverseasContractCode);
            }
            if (MapUtils.isNotEmpty(materialOverseasContractCodeMap) && StringUtils.isNotBlank(materialOverseasContractCodeMap.get(payment.getPaymentHeaderId()))) {
                String materialOverseasContractCode = materialOverseasContractCodeMap.get(payment.getPaymentHeaderId());
                if (StringUtils.isNotBlank(overseasContractCode)){
                    overseasContractCode.append(",");
                }
                overseasContractCode.append(materialOverseasContractCode);
            }
            if (StringUtils.isNotBlank(overseasContractCode)){
                payment.setOverseasContractCode(overseasContractCode.toString());
            }
        }

        return page;
    }
 @ApiOperation(value = "付款单列表导出")
    @Permission(level = ResourceLevel.ORGANIZATION)
    @PostMapping("/export")
    @ExcelExport(PaymentExportDTO.class)
    public ResponseEntity<Page<PaymentExportDTO>> paymentListExport(@PathVariable Long organizationId, @RequestBody ExportParam exportParam, HttpServletResponse response, PageRequest pageRequest) {
        List<PaymentExportDTO> paymentExportList = paymentService.paymentExportList(organizationId, pageRequest, exportParam);
        PageInfo pageInfo = new PageInfo(pageRequest.getPage(),pageRequest.getSize());
        Page<PaymentExportDTO> pagePaymentExportDTO = new Page<>(paymentExportList, pageInfo, pageRequest.getTotalElements());
        //PageHelper.doPageAndSort(pageRequest, () -> paymentExportList;
        return Results.success(pagePaymentExportDTO);
    }

PageUtils.pagedList

/**
 * 将list数据分页展示
 */
public class PageUtils {

    /**
     * 手动分页 默认第一页为0
     *
     * @param nowPage 当前页
     * @param pageSize 每页数量
     * @param data 分页数据
     * @param comparator 排序实现 (为null则不排序)
     * @return <T> List<T>
     */
    public static <T> List<T> pagedList(int nowPage, int pageSize, List<T> data, Comparator<T> comparator) {
        if(CollectionUtils.isEmpty(data)){
            return null;
        }
        nowPage = nowPage + 1;
        if (!Objects.isNull(comparator)) {
            data.sort(comparator);
        }
        int fromIndex = (nowPage - 1) * pageSize;
        if (fromIndex >= data.size()) {
            return Collections.emptyList();
        }
        if (fromIndex < 0) {
            return Collections.emptyList();
        }
        int toIndex = nowPage * pageSize;
        if (toIndex >= data.size()) {
            toIndex = data.size();
        }
        return data.subList(fromIndex, toIndex);
    }
}

image

posted on 2024-12-10 14:27  舟山婠贞  阅读(35)  评论(0)    收藏  举报

导航