优化 表格查询功能

This commit is contained in:
小肥羊 2024-10-30 18:16:54 +08:00
parent d8224e68d2
commit 6d67743869
5 changed files with 47 additions and 9 deletions

View File

@ -23,9 +23,9 @@ namespace VideoAnalysisRazor.Layouts
new MenuDataItem new MenuDataItem
{ {
Path = "/", Path = "/",
Name = "首页", Name = "课堂指标",
Key = "hone", Key = "EvaluationProject",
Icon = "home", Icon = "EvaluationProject",
} }
}; };
} }

View File

@ -29,13 +29,13 @@ namespace Learn.VideoAnalysis.Components.Pages
async void OnChange(QueryModel<CourseGradingCriteria> query) async void OnChange(QueryModel<CourseGradingCriteria> query)
{ {
tableLoading = true; tableLoading = true;
Expression<Func<CourseGradingCriteria, bool>> where = null; List<IConditionalModel> where = default!;
if (query.FilterModel != null && ((query.FilterModel?.Count() ?? 0) > 0)) if (query.FilterModel != null && ((query.FilterModel?.Count() ?? 0) > 0))
{ {
where = query.GetFilterExpression(); where = query.ToSqlSugerWhere();
} }
_dataSource = await criteria.AsQueryable() _dataSource = await criteria.AsQueryable()
.WhereIF(where != null, where) .Where(where)
.ToPageListAsync(query.PageIndex - 1, query.PageSize, _total); .ToPageListAsync(query.PageIndex - 1, query.PageSize, _total);
tableLoading = false; tableLoading = false;
StateHasChanged(); StateHasChanged();

View File

@ -24,7 +24,6 @@
<PackageReference Include="AntDesign.Charts" Version="0.4.0" /> <PackageReference Include="AntDesign.Charts" Version="0.4.0" />
<PackageReference Include="AntDesign.Extensions.Localization" Version="0.20.2.1" /> <PackageReference Include="AntDesign.Extensions.Localization" Version="0.20.2.1" />
<PackageReference Include="AntDesign.ProLayout" Version="0.20.2.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageReference Include="System.Net.Http.Json" Version="8.0.0" /> <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />

View File

@ -1,4 +1,6 @@
using FreeRedis; using AntDesign;
using AntDesign.TableModels;
using FreeRedis;
using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.DependencyModel;
using SqlSugar; using SqlSugar;
using SqlSugar.IOC; using SqlSugar.IOC;
@ -71,7 +73,43 @@ namespace VideoAnalysisCore.Common
/// </summary> /// </summary>
public static class ExpandFunction public static class ExpandFunction
{ {
/// <summary>
/// 转换 ant 查询枚举 到 sqlsuger枚举
/// </summary>
/// <param name="filterOperator">ant 查询枚举</param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static ConditionalType ConvertToConditionalType(TableFilterCompareOperator filterOperator)
{
return filterOperator switch
{
TableFilterCompareOperator.Equals => ConditionalType.Equal,
TableFilterCompareOperator.Contains => ConditionalType.Like,
TableFilterCompareOperator.StartsWith => ConditionalType.LikeLeft,
TableFilterCompareOperator.EndsWith => ConditionalType.LikeRight,
TableFilterCompareOperator.GreaterThan => ConditionalType.GreaterThan,
TableFilterCompareOperator.LessThan => ConditionalType.LessThan,
TableFilterCompareOperator.GreaterThanOrEquals => ConditionalType.GreaterThanOrEqual,
TableFilterCompareOperator.LessThanOrEquals => ConditionalType.LessThanOrEqual,
TableFilterCompareOperator.Condition => ConditionalType.In,
TableFilterCompareOperator.NotEquals => ConditionalType.NoEqual,
TableFilterCompareOperator.IsNull => ConditionalType.IsNullOrEmpty,
TableFilterCompareOperator.IsNotNull => ConditionalType.IsNot,
TableFilterCompareOperator.NotContains => ConditionalType.NoLike,
TableFilterCompareOperator.TheSameDateWith => ConditionalType.EqualNull,
TableFilterCompareOperator.Between => ConditionalType.Range,
_ => throw new ArgumentOutOfRangeException(nameof(filterOperator), filterOperator, "未知的枚举类型!")
};
}
public static List<IConditionalModel> ToSqlSugerWhere(this QueryModel qm )
{
return qm.FilterModel.SelectMany(s => s.Filters.Select(x => new ConditionalModel()
{
FieldName = s.FieldName,
ConditionalType = ConvertToConditionalType( x.FilterCompareOperator),
FieldValue = x.Value.ToString(),
} as IConditionalModel)).ToList();
}
/// <summary> /// <summary>
/// 获取应用有效程序集 /// 获取应用有效程序集
/// </summary> /// </summary>

View File

@ -55,5 +55,6 @@
<PackageReference Include="Whisper.net" Version="1.5.0" /> <PackageReference Include="Whisper.net" Version="1.5.0" />
<PackageReference Include="Whisper.net.Runtime" Version="1.5.0" /> <PackageReference Include="Whisper.net.Runtime" Version="1.5.0" />
<PackageReference Include="xFFmpeg.NET" Version="6.0.0" /> <PackageReference Include="xFFmpeg.NET" Version="6.0.0" />
<PackageReference Include="AntDesign.ProLayout" Version="0.20.2.1" />
</ItemGroup> </ItemGroup>
</Project> </Project>