/// <summary> /// Calculate with current value then modify /// </summary> /// <typeparam name="T">Data type</typeparam> /// <param name="field">Field</param> /// <param name="calculateOperator">Calculate operator</param> /// <param name="value">Value</param> /// <returns>Return the newest modify object</returns> public IModify Calculate <T>(Expression <Func <T, dynamic> > field, CalculateOperator calculateOperator, dynamic value) { if (value == null) { return(this); } return(Calculate(ExpressionHelper.GetExpressionPropertyName(field.Body), calculateOperator, value)); }
/// <summary> /// Calculate with current value then modify /// </summary> /// <param name="fieldName">Field name</param> /// <param name="calculateOperator">calculate operator</param> /// <param name="value">Value</param> /// <returns>Return the newest modify object</returns> public IModify Calculate(string fieldName, CalculateOperator calculateOperator, dynamic value) { var calculate = new CalculateModifyValue(calculateOperator, value); var setValueItem = new SetValueModifyItem(fieldName, calculate); AddItem(setValueItem); return(this); }
private void SlidTimeWindow(DateTime dateTime) { long curLong = DateTimeUtil.DateTimeToTimeStamp(dateTime); int offsetTime = (int)(curLong % WindowInterval); _cache.LeftTime = DateTimeUtil.TimeStampToDateTime(curLong - offsetTime); _cache.RightTime = _cache.LeftTime.AddSeconds(WindowInterval); Console.WriteLine($"{Name}-SlidTimeWindow:{CalculateOperator.GetType().ToString ()}_{WindowInterval.ToString()}:{_cache.LeftTime.ToString()}-{_cache.RightTime.ToString()}"); }
/// <summary> /// calculate with current value then modify /// </summary> /// <param name="name">name</param> /// <param name="calculateOperator">Calculate Operator</param> /// <param name="value">value</param> /// <returns>IModify object</returns> public IModify Calculate(string name, CalculateOperator calculateOperator, dynamic value) { var calculate = new CalculateModify() { Calculate = calculateOperator, Value = value }; items.Add(new Tuple <string, dynamic>(name, calculate)); return(this); }
/// <summary> /// get calculate sign /// </summary> /// <param name="calculate">calculate operator</param> /// <returns></returns> string GetCalculateChar(CalculateOperator calculate) { string opearterChar = ""; switch (calculate) { case CalculateOperator.Add: opearterChar = "+"; break; case CalculateOperator.Subtract: opearterChar = "-"; break; case CalculateOperator.Multiply: opearterChar = "*"; break; case CalculateOperator.Divide: opearterChar = "/"; break; } return(opearterChar); }
/// <summary> /// Initializes a new instance of the EZNEW.Develop.Command.Modify.CalculateModifyValue /// </summary> /// <param name="calculateOperator">Calculate operator</param> /// <param name="value">Calculate value</param> public CalculateModifyValue(CalculateOperator calculateOperator, dynamic value) { Operator = calculateOperator; Value = value; }
private void PublishCalculate(string sessinId, DateTime nowTime, DateTime leftTime, DateTime rightTime, IMetaData[] ds, string desc) { if (ds.Length > 0) { ICalculateContext calculateContext = new CalculateContext(Name, desc + "_" + CalculateOperator.GetType().ToString(), leftTime, rightTime, CalculateType.Aggregate, new CalculateInpute(sessinId, "", rightTime, ds), null, CalculateOperator); GlobalContext.ActionBlock.Post(calculateContext); ds = null; } else { Logger.Log.Info(true, Name + " 没有要发布的窗口任务"); } }
/// <summary> /// Get calculate sign /// </summary> /// <param name="calculate">Calculate operator</param> /// <returns>Return calculate char</returns> public static string GetCalculateChar(CalculateOperator calculate) { CalculateOperators.TryGetValue(calculate, out var opearterChar); return(opearterChar); }
public bool Run() { ValueCallHandler handler = new ValueCallHandler(); int right1 = handler.GetVal(eventID, setVariableCommand.RightSide1); int right2 = handler.GetVal(eventID, setVariableCommand.RightSide2); CalculateOperator calcOperator = setVariableCommand.CalculateOperator; NumberAssignmentOperator assignOperator = setVariableCommand.AssignmentOperator; int assignVal = 0; if (calcOperator == CalculateOperator.Addition) { assignVal = right1 + right2; } if (calcOperator == CalculateOperator.Subtraction) { assignVal = right1 - right2; } if (calcOperator == CalculateOperator.Multiplication) { assignVal = right1 * right2; } if (calcOperator == CalculateOperator.Division) { assignVal = right1 / right2; } if (calcOperator == CalculateOperator.Modulo) { assignVal = right1 % right2; } if (calcOperator == CalculateOperator.BitAnd) { assignVal = (right1 & right2); } if (calcOperator == CalculateOperator.Between) { System.Random rand = new System.Random(); assignVal = rand.Next(Math.Min(right1, right2), Math.Max(right1, right2) + 1); } int left = handler.GetVal(eventID, setVariableCommand.LeftSide); if (assignOperator == NumberAssignmentOperator.Assign) { } if (assignOperator == NumberAssignmentOperator.Addition) { assignVal += left; } if (assignOperator == NumberAssignmentOperator.Subtraction) { assignVal = left - assignVal; } if (assignOperator == NumberAssignmentOperator.Multiplication) { assignVal *= left; } if (assignOperator == NumberAssignmentOperator.Division) { assignVal = left / assignVal; } if (assignOperator == NumberAssignmentOperator.Modulo) { assignVal = left % assignVal; } if (assignOperator == NumberAssignmentOperator.LowerBound) { assignVal = Math.Max(left, assignVal); } if (assignOperator == NumberAssignmentOperator.UpperBound) { assignVal = Math.Min(left, assignVal); } if (assignOperator == NumberAssignmentOperator.Absolute) { assignVal = Math.Abs(assignVal); } handler.SetVal(eventID, setVariableCommand.LeftSide, assignVal); return(true); }