public ExpectList(string DataType, Cycle cyc, DataSet ds) { Tables = new Dictionary <string, Dictionary <string, OneCycleData> >(); long MaxCnt = 0; for (int i = 0; i < ds.Tables.Count; i++) { long cnt = ds.Tables[i].Rows.Count; if (cnt > MaxCnt) { MaxCnt = cnt; } } for (int n = 0; n < ds.Tables.Count; n++) { OneCycleData ocd = new OneCycleData(); List <OneCycleData> list = ocd.FillByTable <OneCycleData>(ds.Tables[n]); Tables.Add(ds.Tables[n].TableName, list.ToDictionary(p => p.date, p => p)); } for (int i = 0; i < MaxCnt; i++) { ExpectData <T> ed = new ExpectData <T>(); //ed.ListData } }
public virtual bool Matched(ExpectData <T> data, out int MatchCnt) { //MatchCnt = 0; ExpectList <T> el = new ExpectList <T>(); el.Add(data); return(Matched(el, out MatchCnt, false)); }
public ExpectList(Dictionary <string, MongoReturnDataList <T> > _data, bool NeedReTime) { _MyData = new List <ExpectData <T> >(); List <string> datelist = new List <string>(); if (NeedReTime) { var times = _data.Values.ToList().Select(a => a.Select(b => b.CurrTime)); foreach (var itime in times) { foreach (string key in itime) { if (!datelist.Contains(key)) { datelist.Add(key); } } } datelist.OrderBy(a => a); for (int i = 0; i < datelist.Count; i++) { ExpectData <T> newData = new ExpectData <T>(); string strCurrDate = datelist[i]; foreach (MongoReturnDataList <T> vals in _data.Values) { var val = vals.Where(a => a.CurrTime == strCurrDate); if (val == null || val.Count <T>() == 0) { continue; } T vData = val.First(); newData.Add(vData.Key, vData); } newData.Expect = newData.First().Value.Expect; newData.OpenCode = newData.First().Value.OpenCode; newData.OpenTime = newData.First().Value.OpenTime; _MyData.Add(newData); } } else { _data.First().Value.ForEach(a => _MyData.Add(new ExpectData <T>(a))); } Data = _data; Readed = false; }
public ExpectList(DataTable dt) { _MyData = new List <ExpectData <T> >(); if (dt == null) { return; } lock (dt) { for (int i = 0; i < dt.Rows.Count; i++) { ExpectData <T> ed = new ExpectData <T>(); ed.Expect = dt.Rows[i]["Expect"].ToString(); ed.OpenCode = dt.Rows[i]["OpenCode"].ToString(); string[] arr = ed.OpenCode.Split(','); if (arr.Length > 1) { for (int r = 0; r < arr.Length; r++) { arr[r] = arr[r].PadLeft(2, '0'); } ed.OpenCode = string.Join(",", arr); } DateTime dtmp; bool suc = DateTime.TryParse(dt.Rows[i]["OpenTime"].ToString(), out dtmp); if (suc == true) { ed.OpenTime = dtmp; } if (dt.Columns.Contains("EId")) { ed.EId = int.Parse(dt.Rows[i]["EId"].ToString()); ed.MissedCnt = int.Parse(dt.Rows[i]["MissedCnt"].ToString()); ed.LastExpect = dt.Rows[i]["LastExpect"].ToString(); } MyData.Add(ed); } } Readed = false; }
public virtual bool Matched(ExpectList <T> el, out int MatchCnt, bool getRev) { //ExpectData data = el.LastData; string[] strArr = ChanceCode.Split('+'); MatchCnt = 0; int begid = -1; //默认为0,多期再去寻找起点 if (el.Count > 1) //多期考虑 { if (long.Parse(this.ExpectCode) < long.Parse(el.FirstData.Expect)) { Log("错误", "匹配是否需要关闭错误", "需要关闭的机会早于数据以前,无论是否中奖,立即关闭!"); return(true); } begid = el.IndexOf(this.ExpectCode); if (begid < 0) { Log("错误", "匹配是否需要关闭错误", "需要关闭的机会不在数据中,无论是否中奖,立即关闭!"); return(true); } } //////ExpectData inputEd = el[begid]; //////Log("计算服务", "获取到期号信息", string.Format("expect:{0};openCode:{1}",inputEd.Expect,inputEd.OpenCode)); for (int ei = begid + 1; ei < el.Count; ei++) { ExpectData <T> data = el[ei]; for (int k = 0; k < strArr.Length; k++) { //Log("计算服务", string.Format("循环检查进入期数后的期数是否命中机会:{0}", ChanceCode), string.Format("expect:{0};openCode:{1}", data.Expect, data.OpenCode)); string UseCode = getRev ? getRevChance(strArr[k]) : strArr[k]; string[] arr = UseCode.Trim().Split('/'); string strSer = arr[0].Trim(); string strCar = arr[1].Trim(); for (int i = 0; i < strSer.Length; i++) { string strSerNo = strSer.Substring(i, 1).Trim(); int iNo = int.Parse(strSerNo); if (iNo == 0) { iNo = 10; } for (int j = 0; j < strCar.Length; j++) { string strCarNo = strCar.Substring(j, 1).Trim(); if (strCarNo == data.ValueList[iNo - 1]) { MatchCnt++; } } } } if (MatchCnt > 0)//任何一期命中都需要关闭 { break; } } if (MatchCnt > 0) { return(true); } return(false); }
} //增加所属资产单元id #endregion //以下为trace属性 public virtual bool Matched(ExpectData <T> data) { int tmp = 0; return(Matched(data, out tmp)); }
public bool Remove(ExpectData <T> item) { Readed = false; return(MyData.Remove(item)); }
public bool Contains(ExpectData <T> item) { return(MyData.Contains(item)); }
public void Add(ExpectData <T> item) { MyData.Add(item); Readed = false; }
public void Insert(int index, ExpectData <T> item) { MyData.Insert(index, item); Readed = false; }
public int IndexOf(ExpectData <T> item) { return(MyData.IndexOf(item)); }