|
@@ -99,13 +99,15 @@ namespace Util
|
|
|
Dictionary<string, string> fieldDic = new();
|
|
|
if(string.IsNullOrEmpty(queryTable.customSql))
|
|
|
{
|
|
|
+ string tableEnName = queryTable.tableEnName;
|
|
|
+ if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
|
|
|
//查询返回字段
|
|
|
string fields = "";
|
|
|
var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
|
|
|
foreach(var returnField in returnFields)
|
|
|
{
|
|
|
string aliasName = returnField.fieldAliasName;
|
|
|
- if(string.IsNullOrEmpty(aliasName)) aliasName = queryTable.tableEnName + "_" + returnField.fieldEnName;
|
|
|
+ if(string.IsNullOrEmpty(aliasName)) aliasName = tableEnName + "_" + returnField.fieldEnName;
|
|
|
if(returnField.fieldReturnKind == "2")
|
|
|
{
|
|
|
fields += "count(" + returnField.fieldEnName + ") " + aliasName + ",";
|
|
@@ -397,7 +399,7 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- sql = "select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi;
|
|
|
+ sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -449,6 +451,8 @@ namespace Util
|
|
|
if (queryTable != null)
|
|
|
{
|
|
|
string groupBy = "";
|
|
|
+ string tableEnName = queryTable.tableEnName;
|
|
|
+ if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
|
|
|
|
|
|
//查询返回字段
|
|
|
string fields = "";
|
|
@@ -458,29 +462,29 @@ namespace Util
|
|
|
{
|
|
|
if(returnField.fieldReturnKind == "2")
|
|
|
{
|
|
|
- fields += "count(" + returnField.fieldEnName + ") " + queryTable.tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ fields += "count(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
}
|
|
|
else if(returnField.fieldReturnKind == "3")
|
|
|
{
|
|
|
- fields += "sum(" + returnField.fieldEnName + ") " + queryTable.tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ fields += "sum(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
}
|
|
|
else if(returnField.fieldReturnKind == "4")
|
|
|
{
|
|
|
- fields += "avg(" + returnField.fieldEnName + ") " + queryTable.tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ fields += "avg(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
}
|
|
|
else if(returnField.fieldReturnKind == "5")
|
|
|
{
|
|
|
- fields += "max(" + returnField.fieldEnName + ") " + queryTable.tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ fields += "max(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
}
|
|
|
else if(returnField.fieldReturnKind == "6")
|
|
|
{
|
|
|
- fields += "min(" + returnField.fieldEnName + ") " + queryTable.tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ fields += "min(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- fields += returnField.fieldEnName + " " + queryTable.tableEnName + "_" + returnField.fieldEnName + ",";
|
|
|
+ fields += returnField.fieldEnName + " " + tableEnName + "_" + returnField.fieldEnName + ",";
|
|
|
}
|
|
|
- fieldDic.Add(queryTable.tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
|
|
|
+ fieldDic.Add(tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
|
|
|
}
|
|
|
fields = fields.TrimEnd(',');
|
|
|
|
|
@@ -713,7 +717,7 @@ namespace Util
|
|
|
if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
|
|
|
|
|
|
var db = initDb(queryTable.databaseId);
|
|
|
- string sql = "select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
|
|
|
+ string sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
|
|
|
var items = db.Ado.GetDataTable(sql);
|
|
|
return items;
|
|
|
}
|
|
@@ -1065,6 +1069,7 @@ namespace Util
|
|
|
Dictionary<string, object> logStepDic = new();
|
|
|
|
|
|
var returnFieldId = condition.returnFieldId; //条件返回字段
|
|
|
+ returnFieldId = MatchExpressionVal(returnFieldId);
|
|
|
var fieldQueryKind = condition.fieldQueryKind; //匹配条件
|
|
|
var fieldQueryModel = condition.fieldQueryModel; //匹配方式
|
|
|
var fieldQueryValue = condition.fieldQueryValue; //匹配值
|
|
@@ -1458,6 +1463,7 @@ namespace Util
|
|
|
{
|
|
|
Dictionary<string, object> logStepDic = new();
|
|
|
var returnFieldId = condition.returnFieldId; //条件返回字段
|
|
|
+ returnFieldId = MatchExpressionVal(returnFieldId);
|
|
|
var fieldQueryKind = condition.fieldQueryKind; //匹配条件
|
|
|
var fieldQueryModel = condition.fieldQueryModel; //匹配方式
|
|
|
var fieldQueryValue = condition.fieldQueryValue; //匹配值
|
|
@@ -1933,6 +1939,8 @@ namespace Util
|
|
|
{
|
|
|
//查询返回字段
|
|
|
string fields = "1";
|
|
|
+ string tableEnName = queryTable.tableEnName;
|
|
|
+ if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
|
|
|
Dictionary<string, string> fieldDic = new();
|
|
|
var returnFields = queryReturnFieldService.GetList(m => m.objectTableId == queryTable.id);
|
|
|
if(returnFields.Count > 0)
|
|
@@ -1941,7 +1949,7 @@ namespace Util
|
|
|
foreach(var returnField in returnFields)
|
|
|
{
|
|
|
string aliasName = returnField.fieldAliasName;
|
|
|
- if(string.IsNullOrEmpty(aliasName)) aliasName = queryTable.tableEnName + "_" + returnField.fieldEnName;
|
|
|
+ if(string.IsNullOrEmpty(aliasName)) aliasName = tableEnName + "_" + returnField.fieldEnName;
|
|
|
if(returnField.fieldReturnKind == "2")
|
|
|
{
|
|
|
fields += "count(" + returnField.fieldEnName + ") " + aliasName + ",";
|
|
@@ -2145,7 +2153,7 @@ namespace Util
|
|
|
}
|
|
|
|
|
|
var db = initDb(queryTable.databaseId);
|
|
|
- string sql = "select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi;
|
|
|
+ string sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi;
|
|
|
var items = db.Ado.GetDataTable(sql);
|
|
|
if(items.Rows.Count > 0)
|
|
|
{
|
|
@@ -2524,6 +2532,33 @@ namespace Util
|
|
|
if(str.StartsWith("#{this_month") && str.EndsWith("MONTH}#")) return DateTime.Now.AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM");
|
|
|
if(str.StartsWith("#{") && str.EndsWith("DAY}#")) return DateTime.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[0]).AddDays(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
if(str.StartsWith("#{") && str.EndsWith("MONTH}#")) return DateTime.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[0]).AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ if(str.StartsWith("#{") && str.EndsWith("}#"))
|
|
|
+ {
|
|
|
+ string[] data = str.Replace("#{", "").Replace("}#", "").Split(',');
|
|
|
+ string tag = data[0];
|
|
|
+ string format = data[data.Length - 1];
|
|
|
+ if(tag == "now" && format.StartsWith("yyyy"))
|
|
|
+ {
|
|
|
+ if(data.Length == 2)
|
|
|
+ {
|
|
|
+ return DateTime.Now.ToString(format);
|
|
|
+ }
|
|
|
+ else if(data.Length == 4)
|
|
|
+ {
|
|
|
+ if(data[2] == "DAY") return DateTime.Now.AddDays(int.Parse(data[1])).ToString(format);
|
|
|
+ if(data[2] == "MONTH") return DateTime.Now.AddMonths(int.Parse(data[1])).ToString(format);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+ public static string MatchExpressionVal(string str)
|
|
|
+ {
|
|
|
+ MatchCollection mc = Regex.Matches(str, "#\\{.*?\\}#");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ str = str.Replace(m.Value, GetExpressionVal(m.Value));
|
|
|
+ }
|
|
|
return str;
|
|
|
}
|
|
|
|
|
@@ -2573,6 +2608,18 @@ namespace Util
|
|
|
//获取查询条件数据
|
|
|
public static string GetQueryTableData(List<QueryCondition> condiDic, string key)
|
|
|
{
|
|
|
+ if(key.Contains("#{"))
|
|
|
+ {
|
|
|
+ Match m = Regex.Match(key, "\\$\\{.*?\\}\\$");
|
|
|
+ if(m.Success)
|
|
|
+ {
|
|
|
+ string keyString = m.Value.Replace("${", "").Replace("}$", "");
|
|
|
+ string val = condiDic.Any(m => m.FieldEnName == keyString) ? condiDic.FirstOrDefault(m => m.FieldEnName == keyString).Value.ToString() : "0";
|
|
|
+ key = key.Replace(m.Value, val);
|
|
|
+ key = GetExpressionVal(key);
|
|
|
+ return key;
|
|
|
+ }
|
|
|
+ }
|
|
|
return condiDic.Any(m => m.FieldEnName == key) ? condiDic.FirstOrDefault(m => m.FieldEnName == key).Value.ToString() : "0";
|
|
|
}
|
|
|
public static string GetQueryTableTitle(List<QueryCondition> condiDic, string key)
|