You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
5.6 KiB
132 lines
5.6 KiB
using SqlSugar; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Text; |
|
using System.Linq; |
|
namespace ReZero.SuperAPI |
|
{ |
|
/// <summary> |
|
/// OrdeBy |
|
/// </summary> |
|
public partial class QueryCommon : IDataService |
|
{ |
|
private QueryMethodInfo OrderBySelectBefore(Type type, DataModel dataModel, QueryMethodInfo queryObject) |
|
{ |
|
if (IsMergeTable(dataModel)) |
|
{ |
|
return queryObject; |
|
} |
|
List<OrderByModel> orderByModels = new List<OrderByModel>(); |
|
if (dataModel.OrderByFixedParemters != null) |
|
{ |
|
foreach (var item in dataModel.OrderByFixedParemters) |
|
{ |
|
orderByModels.Add(new OrderByModel() |
|
{ |
|
FieldName = GetFieldName(queryObject, new DataModelDynamicOrderParemter() |
|
{ |
|
FieldName = item.FieldName, |
|
OrderByType = item.OrderByType, |
|
TableIndex = item.TableIndex |
|
}), |
|
OrderByType = item.OrderByType |
|
}); |
|
} |
|
} |
|
if (dataModel.OrderDynamicParemters != null) |
|
{ |
|
var columns = App.Db.EntityMaintenance.GetEntityInfo(queryObject.EntityType).Columns; |
|
foreach (var item in dataModel.OrderDynamicParemters) |
|
{ |
|
var isAny = columns.Any(it => it.PropertyName?.ToLower() == item.FieldName?.ToLower() || it.DbColumnName?.ToLower() == item.FieldName?.ToLower()); |
|
if (isAny) |
|
{ |
|
orderByModels.Add(new OrderByModel() |
|
{ |
|
FieldName = GetFieldName(queryObject, item), |
|
OrderByType = item.OrderByType |
|
}); |
|
} |
|
else if (dataModel?.SelectParameters?.Where(it => it.AsName?.ToLower() == item.FieldName?.ToLower()).Any() == true) |
|
{ |
|
if (dataModel.MergeOrderByFixedParemters == null) |
|
{ |
|
dataModel.MergeOrderByFixedParemters = new List<DataModelOrderParemter>(); |
|
} |
|
} |
|
else |
|
{ |
|
throw new Exception(TextHandler.GetCommonText("排序字段 " + item.FieldName + "不存在实体", "OrderBy " + item.FieldName + " is not exist")); |
|
} |
|
} |
|
} |
|
queryObject = queryObject.OrderBy(orderByModels); |
|
return queryObject; |
|
} |
|
private QueryMethodInfo OrderBySelectAfter(Type type, DataModel dataModel, QueryMethodInfo queryObject) |
|
{ |
|
if (!IsMergeTable(dataModel)) |
|
{ |
|
return queryObject; |
|
} |
|
List<OrderByModel> orderByModels = new List<OrderByModel>(); |
|
if (dataModel.OrderByFixedParemters != null) |
|
{ |
|
foreach (var item in dataModel.OrderByFixedParemters) |
|
{ |
|
orderByModels.Add(new OrderByModel() |
|
{ |
|
FieldName = GetFieldName(queryObject, new DataModelDynamicOrderParemter() |
|
{ |
|
FieldName = item.FieldName, |
|
OrderByType = item.OrderByType, |
|
TableIndex = item.TableIndex |
|
}), |
|
OrderByType = item.OrderByType |
|
}); |
|
} |
|
} |
|
if (dataModel.OrderDynamicParemters != null) |
|
{ |
|
var columns = App.Db.EntityMaintenance.GetEntityInfo(queryObject.EntityType).Columns; |
|
foreach (var item in dataModel.OrderDynamicParemters) |
|
{ |
|
var isAny = columns.Any(it => it.PropertyName?.ToLower() == item.FieldName?.ToLower() || it.DbColumnName?.ToLower() == item.FieldName?.ToLower()); |
|
if (isAny) |
|
{ |
|
orderByModels.Add(new OrderByModel() |
|
{ |
|
FieldName = GetFieldName(queryObject, item), |
|
OrderByType = item.OrderByType |
|
}); |
|
} |
|
else if (dataModel?.SelectParameters?.Where(it => it.AsName?.ToLower() == item.FieldName?.ToLower()).Any() == true) |
|
{ |
|
if (dataModel.MergeOrderByFixedParemters == null) |
|
{ |
|
dataModel.MergeOrderByFixedParemters = new List<DataModelOrderParemter>(); |
|
} |
|
} |
|
else |
|
{ |
|
throw new Exception(TextHandler.GetCommonText("排序字段 " + item.FieldName + "不存在实体", "OrderBy " + item.FieldName + " is not exist")); |
|
} |
|
} |
|
} |
|
queryObject = queryObject.OrderBy(orderByModels); |
|
return queryObject; |
|
} |
|
private string GetFieldName(QueryMethodInfo queryObject, DataModelDynamicOrderParemter item) |
|
{ |
|
var name = _sqlSugarClient!.EntityMaintenance.GetDbColumnName(item.FieldName, queryObject.EntityType); |
|
if (this.resultType != null) |
|
{ |
|
return item.FieldName; |
|
} |
|
else |
|
{ |
|
return PubConst.Orm_TableDefaultPreName + item.TableIndex + "." + name; |
|
} |
|
} |
|
} |
|
}
|
|
|