49 lines
2.4 KiB
C#
49 lines
2.4 KiB
C#
using SqlSugar;
|
|
using AntDesign;
|
|
using AntDesign.TableModels;
|
|
|
|
namespace Learn.VideoAnalysis.API.Expand
|
|
{
|
|
public static class SearchExpand
|
|
{
|
|
|
|
/// <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.GetType().IsEnum ? ((int)x.Value).ToString() : x.Value.ToString(),
|
|
} as IConditionalModel)).ToList();
|
|
}
|
|
}
|
|
}
|