优化Offer列表查询过慢

master
xiaochanghai 5 months ago
parent 5e33c772e1
commit 04610d14d4
  1. 90
      Tiobon.Core.Services/Ghrh/Ghrh_TemplateServices.cs

@ -218,4 +218,94 @@ public class Ghrh_TemplateServices : BaseServices<Ghrh_Template, Ghrh_TemplateDt
return await Task.FromResult(ServiceResult<string>.OprateSuccess("查询成功!", result)); return await Task.FromResult(ServiceResult<string>.OprateSuccess("查询成功!", result));
} }
#endregion #endregion
public override async Task<ServicePageResult<Ghrh_TemplateDto>> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true)
{
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime1 DESC";
if (filter.pageSize == 0)
filter.pageSize = 10000;
Type entityType = typeof(Ghrh_Template);
var countSql = @$" SELECT COUNT(1) FROM {entityType.GetEntityTableName()}";
var sql1 = @$"DECLARE @langId INT = {filter.langId};";
var sql = @$" SELECT A.Id,
A.CreateBy,
A.CreateTime,
A.CreateProg,
A.CreateIP,
A.UpdateBy,
A.UpdateTime,
A.UpdateProg,
A.UpdateIP,
A.OperateLogID,
A.TemplateName,
A.TemplateType,
NULL TemplateContent,
A.IsPublish,
A.RemarkSz,
A.IsDefault,
A.IsEnable,
A.Reverse1,
A.Reverse2,
A.Reverse3,
A.Reverse4,
A.Reverse5,
A.Reverse6,
A.Reverse7,
A.Reverse8,
A.Reverse9,
A.Reverse10,
A.ReverseI1,
A.ReverseI2,
ISNULL ((SELECT CASE WHEN @langId = 1 THEN UserName ELSE UserEname END
FROM Ghrs_User B
WHERE B.UserId = A.CreateBy),
'') CreateDataInfo,
ISNULL ((SELECT CASE WHEN @langId = 1 THEN UserName ELSE UserEname END
FROM Ghrs_User B
WHERE B.UserId = A.UpdateBy),
'') UpdateDataInfo,
ISNULL (A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghrh_Template A";
string conditions = " WHERE 1=1 ";
if (IsEnable == true)
conditions += " AND IsEnable = 1";
else if (IsEnable == false)
conditions += " AND IsEnable = 0";
if (!string.IsNullOrWhiteSpace(condition))
conditions += " AND " + condition;
var properties = entityType.GetGenericProperties();
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize" || !properties.Any(x => x.Name == name))
continue;
if (!string.IsNullOrWhiteSpace(value))
conditions = DealConditions(conditions, name, value);
}
sql += conditions;
countSql += conditions;
int total = await Db.Ado.GetIntAsync(countSql);
sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY " + filter.orderBy + ") NUM FROM (SELECT * FROM (" + sql + " ";
sql += ") A ) B ) C";
sql += " WHERE NUM <= " + filter.pageNum * filter.pageSize + " AND NUM >" + (filter.pageNum - 1) * filter.pageSize;
sql = sql1 + sql;
var entitys = await Db.Ado.SqlQueryAsync<Ghrh_TemplateDto>(sql);
return new ServicePageResult<Ghrh_TemplateDto>(filter.pageNum, total, filter.pageSize, entitys);
}
} }
Loading…
Cancel
Save