lcl 2 months ago
parent
commit
24075db145
1 changed files with 22 additions and 1 deletions
  1. 22 1
      Util/PrizeDo.cs

+ 22 - 1
Util/PrizeDo.cs

@@ -1914,6 +1914,7 @@ namespace Util
                     foreach(string subField in list)
                     {
                         string val = GetQueryTableData(condiDic, subField);
+                        if(subField == val) val = GetStartData(startData, subField);
                         prizeSourceData += val + ",";
                     }
                     prizeSourceData = prizeSourceData.TrimEnd(',');
@@ -2345,6 +2346,7 @@ namespace Util
                     string fieldEnName = prizeInField.fieldEnName;
                     string fieldQueryModel = prizeInField.fieldQueryModel;
                     string fieldQueryValue = prizeInField.fieldQueryValue;
+                    fieldQueryValue = fieldQueryValue.Replace("${prize_amt}", prize_amt.ToString());
                     fieldQueryValue = GetDbExpressionVal(fieldQueryValue, projectId, content, condiDic, startData);
                     fieldQueryValue = MatchExpressionVal(fieldQueryValue);
                     string fieldQueryValueType = prizeInField.fieldQueryValueType;
@@ -2407,7 +2409,26 @@ namespace Util
                     }
                     else if(fieldQueryModel == "prize_amt")
                     {
-                        fieldQueryValue = prize_amt.ToString();
+                        if (fieldQueryValue.Contains("+") || fieldQueryValue.Contains("-") || fieldQueryValue.Contains("*") || fieldQueryValue.Contains("/") || fieldQueryValue.Contains("(") || fieldQueryValue.Contains(")"))
+                        {
+                            fieldQueryValue = fieldQueryValue.Replace("${prize_amt}", prize_amt.ToString());
+                            if(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 = prize_amt.ToString();
+                        }
                     }
                     if(fieldQueryValueType == "text") doFields.Add(fieldEnName, fieldQueryValue);
                     if(fieldQueryValueType == "int") doFields.Add(fieldEnName, int.Parse(Function.CheckInt(fieldQueryValue)));