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 Tchnxysc : BaseBll { /// /// 缓存 /// y static WMCache cache = WMCache.GetCacheService(); /// /// 根据当前排名,取出上一个排名,即上一期的数据. /// /// /// public static TchnxyscInfo GetLastQiTchnxyscInfo(ref List list, int rank) { TchnxyscInfo info = new TchnxyscInfo(); 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 TchnxyscInfo GetLastNumTchnxyscInfo(ref List list, int val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { int size = list.Count; for (int i = rank - 2; i >= 0; i--) { List kjh = new List { list[i].n1, list[i].n2, list[i].n3 }; if (kjh.Contains(val)) { info = list[i]; return info; } } } return info; } /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在遗漏上 /// /// /// /// public static TchnxyscInfo GetLastGjTchnxyscInfo(ref List list, int val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (list[i].n1 == val) { info = list[i]; return info; } } } return info; } /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在遗漏上 /// /// /// /// public static TchnxyscInfo GetLastYjTchnxyscInfo(ref List list, int val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (list[i].n2 == val) { info = list[i]; return info; } } } return info; } /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在遗漏上 /// /// /// /// public static TchnxyscInfo GetLastJjTchnxyscInfo(ref List list, int val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (list[i].n3 == val) { info = list[i]; return info; } } } return info; } /// /// 上一次大小的数据 /// /// /// /// public static TchnxyscInfo GetLastDxTchnxyscInfo(ref List list, int val, int rank, int dnw) { TchnxyscInfo info = new TchnxyscInfo(); 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; if (ZstUtils.GetDxBymiddle(hm, 7) == val) { return list[i]; } } } return info; } /// /// 上一次奇偶的情况 /// /// /// /// public static TchnxyscInfo GetLastJoTchnxyscInfo(ref List list, int val, int rank, int dnw) { TchnxyscInfo info = new TchnxyscInfo(); 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; if (ZstUtils.GetJo(hm) == val) { return list[i]; } } } return info; } /// /// 上一次质合的情况 /// /// /// /// public static TchnxyscInfo GetLastZhTchnxyscInfo(ref List list, int val, int rank, int dnw) { TchnxyscInfo info = new TchnxyscInfo(); 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; if (ZstUtils.GetZh(hm) == val) { return list[i]; } } } return info; } /// /// 上一次012路的情况 /// /// /// /// public static TchnxyscInfo GetLast012TchnxyscInfo(ref List list, int val, int rank, int dnw) { TchnxyscInfo info = new TchnxyscInfo(); 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; if (ZstUtils.Get012(hm) == val) { return list[i]; } } } return info; } /// /// 冠亚上一次大小比的数据 /// /// /// /// public static TchnxyscInfo GetLastDxbTchnxyscInfo(ref List list, string val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetDxb(new List() { list[i].n1, list[i].n2 }, 7) == val) { return list[i]; } } } return info; } /// /// 冠亚上一次奇偶比的情况 /// /// /// /// public static TchnxyscInfo GetLastJobTchnxyscInfo(ref List list, string val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetJob(new List() { list[i].n1, list[i].n2 }) == val) { return list[i]; } } } return info; } /// /// 冠亚上一次质合比的情况 /// /// /// /// public static TchnxyscInfo GetLastZhbTchnxyscInfo(ref List list, string val, int rank) { TchnxyscInfo info = new TchnxyscInfo(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetZhb(new List() { list[i].n1, list[i].n2 }) == val) { return list[i]; } } } return info; } /// /// 按条件筛选数据 /// /// /// /// /// /// /// public static List GetTchnxyscList(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++) { TchnxyscInfo 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++) { TchnxyscInfo info = list[i]; info.rank = i + 1; outlist.Add(info); } } return outlist; } } } }