瀏覽代碼

修复船公司查询分页错误

- 修改searchShippingCompanies方法,先获取所有符合条件的公司数据
- 在内存中进行过滤和转换
- 手动实现分页逻辑,避免数据库分页与内存过滤冲突
- 修复Page对象创建时的total参数计算错误
heyiwen 2 周之前
父節點
當前提交
b28db180f4
共有 1 個文件被更改,包括 16 次插入8 次删除
  1. 16 8
      JavaBackend/src/main/java/com/lianda/backend/service/CommonDataService.java

+ 16 - 8
JavaBackend/src/main/java/com/lianda/backend/service/CommonDataService.java

@@ -119,17 +119,17 @@ public class CommonDataService {
                 .map(BusCustomerCompanyBusiness::getCustomerCompanyId)
                 .collect(Collectors.toSet());
 
-        // 查询对应的客户公司信息(支持模糊搜索和分页
-        Page<BusCustomerCompany> companyPage;
+        // 查询对应的客户公司信息(支持模糊搜索)
+        List<BusCustomerCompany> allCompanies;
         if (companyName != null && !companyName.isEmpty()) {
-            companyPage = busCustomerCompanyRepository.findByNameContainingAndRecordStatus(
-                    companyName, 1, pageable);
+            allCompanies = busCustomerCompanyRepository.findByNameContainingAndRecordStatus(
+                    companyName, 1);
         } else {
-            companyPage = busCustomerCompanyRepository.findAll(pageable);
+            allCompanies = busCustomerCompanyRepository.findAll();
         }
 
         // 过滤出船公司类型的数据并转换为DTO
-        List<ShippingCompanyDTO> filteredCompanies = companyPage.getContent().stream()
+        List<ShippingCompanyDTO> filteredCompanies = allCompanies.stream()
                 .filter(company -> customerCompanyIds.contains(company.getCustomerCompanyId()))
                 .map(company -> new ShippingCompanyDTO(
                         company.getCustomerCompanyId(),
@@ -139,9 +139,17 @@ public class CommonDataService {
                         company.getMobile()))
                 .collect(Collectors.toList());
 
-        // 创建新的Page对象,只包含过滤后的数据
+        // 手动分页
+        int pageSize = pageable.getPageSize();
+        int currentPage = pageable.getPageNumber();
+        int start = currentPage * pageSize;
+        int end = Math.min(start + pageSize, filteredCompanies.size());
+
+        List<ShippingCompanyDTO> pageContent = filteredCompanies.subList(start, end);
+
+        // 创建新的Page对象
         return new org.springframework.data.domain.PageImpl<>(
-                filteredCompanies,
+                pageContent,
                 pageable,
                 filteredCompanies.size()
         );