diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_TemplateServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_TemplateServices.cs index 76c1f4a2..afeec6e0 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_TemplateServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_TemplateServices.cs @@ -218,4 +218,94 @@ public class Ghrh_TemplateServices : BaseServices.OprateSuccess("查询成功!", result)); } #endregion + + public override async Task> 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(sql); + + return new ServicePageResult(filter.pageNum, total, filter.pageSize, entitys); + + } } \ No newline at end of file