Explorar el Código

优化 GroupOrderPreInfoList 方法的分页逻辑

在 `GroupsController.cs` 中添加了多个命名空间引用。
移除了 `total` 的异步引用,改为同步计算。
将分页逻辑从 `ToPageListAsync` 替换为手动分页,使用 `Skip` 和 `Take` 方法。
`infoIds` 的生成方式改为从分页后的列表中提取。
返回结果时,确保返回的数据是经过分页处理后的列表及其总数。
LEIYI hace 2 meses
padre
commit
d9f8159b43
Se han modificado 1 ficheros con 17 adiciones y 6 borrados
  1. 17 6
      OASystem/OASystem.Api/Controllers/GroupsController.cs

+ 17 - 6
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -47,6 +47,7 @@ using SqlSugar.Extensions;
 using System.Collections;
 using System.Data;
 using System.Diagnostics;
+using System.Drawing.Printing;
 using System.Globalization;
 using System.IO.Compression;
 using System.Text.Json;
@@ -408,7 +409,6 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> GroupOrderPreInfoList(GroupOrderPreInfoListDto dto)
         {
             var search = dto.Search;
-            RefAsync<int> total = 0;
             var list = await _sqlSugar.Queryable<Grp_OrderPreInfo>()
                 .LeftJoin<Sys_Users>((opi, u) => opi.CreateUserId == u.Id)
                 .Where((opi, u) => opi.IsDel == 0)
@@ -424,10 +424,21 @@ namespace OASystem.API.Controllers
                     Operator = u.CnName,
                     OperationTime = opi.CreateTime
                 })
-                .WhereIF(!string.IsNullOrEmpty(search), x => x.Name.Contains(search) || x.UnitName.Contains(search) || x.VisitCountrys.Contains(search))
-                .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+                //.WhereIF(!string.IsNullOrEmpty(search), x => x.Name.Contains(search) || x.UnitName.Contains(search) || x.VisitCountrys.Contains(search))
+                //.ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+                .ToListAsync();
+
+
+            var listPageData = list.WhereIF(!string.IsNullOrEmpty(search), x => x.Name.Contains(search) || x.UnitName.Contains(search) || x.VisitCountrys.Contains(search)).ToList();
+            int total = list.Count;
+            int totalPageCount = (int)Math.Ceiling(list.Count / (double)dto.PageSize);
+
+            var listPageData1 = listPageData
+                .Skip((dto.PageIndex - 1) * dto.PageSize)
+                .Take(dto.PageSize)
+                .ToList();
 
-            var infoIds = list.Select(x => x.Id).ToList();
+            var infoIds = listPageData1.Select(x => x.Id).ToList();
 
             var typeDatas = await _sqlSugar.Queryable<Sys_SetData>()
                 .Where(x => x.IsDel == 0 && x.STid == 109)
@@ -439,7 +450,7 @@ namespace OASystem.API.Controllers
                 .Select((opi, ft) => new { opi.ParentId, opi.FormTempId, ft.TempId })
                 .ToListAsync();
 
-            foreach (var item in list)
+            foreach (var item in listPageData1)
             {
                 var typeDatas1 = typeDatas.Select(x => new
                 {
@@ -451,7 +462,7 @@ namespace OASystem.API.Controllers
             }
 
 
-            return Ok(JsonView(list, total));
+            return Ok(JsonView(listPageData1, listPageData1.Count));
         }
 
         /// <summary>