|
@@ -100,7 +100,7 @@ namespace Util
|
|
|
{
|
|
|
return jsonData[param.fieldEnName].ToString();
|
|
|
}
|
|
|
- return "0";
|
|
|
+ return key;
|
|
|
}
|
|
|
|
|
|
//数据库链接
|
|
@@ -149,6 +149,7 @@ namespace Util
|
|
|
{
|
|
|
string aliasName = returnField.fieldAliasName;
|
|
|
if(string.IsNullOrEmpty(aliasName)) aliasName = tableEnName + "_" + returnField.fieldEnName;
|
|
|
+ if(aliasName.Contains("-")) aliasName = aliasName.Split('-')[0];
|
|
|
if(returnField.fieldReturnKind == "2")
|
|
|
{
|
|
|
fields += "count(" + returnField.fieldEnName + ") " + aliasName + ",";
|
|
@@ -191,6 +192,7 @@ namespace Util
|
|
|
string fieldQueryKind = queryField.fieldQueryKind;
|
|
|
string fieldQueryModel = queryField.fieldQueryModel;
|
|
|
string fieldQueryValue = queryField.fieldQueryValue;
|
|
|
+ fieldQueryValue = MatchExpressionVal(fieldQueryValue);
|
|
|
string fieldQueryValueType = queryField.fieldQueryValueType;
|
|
|
if(fieldQueryKind == "1") //模糊匹配
|
|
|
{
|
|
@@ -499,278 +501,287 @@ namespace Util
|
|
|
var queryTable = queryTableService.GetFirst(m => ids.Contains(m.id) && m.startDataFlag == true);
|
|
|
if (queryTable != null)
|
|
|
{
|
|
|
- string groupBy = "";
|
|
|
- string tableEnName = queryTable.tableEnName;
|
|
|
- if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
|
|
|
-
|
|
|
- //查询返回字段
|
|
|
- string fields = "";
|
|
|
- Dictionary<string, string> fieldDic = new();
|
|
|
- var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
|
|
|
- foreach(var returnField in returnFields)
|
|
|
- {
|
|
|
- if(returnField.fieldReturnKind == "2")
|
|
|
- {
|
|
|
- fields += "count(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
- }
|
|
|
- else if(returnField.fieldReturnKind == "3")
|
|
|
- {
|
|
|
- fields += "sum(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
- }
|
|
|
- else if(returnField.fieldReturnKind == "4")
|
|
|
- {
|
|
|
- fields += "avg(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
- }
|
|
|
- else if(returnField.fieldReturnKind == "5")
|
|
|
- {
|
|
|
- fields += "max(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
- }
|
|
|
- else if(returnField.fieldReturnKind == "6")
|
|
|
- {
|
|
|
- fields += "min(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- fields += returnField.fieldEnName + " " + tableEnName + "_" + returnField.fieldEnName + ",";
|
|
|
- }
|
|
|
- fieldDic.Add(tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
|
|
|
- }
|
|
|
- fields = fields.TrimEnd(',');
|
|
|
-
|
|
|
- //查询匹配条件
|
|
|
- string condi = "";
|
|
|
- var queryFields = queryFieldService.GetList(m => m.queryTableId == queryTable.id);
|
|
|
- foreach(var queryField in queryFields)
|
|
|
+ string sql = "";
|
|
|
+ if(string.IsNullOrEmpty(queryTable.customSql))
|
|
|
{
|
|
|
- string fieldEnName = queryField.fieldEnName;
|
|
|
- string fieldQueryKind = queryField.fieldQueryKind;
|
|
|
- string fieldQueryModel = queryField.fieldQueryModel;
|
|
|
- string fieldQueryValue = queryField.fieldQueryValue;
|
|
|
- string fieldQueryValueType = queryField.fieldQueryValueType;
|
|
|
+ string groupBy = "";
|
|
|
+ string tableEnName = queryTable.tableEnName;
|
|
|
+ if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
|
|
|
|
|
|
- //拼装聚合字段
|
|
|
- if(queryField.groupByFlag)
|
|
|
+ //查询返回字段
|
|
|
+ string fields = "";
|
|
|
+ Dictionary<string, string> fieldDic = new();
|
|
|
+ var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
|
|
|
+ foreach(var returnField in returnFields)
|
|
|
{
|
|
|
- groupBy += queryField.fieldEnName + ",";
|
|
|
+ if(returnField.fieldReturnKind == "2")
|
|
|
+ {
|
|
|
+ fields += "count(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ }
|
|
|
+ else if(returnField.fieldReturnKind == "3")
|
|
|
+ {
|
|
|
+ fields += "sum(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ }
|
|
|
+ else if(returnField.fieldReturnKind == "4")
|
|
|
+ {
|
|
|
+ fields += "avg(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ }
|
|
|
+ else if(returnField.fieldReturnKind == "5")
|
|
|
+ {
|
|
|
+ fields += "max(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ }
|
|
|
+ else if(returnField.fieldReturnKind == "6")
|
|
|
+ {
|
|
|
+ fields += "min(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ fields += returnField.fieldEnName + " " + tableEnName + "_" + returnField.fieldEnName + ",";
|
|
|
+ }
|
|
|
+ fieldDic.Add(tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
|
|
|
}
|
|
|
- else
|
|
|
+ fields = fields.TrimEnd(',');
|
|
|
+
|
|
|
+ //查询匹配条件
|
|
|
+ string condi = "";
|
|
|
+ var queryFields = queryFieldService.GetList(m => m.queryTableId == queryTable.id);
|
|
|
+ foreach(var queryField in queryFields)
|
|
|
{
|
|
|
- if(fieldQueryKind == "1") //模糊匹配
|
|
|
+ string fieldEnName = queryField.fieldEnName;
|
|
|
+ string fieldQueryKind = queryField.fieldQueryKind;
|
|
|
+ string fieldQueryModel = queryField.fieldQueryModel;
|
|
|
+ string fieldQueryValue = queryField.fieldQueryValue;
|
|
|
+ string fieldQueryValueType = queryField.fieldQueryValueType;
|
|
|
+
|
|
|
+ //拼装聚合字段
|
|
|
+ if(queryField.groupByFlag)
|
|
|
{
|
|
|
- condi += " and " + fieldEnName + " like ";
|
|
|
- if(fieldQueryModel == "request_param")
|
|
|
- {
|
|
|
- Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
- string val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
- condi += "'%" + val + "%'";
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "fixed_value")
|
|
|
- {
|
|
|
- condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "db_field")
|
|
|
- {
|
|
|
- condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "query_field")
|
|
|
- {
|
|
|
- string val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
- condi += "'%" + val + "%'";
|
|
|
- }
|
|
|
+ groupBy += queryField.fieldEnName + ",";
|
|
|
}
|
|
|
- else if(fieldQueryKind == "2") //精确匹配
|
|
|
+ else
|
|
|
{
|
|
|
- if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is null";
|
|
|
- else
|
|
|
+ if(fieldQueryKind == "1") //模糊匹配
|
|
|
{
|
|
|
- condi += " and " + fieldEnName + "=";
|
|
|
- string val = "";
|
|
|
+ condi += " and " + fieldEnName + " like ";
|
|
|
if(fieldQueryModel == "request_param")
|
|
|
{
|
|
|
Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
- val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
+ string val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
+ condi += "'%" + val + "%'";
|
|
|
}
|
|
|
else if(fieldQueryModel == "fixed_value")
|
|
|
{
|
|
|
- val = GetExpressionVal(fieldQueryValue);
|
|
|
+ condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
|
|
|
}
|
|
|
else if(fieldQueryModel == "db_field")
|
|
|
{
|
|
|
- val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
|
|
|
}
|
|
|
else if(fieldQueryModel == "query_field")
|
|
|
{
|
|
|
- val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
+ string val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
+ condi += "'%" + val + "%'";
|
|
|
}
|
|
|
- if(fieldQueryValueType == "text")
|
|
|
- {
|
|
|
- val = "'" + val + "'";
|
|
|
- }
|
|
|
- condi += val;
|
|
|
}
|
|
|
- }
|
|
|
- else if(fieldQueryKind == "5" || fieldQueryKind == "6") //数组匹配/排除
|
|
|
- {
|
|
|
- if(fieldQueryKind == "5") condi += " and " + fieldEnName + " in (";
|
|
|
- else if(fieldQueryKind == "6") condi += " and " + fieldEnName + " not in (";
|
|
|
- string val = "";
|
|
|
- string[] valList = fieldQueryValue.Split(',');
|
|
|
- if(fieldQueryModel == "request_param")
|
|
|
+ else if(fieldQueryKind == "2") //精确匹配
|
|
|
{
|
|
|
- Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
- foreach(string sub in valList)
|
|
|
+ if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is null";
|
|
|
+ else
|
|
|
{
|
|
|
- if(fieldQueryValueType == "text")
|
|
|
+ condi += " and " + fieldEnName + "=";
|
|
|
+ string val = "";
|
|
|
+ if(fieldQueryModel == "request_param")
|
|
|
{
|
|
|
- val += "'" + req[sub] + "',";
|
|
|
+ Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
+ val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
}
|
|
|
- else
|
|
|
+ else if(fieldQueryModel == "fixed_value")
|
|
|
{
|
|
|
- val += req[sub] + ",";
|
|
|
+ val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "fixed_value")
|
|
|
- {
|
|
|
- foreach(string sub in valList)
|
|
|
- {
|
|
|
- if(fieldQueryValueType == "text")
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
{
|
|
|
- val += "'" + GetExpressionVal(sub) + "',";
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
- else
|
|
|
+ else if(fieldQueryModel == "query_field")
|
|
|
{
|
|
|
- val += GetExpressionVal(sub) + ",";
|
|
|
+ val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "db_field")
|
|
|
- {
|
|
|
- foreach(string sub in valList)
|
|
|
- {
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
- val += "'" + GetDbExpressionVal(sub) + "',";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- val += GetDbExpressionVal(sub) + ",";
|
|
|
+ val = "'" + val + "'";
|
|
|
}
|
|
|
+ condi += val;
|
|
|
}
|
|
|
}
|
|
|
- else if(fieldQueryModel == "query_field")
|
|
|
+ else if(fieldQueryKind == "5" || fieldQueryKind == "6") //数组匹配/排除
|
|
|
{
|
|
|
- foreach(string sub in valList)
|
|
|
+ if(fieldQueryKind == "5") condi += " and " + fieldEnName + " in (";
|
|
|
+ else if(fieldQueryKind == "6") condi += " and " + fieldEnName + " not in (";
|
|
|
+ string val = "";
|
|
|
+ string[] valList = fieldQueryValue.Split(',');
|
|
|
+ if(fieldQueryModel == "request_param")
|
|
|
{
|
|
|
- string dicVal = GetQueryTableData(dic, sub);
|
|
|
- if(fieldQueryValueType == "text")
|
|
|
- {
|
|
|
- val += "'" + dicVal + "',";
|
|
|
- }
|
|
|
- else
|
|
|
+ Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
+ foreach(string sub in valList)
|
|
|
{
|
|
|
- val += dicVal + ",";
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + req[sub] + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += req[sub] + ",";
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- val = val.TrimEnd(',');
|
|
|
- condi += val + ")";
|
|
|
- }
|
|
|
- else if(fieldQueryKind == "3") //范围匹配
|
|
|
- {
|
|
|
- string[] val = fieldQueryValue.Split(':');
|
|
|
- if(fieldQueryModel == "request_param")
|
|
|
- {
|
|
|
- Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
- if(fieldQueryValueType == "number")
|
|
|
- {
|
|
|
- if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">=" + req[val[0]];
|
|
|
- if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<=" + req[val[1]];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">='" + req[val[0]] + "'";
|
|
|
- if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<='" + req[val[1]] + "'";
|
|
|
- }
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "fixed_value")
|
|
|
- {
|
|
|
- if(fieldQueryValueType == "number")
|
|
|
- {
|
|
|
- if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
|
|
|
- if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
|
|
|
}
|
|
|
- else
|
|
|
+ else if(fieldQueryModel == "fixed_value")
|
|
|
{
|
|
|
- if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetExpressionVal(val[0]) + "'";
|
|
|
- if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetExpressionVal(sub) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetExpressionVal(sub) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "db_field")
|
|
|
- {
|
|
|
- if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + GetDbExpressionVal(val[0]);
|
|
|
- if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + GetDbExpressionVal(val[1]);
|
|
|
- }
|
|
|
- else if(fieldQueryModel == "query_field")
|
|
|
- {
|
|
|
- string valLeft = val[0];
|
|
|
- string valRight = val[1];
|
|
|
- string dicValLeft = GetQueryTableData(dic, valLeft);
|
|
|
- string dicValRight = GetQueryTableData(dic, valRight);
|
|
|
- if(fieldQueryValueType == "number")
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
{
|
|
|
- if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">=" + dicValLeft;
|
|
|
- if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<=" + dicValRight;
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetDbExpressionVal(sub) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetDbExpressionVal(sub) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ else if(fieldQueryModel == "query_field")
|
|
|
{
|
|
|
- if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">='" + GetExpressionVal(dicValLeft) + "'";
|
|
|
- if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<='" + GetExpressionVal(dicValRight) + "'";
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ string dicVal = GetQueryTableData(dic, sub);
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + dicVal + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += dicVal + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ val = val.TrimEnd(',');
|
|
|
+ condi += val + ")";
|
|
|
}
|
|
|
- }
|
|
|
- else if(fieldQueryKind == "4") //取反匹配
|
|
|
- {
|
|
|
- if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is not null";
|
|
|
- else
|
|
|
+ else if(fieldQueryKind == "3") //范围匹配
|
|
|
{
|
|
|
- condi += " and " + fieldEnName + "!=";
|
|
|
- string val = "";
|
|
|
+ string[] val = fieldQueryValue.Split(':');
|
|
|
if(fieldQueryModel == "request_param")
|
|
|
{
|
|
|
Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
- val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
+ if(fieldQueryValueType == "number")
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">=" + req[val[0]];
|
|
|
+ if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<=" + req[val[1]];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">='" + req[val[0]] + "'";
|
|
|
+ if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<='" + req[val[1]] + "'";
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryModel == "fixed_value")
|
|
|
{
|
|
|
- val = GetExpressionVal(fieldQueryValue);
|
|
|
+ if(fieldQueryValueType == "number")
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetExpressionVal(val[0]) + "'";
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryModel == "db_field")
|
|
|
{
|
|
|
- val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + GetDbExpressionVal(val[0]);
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + GetDbExpressionVal(val[1]);
|
|
|
}
|
|
|
else if(fieldQueryModel == "query_field")
|
|
|
{
|
|
|
- val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
+ string valLeft = val[0];
|
|
|
+ string valRight = val[1];
|
|
|
+ string dicValLeft = GetQueryTableData(dic, valLeft);
|
|
|
+ string dicValRight = GetQueryTableData(dic, valRight);
|
|
|
+ if(fieldQueryValueType == "number")
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">=" + dicValLeft;
|
|
|
+ if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<=" + dicValRight;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">='" + GetExpressionVal(dicValLeft) + "'";
|
|
|
+ if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<='" + GetExpressionVal(dicValRight) + "'";
|
|
|
+ }
|
|
|
}
|
|
|
- if(fieldQueryValueType == "text")
|
|
|
+ }
|
|
|
+ else if(fieldQueryKind == "4") //取反匹配
|
|
|
+ {
|
|
|
+ if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is not null";
|
|
|
+ else
|
|
|
{
|
|
|
- val = "'" + val + "'";
|
|
|
+ condi += " and " + fieldEnName + "!=";
|
|
|
+ string val = "";
|
|
|
+ if(fieldQueryModel == "request_param")
|
|
|
+ {
|
|
|
+ Dictionary<string, string> req = getRequestParams(projectId, content);
|
|
|
+ val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
|
|
|
+ }
|
|
|
+ else if(fieldQueryModel == "fixed_value")
|
|
|
+ {
|
|
|
+ val = GetExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
+ else if(fieldQueryModel == "query_field")
|
|
|
+ {
|
|
|
+ val = GetQueryTableData(dic, fieldQueryValue);
|
|
|
+ }
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val = "'" + val + "'";
|
|
|
+ }
|
|
|
+ condi += val;
|
|
|
}
|
|
|
- condi += val;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
|
|
|
+ if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
|
|
|
|
|
|
- var db = initDb(queryTable.databaseId);
|
|
|
- if(!string.IsNullOrEmpty(queryTable.tableEnName))
|
|
|
+ if(!string.IsNullOrEmpty(queryTable.orderBy))
|
|
|
+ {
|
|
|
+ groupBy += " " + queryTable.orderBy;
|
|
|
+ }
|
|
|
+ sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- groupBy += " " + queryTable.tableEnName;
|
|
|
+ sql = queryTable.customSql;
|
|
|
}
|
|
|
- string sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
|
|
|
+
|
|
|
+ var db = initDb(queryTable.databaseId);
|
|
|
var items = db.Ado.GetDataTable(sql);
|
|
|
return items;
|
|
|
}
|
|
@@ -788,6 +799,7 @@ namespace Util
|
|
|
var prizeObjectTable = prizeObjectTableService.GetFirst(m => m.id == prizeObjectTag) ?? new PriPrizeObjectTable();
|
|
|
//查询返回字段
|
|
|
string field = prizeObjectTable.selectField;
|
|
|
+ if(string.IsNullOrEmpty(field)) return "0";
|
|
|
int projectId = prizeObjectTable.projectId;
|
|
|
|
|
|
logStepDic.Add("奖励发放对象说明", prizeObjectTable.note);
|
|
@@ -1982,11 +1994,11 @@ namespace Util
|
|
|
setLogPrizeAmount(sub.id, prizeAmt);
|
|
|
Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p14", "接收mq数据日志");
|
|
|
var req = getRequestParams(projectId, content);
|
|
|
- var requestParamField = req[sub.requestParamField];
|
|
|
+ // var requestParamField = req[sub.requestParamField];
|
|
|
var sendFlag = false;
|
|
|
if(!repeatFlag) sendFlag = recordService.Any(m => m.prizeObjId == prizeObjectId && m.listId == sub.id && m.prizeCode == prizeCode && m.requestParamField == content);
|
|
|
Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p15", "接收mq数据日志");
|
|
|
- if(!sendFlag)
|
|
|
+ if(!sendFlag && prizeObjectId != "0" && !string.IsNullOrEmpty(prizeObjectId))
|
|
|
{
|
|
|
PriRecord item = new PriRecord()
|
|
|
{
|
|
@@ -2045,6 +2057,10 @@ namespace Util
|
|
|
}
|
|
|
Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p18", "接收mq数据日志");
|
|
|
}
|
|
|
+ else if(project.requestMode == "db")
|
|
|
+ {
|
|
|
+ prizeToDatabase(projectId, sub.id, content, condiDic, prizeAmt, startData); //入库
|
|
|
+ }
|
|
|
loopAmount = getPrizeAmount;
|
|
|
}
|
|
|
}
|
|
@@ -2329,6 +2345,8 @@ namespace Util
|
|
|
string fieldEnName = prizeInField.fieldEnName;
|
|
|
string fieldQueryModel = prizeInField.fieldQueryModel;
|
|
|
string fieldQueryValue = prizeInField.fieldQueryValue;
|
|
|
+ fieldQueryValue = GetDbExpressionVal(fieldQueryValue, projectId, content, condiDic, startData);
|
|
|
+ fieldQueryValue = MatchExpressionVal(fieldQueryValue);
|
|
|
string fieldQueryValueType = prizeInField.fieldQueryValueType;
|
|
|
if(fieldQueryModel == "request_param")
|
|
|
{
|
|
@@ -2337,7 +2355,22 @@ namespace Util
|
|
|
}
|
|
|
else if(fieldQueryModel == "query_field")
|
|
|
{
|
|
|
- fieldQueryValue = GetQueryTableData(condiDic, fieldQueryValue);
|
|
|
+ if (fieldQueryValue.Contains("+") || fieldQueryValue.Contains("-") || fieldQueryValue.Contains("*") || fieldQueryValue.Contains("/") || fieldQueryValue.Contains("(") || fieldQueryValue.Contains(")"))
|
|
|
+ {
|
|
|
+ string[] texts = fieldQueryValue.Split(new char[] { '+', '-', '*', '/', '(', ')' });
|
|
|
+ foreach (string text in texts)
|
|
|
+ {
|
|
|
+ string val = GetStartData(startData, text);
|
|
|
+ if(string.IsNullOrEmpty(val)) val = GetQueryTableData(condiDic, text);
|
|
|
+ fieldQueryValue = fieldQueryValue.Replace(text, val);
|
|
|
+ }
|
|
|
+ DataTable dt = new();
|
|
|
+ fieldQueryValue = dt.Compute(fieldQueryValue, "false").ToString();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ fieldQueryValue = GetQueryTableData(condiDic, fieldQueryValue);
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryModel == "querystart_list_field")
|
|
|
{
|
|
@@ -2377,8 +2410,8 @@ namespace Util
|
|
|
fieldQueryValue = prize_amt.ToString();
|
|
|
}
|
|
|
if(fieldQueryValueType == "text") doFields.Add(fieldEnName, fieldQueryValue);
|
|
|
- if(fieldQueryValueType == "int") doFields.Add(fieldEnName, int.Parse(fieldQueryValue));
|
|
|
- if(fieldQueryValueType == "number") doFields.Add(fieldEnName, decimal.Parse(fieldQueryValue));
|
|
|
+ if(fieldQueryValueType == "int") doFields.Add(fieldEnName, int.Parse(Function.CheckInt(fieldQueryValue)));
|
|
|
+ if(fieldQueryValueType == "number") doFields.Add(fieldEnName, decimal.Parse(Function.CheckNum(fieldQueryValue)));
|
|
|
if(fieldQueryValueType == "datetime") doFields.Add(fieldEnName, DateTime.Parse(fieldQueryValue));
|
|
|
if(fieldQueryValueType == "bool") doFields.Add(fieldEnName, bool.Parse(fieldQueryValue));
|
|
|
|
|
@@ -2722,9 +2755,9 @@ namespace Util
|
|
|
{
|
|
|
string matchValue = m.Value.Replace("${", "").Replace("}", "");
|
|
|
string val = "";
|
|
|
- if(string.IsNullOrEmpty(val) || val == "0") val = getRequestParams(projectId, content, matchValue);
|
|
|
- if(string.IsNullOrEmpty(val) || val == "0") val = GetQueryTableData(dic, matchValue);
|
|
|
- if(string.IsNullOrEmpty(val) || val == "0") val = GetStartData(startData, matchValue);
|
|
|
+ if(string.IsNullOrEmpty(val) || val == matchValue) val = getRequestParams(projectId, content, matchValue);
|
|
|
+ if(string.IsNullOrEmpty(val) || val == matchValue) val = GetQueryTableData(dic, matchValue);
|
|
|
+ if(string.IsNullOrEmpty(val) || val == matchValue) val = GetStartData(startData, matchValue);
|
|
|
str = str.Replace(m.Value, val);
|
|
|
}
|
|
|
return str;
|
|
@@ -2759,13 +2792,13 @@ namespace Util
|
|
|
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";
|
|
|
+ string val = condiDic.Any(m => m.FieldEnName == keyString) ? condiDic.FirstOrDefault(m => m.FieldEnName == keyString).Value.ToString() : key;
|
|
|
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";
|
|
|
+ return condiDic.Any(m => m.FieldEnName == key) ? condiDic.FirstOrDefault(m => m.FieldEnName == key).Value.ToString() : key;
|
|
|
}
|
|
|
public static string GetQueryTableTitle(List<QueryCondition> condiDic, string key)
|
|
|
{
|
|
@@ -2773,7 +2806,7 @@ namespace Util
|
|
|
}
|
|
|
public static string GetStartData(Dictionary<string, string> startData, string key)
|
|
|
{
|
|
|
- return startData.ContainsKey(key) ? startData[key] : "";
|
|
|
+ return startData.ContainsKey(key) ? startData[key] : key;
|
|
|
}
|
|
|
|
|
|
//合并字典
|