fix:修改安装清单查询速度。
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using BLL;
|
||||
using BLL;
|
||||
using MiniExcelLibs;
|
||||
using Model;
|
||||
using System;
|
||||
@@ -213,29 +213,24 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
||||
private void BindGrid()
|
||||
{
|
||||
if (tvControlItem.SelectedNode == null) return;
|
||||
var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount);
|
||||
var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount, out int componentCount, out int partCount);
|
||||
// 2.获取当前分页数据
|
||||
Grid1.RecordCount = totalCount;
|
||||
var table = view_HJGL_InstallDatas;
|
||||
Grid1.DataSource = table;
|
||||
Grid1.DataBind();
|
||||
|
||||
// 更新汇总信息
|
||||
UpdateSummary();
|
||||
// 更新汇总信息(使用已统计的数据)
|
||||
UpdateSummary(componentCount, partCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新汇总信息
|
||||
/// </summary>
|
||||
private void UpdateSummary()
|
||||
private void UpdateSummary(int componentCount, int partCount)
|
||||
{
|
||||
try
|
||||
{
|
||||
var baseQuery = GetIQueryableInstallDatas();
|
||||
// 计算汇总数据
|
||||
var componentCount = baseQuery.Count(x => x.TypeStr == "预制组件");
|
||||
var partCount = baseQuery.Count(x => x.TypeStr == "预制散件");
|
||||
|
||||
// 更新汇总标签
|
||||
lblSummary1.Text = $"预制组件数量:{componentCount}";
|
||||
lblSummary2.Text = $"预制散件数量:{partCount}";
|
||||
@@ -252,14 +247,27 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
||||
/// 查询数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private List<View_HJGL_InstallData> BindData(int pageIndex, int pageSize, out int totalCount)
|
||||
private List<View_HJGL_InstallData> BindData(int pageIndex, int pageSize, out int totalCount, out int componentCount, out int partCount)
|
||||
{
|
||||
var baseQuery = GetIQueryableInstallDatas();
|
||||
totalCount = baseQuery.Count();
|
||||
|
||||
// 一次性统计所有需要的数据(使用 GroupBy 优化)
|
||||
var stats = baseQuery
|
||||
.GroupBy(x => x.TypeStr)
|
||||
.Select(g => new { TypeStr = g.Key, Count = g.Count() })
|
||||
.ToList();
|
||||
|
||||
// 从统计结果中提取数据
|
||||
totalCount = stats.Sum(s => s.Count);
|
||||
componentCount = stats.FirstOrDefault(s => s.TypeStr == "预制组件")?.Count ?? 0;
|
||||
partCount = stats.FirstOrDefault(s => s.TypeStr == "预制散件")?.Count ?? 0;
|
||||
|
||||
// 分页保护
|
||||
if (pageIndex <= 0) pageIndex = 1;
|
||||
if (pageSize <= 0) pageSize = 10;
|
||||
|
||||
var query = baseQuery.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
|
||||
|
||||
// 预制组件数量显示为1,预制散件保持原始数量
|
||||
foreach (var item in query)
|
||||
{
|
||||
@@ -307,9 +315,7 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
||||
{
|
||||
baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim()));
|
||||
|
||||
}
|
||||
// 过滤组件编号/材料编码值为"裕-量"的记录
|
||||
baseQuery = baseQuery.Where(x => x.Code != "裕-量");
|
||||
}
|
||||
baseQuery = baseQuery.OrderBy(x => x.PipelineCode).ThenBy(x => x.Code);
|
||||
|
||||
return baseQuery;
|
||||
|
||||
Reference in New Issue
Block a user