[HttpPost]
[Route("BuildLog/Query")]
public O34000 QueryBuildLogList(I34000 ajson)//增加检索和高级检索
{
O34000 fResult = new O34000();
if (string.IsNullOrEmpty(ajson.AscOrDesc))
{
fResult.Msg = "AscOrDesc未传值";
return fResult;
}
if (string.IsNullOrEmpty(ajson.Sorter))
{
fResult.Msg = "Sorter未传值";
return fResult;
}
//高级检索
string where = SysDal.GetWhereStr(ajson.PowerSearch, ajson.Connector);
string sql = "select * from PRJ_BuildLog where 1=1 " + where;
var List = db.Database.SqlQuery<PRJ_BuildLog>(sql).AsQueryable();
//普通检索
if (!string.IsNullOrEmpty(ajson.EvalName))
{
List = List.Where(p => p.BuildLogName == ajson.EvalName).AsQueryable();
}
int startRow = (ajson.PageIndex - 1) * ajson.PageSize;
int rowCount = List.Count();
if (rowCount != 0)
{
fResult.Totals = List.Count();
fResult.PageCount = rowCount;
fResult.PageIndex = ajson.PageIndex;
fResult.PageSize = ajson.PageSize;
if (ajson.AscOrDesc == "Desc")
{
var result = List.OrderByDescending(ajson.Sorter).Skip(startRow).Take(ajson.PageSize).ToList();
fResult.HeadRows = result;
}
else
{
var result = List.OrderBy(ajson.Sorter).Skip(startRow).Take(ajson.PageSize).ToList();
fResult.HeadRows = result;
}
fResult.Success = 1;
}
return fResult;
}
/// <summary>
/// C#反射遍历对象属性
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="t">对象</param>
public static string GetWhereStr<T>(T t,string connector)
{
string tStr = string.Empty;
if (t == null)
{
return tStr;
}
System.Reflection.PropertyInfo[] properties = t.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
if (properties.Length <= 0)
{
return tStr;
}
foreach (System.Reflection.PropertyInfo item in properties)
{
string name = item.Name;
object value = item.GetValue(t, null);
try
{
if (value != null)
{
SearchItem si = (SearchItem)value;
if (!string.IsNullOrEmpty(si.Value1) && !string.IsNullOrEmpty(si.Type))
{
if (!string.IsNullOrEmpty(si.Value1) && !string.IsNullOrEmpty(si.Value2))
{
tStr = tStr + " " + connector + " " + name + " between '" + si.Value1 + "' And '" + si.Value2 + "'";
}
else
{
switch (si.Type)
{
case "左匹配":
tStr = tStr + " "+ connector + " " + name + " like '%" + si.Value1 + "%'";
break;
case "=":
tStr = tStr + " " + connector + " " + name + "='" + si.Value1 + "'";
break;
case ">":
tStr = tStr + " " + connector + " " + name + ">'" + si.Value1 + "'";
break;
case "<":
tStr = tStr + " " + connector + " " + name + "<'" + si.Value1 + "'";
break;
case ">=":
tStr = tStr + " " + connector + " " + name + ">='" + si.Value1 + "'";
break;
case "<=":
tStr = tStr + " " + connector + " " + name + "<='" + si.Value1 + "'";
break;
case "不等于":
tStr = tStr + " " + connector + " " + name + "<>'" + si.Value1 + "'";
break;
}
}
}
}
}
catch (Exception ex)
{
tStr = tStr;
}
}
return tStr;
}