using CP.Cache; using CP.Common; using CP.Model; using MC.ORM; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CP.Business { public class Fcbjpk10 : BaseBll { /// /// 缓存 /// y static WMCache cache = WMCache.GetCacheService(); /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在算遗漏时 /// /// 值 /// 当前排名 /// 类型 1=第1位;2=第2位;3=第3位;4=第4位;5=第5位;6=第6位 ... /// public static Fcbjpk10Info GetLastFcbjpk10Info(ref List list, int val, int rank, int type) { Fcbjpk10Info info = new Fcbjpk10Info(); int size = list.Count; ///升序的情况 ///未实现走势图倒序的情况.. for (int i = rank - 2; i >= 0; i--) { if (type == 1) { if (list[i].n1 == val) { info = list[i]; return info; } } else if (type == 2) { if (list[i].n2 == val) { info = list[i]; return info; } } else if (type == 3) { if (list[i].n3 == val) { info = list[i]; return info; } } else if (type == 4) { if (list[i].n4 == val) { info = list[i]; return info; } } else if (type == 5) { if (list[i].n5 == val) { info = list[i]; return info; } } else if (type == 6) { if (list[i].n6 == val) { info = list[i]; return info; } } else if (type == 7) { if (list[i].n7 == val) { info = list[i]; return info; } } else if (type == 8) { if (list[i].n8 == val) { info = list[i]; return info; } } else if (type == 9) { if (list[i].n9 == val) { info = list[i]; return info; } } else if (type == 10) { if (list[i].n10 == val) { info = list[i]; return info; } } } return info; } /// /// 上一次大小的数据 /// /// /// /// public static Fcbjpk10Info GetLastDxFcbjpk10Info(ref List list, int val, int rank, int dnw) { Fcbjpk10Info info = new Fcbjpk10Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var hm = 0; if (dnw == 1) hm = list[i].n1; else if (dnw == 2) hm = list[i].n2; else if (dnw == 3) hm = list[i].n3; else if (dnw == 4) hm = list[i].n4; else if (dnw == 5) hm = list[i].n5; else if (dnw == 6) hm = list[i].n6; else if (dnw == 7) hm = list[i].n7; else if (dnw == 8) hm = list[i].n8; else if (dnw == 9) hm = list[i].n9; else if (dnw == 10) hm = list[i].n10; if (ZstUtils.GetDxBymiddle(hm, 6) == val) { return list[i]; } } } return info; } /// /// 上一次奇偶的情况 /// /// /// /// public static Fcbjpk10Info GetLastJoFcbjpk10Info(ref List list, int val, int rank, int dnw) { Fcbjpk10Info info = new Fcbjpk10Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var hm = 0; if (dnw == 1) hm = list[i].n1; else if (dnw == 2) hm = list[i].n2; else if (dnw == 3) hm = list[i].n3; else if (dnw == 4) hm = list[i].n4; else if (dnw == 5) hm = list[i].n5; else if (dnw == 6) hm = list[i].n6; else if (dnw == 7) hm = list[i].n7; else if (dnw == 8) hm = list[i].n8; else if (dnw == 9) hm = list[i].n9; else if (dnw == 10) hm = list[i].n10; if (ZstUtils.GetJo(hm) == val) { return list[i]; } } } return info; } /// /// 上一次质合的情况 /// /// /// /// public static Fcbjpk10Info GetLastZhFcbjpk10Info(ref List list, int val, int rank, int dnw) { Fcbjpk10Info info = new Fcbjpk10Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var hm = 0; if (dnw == 1) hm = list[i].n1; else if (dnw == 2) hm = list[i].n2; else if (dnw == 3) hm = list[i].n3; else if (dnw == 4) hm = list[i].n4; else if (dnw == 5) hm = list[i].n5; else if (dnw == 6) hm = list[i].n6; else if (dnw == 7) hm = list[i].n7; else if (dnw == 8) hm = list[i].n8; else if (dnw == 9) hm = list[i].n9; else if (dnw == 10) hm = list[i].n10; if (ZstUtils.GetZh(hm) == val) { return list[i]; } } } return info; } /// /// 上一次012路的情况 /// /// /// /// public static Fcbjpk10Info GetLast012Fcbjpk10InfoInfo(ref List list, int val, int rank, int dnw) { Fcbjpk10Info info = new Fcbjpk10Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var hm = 0; if (dnw == 1) hm = list[i].n1; else if (dnw == 2) hm = list[i].n2; else if (dnw == 3) hm = list[i].n3; else if (dnw == 4) hm = list[i].n4; else if (dnw == 5) hm = list[i].n5; else if (dnw == 6) hm = list[i].n6; else if (dnw == 7) hm = list[i].n7; else if (dnw == 8) hm = list[i].n8; else if (dnw == 9) hm = list[i].n9; else if (dnw == 10) hm = list[i].n10; if (ZstUtils.Get012(hm) == val) { return list[i]; } } } return info; } /// /// 根据当前排名,取出上一个排名,即上一期的数据. /// /// /// public static Fcbjpk10Info GetLastQiFcbjpk10Info(ref List list, int rank) { Fcbjpk10Info info = new Fcbjpk10Info(); int size = list.Count; for (int i = rank - 2; i >= 0; i--) { if (list[i].rank == rank - 1) { info = list[i]; return info; } } return info; } /// /// 按条件筛选的数据 /// /// /// /// /// /// /// public static List GetFcbjpk10List(ref List datalist, int pagesize, string day) { List list = datalist; List rlist = new List(); if (list != null && list.Count > 0) { int size = list.Count; if (pagesize > 0) { for (int i = (size - pagesize); i < size; i++) { rlist.Add(list[i]); } return rlist; } if (!string.IsNullOrWhiteSpace(day)) { rlist.Clear(); var stime = TypeConverter.ObjectToDateTime(day); var etime = stime.AddDays(1); rlist = datalist.Where(n => n.date > stime && n.date < etime).ToList(); return rlist; } } return rlist; } /// /// 获取最近多少天数据 /// /// /// /// /// public static List GetList(string ename, int pagesize, int n = 30) { string key = $"DATA-{ename}-{pagesize * n}"; List list = cache.GetObject>(key); if (list == null) { #region 获取数据 list = GetList(pagesize * n); #endregion cache.AddObject(key, list, (int)CacheTime.Mintime); } return list; } /// /// 最近N期的数据列表 /// /// public static List GetList(int limit = 2000) { string sql = $"order by qi desc limit {limit}"; using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { var list = db.Fetch(sql).OrderBy(n => n.qi).ToList(); var outlist = new List(); if (list != null && list.Count > 0) { var size = list.Count; for (int i = 0; i < size; i++) { Fcbjpk10Info info = list[i]; info.rank = i + 1; outlist.Add(info); } } return outlist; } } /// /// 获取指定时间内的数据 /// /// /// /// /// public static List GetDayKjList(string ename, DateTime sqi, DateTime eqi) { string key = $"DATA-{ename}-{sqi}-{eqi}"; List list = cache.GetObject>(key); if (list == null) { #region 获取数据 list = GetOneDayKjList(sqi, eqi); #endregion cache.AddObject(key, list, (int)CacheTime.Expert); } return list; } /// /// 某一天的 /// /// /// /// public static List GetOneDayKjList(DateTime sqi, DateTime eqi) { string sql = string.Format("where date BETWEEN '{0}' AND '{1}'", sqi, eqi); using (Database db = new Database(mysql, MySqlClientFactory.Instance)) { var list = db.Fetch(sql); var outlist = new List(); if (list != null && list.Count > 0) { var size = list.Count; for (int i = 0; i < size; i++) { Fcbjpk10Info info = list[i]; info.rank = i + 1; outlist.Add(info); } } return outlist; } } } }