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 Tchnky481 : BaseBll { /// /// 缓存 /// y static WMCache cache = WMCache.GetCacheService(); /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在遗漏上 /// /// /// /// public static Tchnky481Info GetLastHmTchnxyscInfo(ref List list, int val, int rank, int dnw) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { var hm = 0; for (int i = rank - 2; i >= 0; i--) { 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; if (hm == val) { info = list[i]; return info; } } } return info; } /// /// 某号码上一次出现时的数据 /// /// /// /// public static Tchnky481Info GetLastNumTchnky481Info(ref List list, int val, int rank) { Tchnky481Info info = new Tchnky481Info(); 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, list[i].n4 }; if (kjh.Contains(val)) { info = list[i]; return info; } } } return info; } /// /// 上一次大小比的数据 /// /// /// /// public static Tchnky481Info GetLastDxbTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); 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, list[i].n3, list[i].n4 }, 5) == val) { return list[i]; } } } return info; } /// /// 上一次奇偶比的情况 /// /// /// /// public static Tchnky481Info GetLastJobTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); 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, list[i].n3, list[i].n4 }) == val) { return list[i]; } } } return info; } /// /// 上一次质合比的情况 /// /// /// /// public static Tchnky481Info GetLastZhbTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); 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, list[i].n3, list[i].n4 }) == val) { return list[i]; } } } return info; } /// /// 上一次组选形态的情况 /// /// /// /// public static Tchnky481Info GetLastZxxtTchnky481Info(ref List list, int val, int rank) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetZxxt(new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4 }) == val) { return list[i]; } } } return info; } /// /// 上一次和值的情况 /// /// /// /// public static Tchnky481Info GetLastHzTchnky481Info(ref List list, int val, int rank) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (list[i].hz == val) { return list[i]; } } } return info; } /// /// 上一次大小形态的情况 /// /// /// /// public static Tchnky481Info GetLastDxxtTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetDxxtByMiddle(new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4 }, 5, false) == val) { return list[i]; } } } return info; } /// /// 上一次奇偶形态的情况 /// /// /// /// public static Tchnky481Info GetLastJoxtTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetJoxt(new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4 }, false) == val) { return list[i]; } } } return info; } /// /// 上一次质合形态的情况 /// /// /// /// public static Tchnky481Info GetLastZhxtTchnky481Info(ref List list, string val, int rank) { Tchnky481Info info = new Tchnky481Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetZhxt(new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4 }, false) == val) { return list[i]; } } } return info; } /// /// 按条件筛选数据 /// /// /// /// /// /// /// public static List GetTcsxytdjList(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++) { Tchnky481Info 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++) { Tchnky481Info info = list[i]; info.rank = i + 1; outlist.Add(info); } } return outlist; } } } }