lcl 3 月之前
父节点
当前提交
1eb3ae0d7f
共有 1 个文件被更改,包括 182 次插入154 次删除
  1. 182 154
      Util/PrizeDo.cs

+ 182 - 154
Util/PrizeDo.cs

@@ -143,7 +143,7 @@ namespace Util
                             string val = GetQueryTableData(dic, fieldQueryValue);
                             condi += "'%" + val + "%'";                            
                         }
-                        else if(fieldQueryModel == "start_list_field")
+                        else if(fieldQueryModel == "querystart_list_field")
                         {
                             string val = GetStartData(startData, fieldQueryValue);
                             condi += "'%" + val + "%'";                            
@@ -173,7 +173,7 @@ namespace Util
                             {
                                 val = GetQueryTableData(dic, fieldQueryValue);
                             }
-                            else if(fieldQueryModel == "start_list_field")
+                            else if(fieldQueryModel == "querystart_list_field")
                             {
                                 val = GetStartData(startData, fieldQueryValue);
                             }
@@ -248,7 +248,7 @@ namespace Util
                                 }
                             }                       
                         }
-                        else if(fieldQueryModel == "start_list_field")
+                        else if(fieldQueryModel == "querystart_list_field")
                         {
                             foreach(string sub in valList)
                             {
@@ -318,7 +318,7 @@ namespace Util
                                 if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<='" + GetExpressionVal(dicValRight) + "'";
                             }
                         }
-                        else if(fieldQueryModel == "start_list_field")
+                        else if(fieldQueryModel == "querystart_list_field")
                         {
                             string valLeft = val[0];
                             string valRight = val[1];
@@ -360,7 +360,7 @@ namespace Util
                             {
                                 val = GetQueryTableData(dic, fieldQueryValue);
                             }
-                            else if(fieldQueryModel == "start_list_field")
+                            else if(fieldQueryModel == "querystart_list_field")
                             {
                                 val = GetStartData(startData, fieldQueryValue);
                             }
@@ -440,214 +440,220 @@ namespace Util
                     string fieldQueryModel = queryField.fieldQueryModel;
                     string fieldQueryValue = queryField.fieldQueryValue;
                     string fieldQueryValueType = queryField.fieldQueryValueType;
-                    if(fieldQueryKind == "1") //模糊匹配
+
+                    //拼装聚合字段
+                    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(queryField.groupByFlag) groupBy += queryField.fieldEnName +",";
                 }
 
                 if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
@@ -2104,6 +2110,7 @@ namespace Util
             {
                 var db = initDb(prizeInTable.databaseId);
                 Dictionary<string, object> doFields = new();
+                List<string> inFields = new();
                 //入库字段
                 var prizeInFields = prizeInFieldService.GetList(m => m.inTableId == prizeInTable.id);
                 foreach(var prizeInField in prizeInFields)
@@ -2163,6 +2170,8 @@ namespace Util
                     if(fieldQueryValueType == "number") doFields.Add(fieldEnName, decimal.Parse(fieldQueryValue));
                     if(fieldQueryValueType == "datetime") doFields.Add(fieldEnName, DateTime.Parse(fieldQueryValue));
                     if(fieldQueryValueType == "bool") doFields.Add(fieldEnName, bool.Parse(fieldQueryValue));
+
+                    inFields.Add(fieldEnName + "#cut#" + fieldQueryValue + "#cut#" + fieldQueryValueType + "#cut#" + prizeInField.fieldInModel);
                 }
 
                 //查询匹配条件
@@ -2365,15 +2374,34 @@ namespace Util
                     if(check.Rows.Count > 0)
                     {
                         string fieldString = "";
-                        foreach(var fieldEnName in doFields.Keys)
+                        foreach(var inField in inFields)
                         {
-                            if(typeof(int) == doFields[fieldEnName].GetType() || typeof(decimal) == doFields[fieldEnName].GetType())
+                            string[] inFieldData = inField.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                            string fieldEnName = inFieldData[0];
+                            string fieldQueryValue = inFieldData[1];
+                            string fieldQueryValueType = inFieldData[2];
+                            string fieldInModel = inFieldData[3];
+                            if(fieldQueryValueType == "int" || fieldQueryValueType == "number" || fieldQueryValueType == "bool")
                             {
-                                fieldString += fieldEnName + "=" + doFields[fieldEnName].ToString();
+                                if(fieldInModel == "add")
+                                {
+                                    fieldString += fieldEnName + "=" + fieldEnName + "+" + fieldQueryValue;
+                                }
+                                else
+                                {
+                                    fieldString += fieldEnName + "=" + fieldQueryValue;
+                                }
                             }
                             else
                             {
-                                fieldString += fieldEnName + "=" + "'" + doFields[fieldEnName].ToString() + "'";
+                                if(fieldInModel == "add")
+                                {
+                                    fieldString += fieldEnName + "=" + "concat(" + fieldEnName + ", '" + fieldQueryValue + "')";
+                                }
+                                else
+                                {
+                                    fieldString += fieldEnName + "=" + "'" + fieldQueryValue + "'";
+                                }
                             }
                             fieldString += ",";
                         }