|
@@ -42,10 +42,10 @@ namespace Util
|
|
|
}
|
|
|
|
|
|
//数据库链接
|
|
|
- public static SqlSugarClient initDb(int projectId)
|
|
|
+ public static SqlSugarClient initDb(int id)
|
|
|
{
|
|
|
var databaseSetService = App.GetService<IPriDatabaseSetService>();
|
|
|
- var connectionString = databaseSetService.GetFirst(m => m.projectId == projectId);
|
|
|
+ var connectionString = databaseSetService.GetFirst(m => m.id == id);
|
|
|
string server = connectionString.ipAddress;
|
|
|
int port = connectionString.port;
|
|
|
string user = connectionString.userId;
|
|
@@ -102,6 +102,10 @@ namespace Util
|
|
|
{
|
|
|
condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "2") //精确匹配
|
|
|
{
|
|
@@ -119,6 +123,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -161,6 +169,20 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetDbExpressionVal(sub) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetDbExpressionVal(sub) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
val = val.TrimEnd(',');
|
|
|
condi += val + ")";
|
|
|
}
|
|
@@ -194,6 +216,19 @@ namespace Util
|
|
|
if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ 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 + ">='" + GetDbExpressionVal(val[0]) + "'";
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "4") //取反匹配
|
|
|
{
|
|
@@ -211,6 +246,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -220,7 +259,7 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var db = initDb(projectId);
|
|
|
+ var db = initDb(queryTable.databaseId);
|
|
|
string sql = "select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi;
|
|
|
var items = db.Ado.GetDataTable(sql);
|
|
|
if(items.Rows.Count > 0)
|
|
@@ -267,6 +306,10 @@ namespace Util
|
|
|
{
|
|
|
condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "2") //精确匹配
|
|
|
{
|
|
@@ -281,6 +324,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -322,6 +369,20 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetDbExpressionVal(sub) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetDbExpressionVal(sub) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
val = val.TrimEnd(',');
|
|
|
condi += val + ")";
|
|
|
}
|
|
@@ -355,6 +416,19 @@ namespace Util
|
|
|
if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ 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 + ">='" + GetDbExpressionVal(val[0]) + "'";
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "4") //取反匹配
|
|
|
{
|
|
@@ -369,6 +443,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -377,7 +455,7 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var db = initDb(projectId);
|
|
|
+ var db = initDb(prizeObjectTable.databaseId);
|
|
|
var item = db.Ado.GetScalar("select " + field + " from " + prizeObjectTable.tableEnName + " where 1=1" + condi);
|
|
|
if(item != null)
|
|
|
{
|
|
@@ -407,11 +485,12 @@ namespace Util
|
|
|
var loopSetService = App.GetService<IPriLoopSetService>();
|
|
|
var recursionStartTableService = App.GetService<IPriRecursionStartTableService>();
|
|
|
var loopSet = loopSetService.GetFirst(m => m.listId == sub.id) ?? new PriLoopSet();
|
|
|
+ var recursionStartTable = recursionStartTableService.GetFirst(m => m.listId == sub.id) ?? new PriRecursionStartTable();
|
|
|
var tableEnName = loopSet.tableEnName; //递归查询表
|
|
|
var parentField = loopSet.parentField; //父字段
|
|
|
var sonField = loopSet.sonField; //子字段
|
|
|
var afterPrizeFlag = loopSet.afterPrizeFlag; //发奖后是否继续
|
|
|
- var db = initDb(projectId);
|
|
|
+ var db = initDb(recursionStartTable.databaseId);
|
|
|
string objId = prizeObjectId;
|
|
|
bool op = true;
|
|
|
while(!string.IsNullOrEmpty(objId) && objId != "0" && op)
|
|
@@ -639,6 +718,10 @@ namespace Util
|
|
|
{
|
|
|
condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "2") //精确匹配
|
|
|
{
|
|
@@ -653,6 +736,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -694,6 +781,20 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ foreach(string subval in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetDbExpressionVal(subval) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetDbExpressionVal(subval) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
val = val.TrimEnd(',');
|
|
|
condi += val + ")";
|
|
|
}
|
|
@@ -727,6 +828,19 @@ namespace Util
|
|
|
if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ 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 + ">='" + GetDbExpressionVal(val[0]) + "'";
|
|
|
+ if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else if(fieldQueryKind == "4") //取反匹配
|
|
|
{
|
|
@@ -741,6 +855,10 @@ namespace Util
|
|
|
{
|
|
|
val = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ val = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
if(fieldQueryValueType == "text")
|
|
|
{
|
|
|
val = "'" + val + "'";
|
|
@@ -749,7 +867,7 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var db = initDb(projectId);
|
|
|
+ var db = initDb(queryTable.databaseId);
|
|
|
var item = db.Ado.GetScalar("select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi);
|
|
|
if(item != null) passCount += 1;
|
|
|
}
|
|
@@ -765,12 +883,12 @@ namespace Util
|
|
|
var prizeInTableService = App.GetService<IPriPrizeInTableService>();
|
|
|
var prizeInFieldService = App.GetService<IPriPrizeInFieldService>();
|
|
|
var prizeInQueryFieldService = App.GetService<IPriPrizeInQueryFieldService>();
|
|
|
- var db = initDb(projectId);
|
|
|
|
|
|
//入库表
|
|
|
var prizeInTables = prizeInTableService.GetList(m => m.projectId == projectId);
|
|
|
foreach(var prizeInTable in prizeInTables)
|
|
|
{
|
|
|
+ var db = initDb(prizeInTable.databaseId);
|
|
|
Dictionary<string, object> doFields = new Dictionary<string, object>();
|
|
|
//入库字段
|
|
|
var prizeInFields = prizeInFieldService.GetList(m => m.inTableId == prizeInTable.id);
|
|
@@ -789,6 +907,10 @@ namespace Util
|
|
|
{
|
|
|
fieldQueryValue = GetExpressionVal(fieldQueryValue);
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ fieldQueryValue = GetDbExpressionVal(fieldQueryValue);
|
|
|
+ }
|
|
|
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));
|
|
@@ -873,6 +995,20 @@ namespace Util
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else if(fieldQueryModel == "db_field")
|
|
|
+ {
|
|
|
+ foreach(string sub in valList)
|
|
|
+ {
|
|
|
+ if(fieldQueryValueType == "text")
|
|
|
+ {
|
|
|
+ val += "'" + GetDbExpressionVal(sub) + "',";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ val += GetDbExpressionVal(sub) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
val = val.TrimEnd(',');
|
|
|
condi += val + ")";
|
|
|
}
|
|
@@ -948,5 +1084,13 @@ namespace Util
|
|
|
if(str.StartsWith("#{this_month") && str.EndsWith("MONTH}#")) str = DateTime.Now.AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM");
|
|
|
return str;
|
|
|
}
|
|
|
+
|
|
|
+ //库内字段值表达式
|
|
|
+ public static string GetDbExpressionVal(string str)
|
|
|
+ {
|
|
|
+ if(str.StartsWith("#{now") && str.EndsWith("DAY}#")) str = "DATE_ADD(" + str + ",INTERVAL " + str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1] + " DAY)";
|
|
|
+ if(str.StartsWith("#{now") && str.EndsWith("MONTH}#")) str = "DATE_ADD(" + str + ",INTERVAL " + str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1] + " MONTH)";
|
|
|
+ return str;
|
|
|
+ }
|
|
|
}
|
|
|
}
|