示例#1
0
        public override void DoAction(IEventArgs args)
        {
            UnitPara up   = UnitPara.Parse(FreeUtil.ReplaceVar(this.para, args))[0];
            IPara    para = up.GetPara(args);

            if (para != null)
            {
                double d = FreeUtil.ReplaceDouble(formula, args);
                if (para is IntPara)
                {
                    para.SetValue("=", new IntPara(string.Empty, (int)d));
                }
                if (para is FloatPara)
                {
                    para.SetValue("=", new FloatPara(string.Empty, (float)d));
                }
                if (para is DoublePara)
                {
                    para.SetValue("=", new DoublePara(string.Empty, d));
                }
                else
                {
                    IPara v = new DoublePara("v", d);
                    para.SetValue("=", v);
                }
            }
        }
示例#2
0
 public virtual ParaList GetParaList(string field, string value, IEventArgs args)
 {
     if (StringUtil.IsNullOrEmpty(order) && StringUtil.IsNullOrEmpty(unique))
     {
         if (cache == null)
         {
             cache = new MyDictionary <string, MyDictionary <string, ParaList> >();
         }
         if (cache.ContainsKey(field) && cache[field].ContainsKey(value))
         {
             return(cache[field][value]);
         }
     }
     else
     {
         foreach (ParaList pl in list)
         {
             IPara para = pl.Get(field);
             if (para != null)
             {
                 try
                 {
                     IPara temp = para.Initial("==", value);
                     bool  m    = para.Meet("==", temp);
                     temp.Recycle();
                     if (m)
                     {
                         return(pl);
                     }
                 }
                 catch (Exception)
                 {
                 }
                 UnitPara up    = UnitPara.ParseOne(value);
                 IPara    vPara = up.GetPara(args);
                 if (vPara != null && para.Meet("==", vPara))
                 {
                     return(pl);
                 }
             }
         }
     }
     return(null);
 }
示例#3
0
        public override object GetValue(IEventArgs args)
        {
            if (!StringUtil.IsNullOrEmpty(autoCondition))
            {
                select = new SelectMethod(FreeUtil.ReplaceVar(autoCondition, args));
            }
            IList <ParaList> list = new List <ParaList>();
            ParaListSet      pls  = null;

            foreach (UnitPara sort in UnitPara.Parse(sorts))
            {
                IParable pa = args.GetUnit(sort.GetUnit());
                if (pa == null)
                {
                    continue;
                }
                IPara para = pa.GetParameters().Get(sort.GetPara());
                if (para == null)
                {
                    continue;
                }
                if (para != null && para is ParaListSet)
                {
                    ParaListSet ps = (ParaListSet)para;
                    pls = ps;
                    foreach (ParaList pl in ps)
                    {
                        list.Add(pl);
                    }
                }
            }
            IList <SimpleProto> results = new List <SimpleProto>();

            if (pls != null && list.Count > 0)
            {
                IList <ParaList> r = pls.Select(list, FreeUtil.ReplaceVar(order, args), capacity);
                int min            = 0;
                int max            = 0;
                if (!StringUtil.IsNullOrEmpty(range))
                {
                    string[] vs = StringUtil.Split(FreeUtil.ReplaceVar(range, args), "-");
                    if (vs.Length == 2)
                    {
                        min = int.Parse(vs[0]);
                        max = int.Parse(vs[1]);
                    }
                }
                foreach (ParaList pl in r)
                {
                    if (min != max)
                    {
                        int paraOrder = (int)pl.GetFeatureValue(ParaListSet.PARA_ORDER);
                        if (paraOrder < min || paraOrder > max)
                        {
                            continue;
                        }
                    }

                    SimpleProto b = FreePool.Allocate();
                    b.Ks.Add(0);
                    b.Key = 0;
                    b.Ss.Add("0");
                    string[] fs = StringUtil.Split(fields, ",");
                    for (int i = 0; i < fs.Length; i++)
                    {
                        b.Ks.Add(i + 1);
                        b.Ss.Add(pl.GetFeatureValue(fs[i]).ToString());
                        if (select != null)
                        {
                            pl.TempUse(new IntPara("seq", i + 1));
                            if (select.Meet(pl))
                            {
                                b.Ins.Add(2 * 100);
                            }
                            else
                            {
                                b.Ins.Add(0);
                            }
                            pl.Resume("seq");
                        }
                        else
                        {
                            b.Ins.Add(0);
                        }
                    }
                    results.Add(b);
                }
            }

            return(results.ToArray());
        }