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]()