Exemplo n.º 1
0
 /// <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));
 }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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()}");
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
 /// <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;
 }
Exemplo n.º 7
0
        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);
 }
Exemplo n.º 9
0
        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);
        }