using DynamicExpresso; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using wispro.sp.entity; namespace wispro.sp.api.Utility { public class Utility { public static void CalBasePoint(PerformanceItem item, List rules) { #region 计算基本点数值及绩效类型 rules.Sort((a, b) => { var o = b.Priority - a.Priority; return o; }); foreach (BasePointRule rule in rules) { var interpreter = new Interpreter(); //item.ApplicationType Func func = interpreter.ParseAsDelegate>(rule.Rule, "p"); bool result = func.Invoke(item); if (result) { interpreter.SetVariable("p", item); item.BasePoint = (double?)interpreter.Eval(rule.PointExpress); break; } } #endregion } } }