|
@@ -129,18 +129,14 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
|
|
|
HttpServletRequest req) {
|
|
|
QueryWrapper<StorageBill> queryWrapper = QueryGenerator.initQueryWrapper(storageBill, req.getParameterMap());
|
|
|
|
|
|
- // 先不加 amountTotal 过滤条件,查询所有 StorageBill
|
|
|
- Page<StorageBill> page = new Page<>(pageNo, pageSize);
|
|
|
- IPage<StorageBill> pageList = storageBillService.page(page, queryWrapper);
|
|
|
-
|
|
|
- // 获取当前分页的记录列表
|
|
|
- List<StorageBill> records = pageList.getRecords();
|
|
|
- if (records.isEmpty()) {
|
|
|
- return Result.OK(pageList);
|
|
|
+ // 先查询所有 StorageBill 数据(不分页)
|
|
|
+ List<StorageBill> allRecords = storageBillService.list(queryWrapper);
|
|
|
+ if (allRecords.isEmpty()) {
|
|
|
+ return Result.OK(new Page<StorageBill>(pageNo, pageSize));
|
|
|
}
|
|
|
|
|
|
// 批量查询所有 storageBillId 相关的 BilletAutoTmp 记录
|
|
|
- List<String> storageBillIds = records.stream()
|
|
|
+ List<String> storageBillIds = allRecords.stream()
|
|
|
.map(StorageBill::getId)
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
@@ -153,25 +149,30 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
|
|
|
Map<String, Long> billetCountMap = billetAutoTmpList.stream()
|
|
|
.collect(Collectors.groupingBy(BilletAutoTmp::getStorageBillId, Collectors.counting()));
|
|
|
|
|
|
- // 遍历 StorageBill 记录,累加 amountTotal
|
|
|
- records.forEach(bill -> {
|
|
|
- Long count = billetCountMap.getOrDefault(bill.getId(), 0L);
|
|
|
- bill.setAmountTotal(bill.getAmountTotal() + count.intValue());
|
|
|
- });
|
|
|
-
|
|
|
- // 最终过滤掉 amountTotal 为 0 的数据
|
|
|
- List<StorageBill> filteredRecords = records.stream()
|
|
|
- .filter(bill -> bill.getAmountTotal() > 0) // 这里进行最终过滤
|
|
|
+ // 遍历所有 StorageBill 记录,累加 amountTotal,并过滤 amountTotal > 0
|
|
|
+ List<StorageBill> filteredRecords = allRecords.stream()
|
|
|
+ .peek(bill -> bill.setAmountTotal(bill.getAmountTotal() + billetCountMap.getOrDefault(bill.getId(), 0L).intValue()))
|
|
|
+ .filter(bill -> bill.getAmountTotal() > 0) // 最终过滤掉 amountTotal 为 0 的数据
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- // 重新封装分页数据
|
|
|
- pageList.setRecords(filteredRecords);
|
|
|
- pageList.setTotal(filteredRecords.size()); // 更新总条数
|
|
|
+ // 更新 total
|
|
|
+ long total = filteredRecords.size(); // 最终过滤后的总记录数
|
|
|
|
|
|
- return Result.OK(pageList);
|
|
|
- }
|
|
|
+ // 分页处理
|
|
|
+ int fromIndex = (pageNo - 1) * pageSize;
|
|
|
+ int toIndex = Math.min(fromIndex + pageSize, filteredRecords.size());
|
|
|
+
|
|
|
+ // 如果 fromIndex 超过 total,返回空集合
|
|
|
+ List<StorageBill> pageRecords = (fromIndex >= filteredRecords.size()) ?
|
|
|
+ Collections.emptyList() : filteredRecords.subList(fromIndex, toIndex);
|
|
|
|
|
|
+ // 封装分页数据
|
|
|
+ Page<StorageBill> pageList = new Page<>(pageNo, pageSize);
|
|
|
+ pageList.setRecords(pageRecords);
|
|
|
+ pageList.setTotal(total); // 更新为最终正确的 total
|
|
|
|
|
|
+ return Result.OK(pageList);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@ApiOperation(value="钢坯热送单-分页列表查询", notes="钢坯热送单-分页列表查询")
|