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.
133 lines
5.6 KiB
133 lines
5.6 KiB
3 weeks ago
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|