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 Tcsdklpk3 : BaseBll { /// /// 缓存 /// y static WMCache cache = WMCache.GetCacheService(); /// /// 某号码上一次出现时的数据 /// /// /// /// public static Tcsdklpk3Info GetLastNumTcsdklpk3Info(ref List list, int val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 Tcsdklpk3Info GetLastHmxtTcsdklpk3Info(ref List list, string val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetTcsdKlpk3Hmxt(new List() { list[i].n1, list[i].n2, list[i].n3 }, new List() { list[i].hs1, list[i].hs2, list[i].hs3 }) == val) { return list[i]; } } } return info; } /// /// 根据当前出号和排名,查询出上一次出此号时的数据 /// 主要用在遗漏上 /// /// /// /// public static Tcsdklpk3Info GetLastHmTcsdklpk3Info(ref List list, int val, int rank, int dnw) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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; if (hm == val) { info = list[i]; return info; } } } return info; } /// /// 上一次和值的情况 /// /// /// /// public static Tcsdklpk3Info GetLastHzTcsdklpk3Info(ref List list, int val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 Tcsdklpk3Info GetLastDxTcsdklpk3Info(ref List list, int val, int rank, int dnw) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 Tcsdklpk3Info GetLastJoTcsdklpk3Info(ref List list, int val, int rank, int dnw) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 Tcsdklpk3Info GetLastZhTcsdklpk3Info(ref List list, int val, int rank, int dnw) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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; } /// /// 上一次质合比val的数据 /// /// /// /// public static Tcsdklpk3Info GetLastZhbTcsdklpk3Info(ref List list, int szh, int ezh, int rank) { Tcsdklpk3Info data = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var info = list[i]; List kjh = new List { info.n1, info.n2, info.n3 }; var zhb = ZstUtils.GetZhb(kjh); if (zhb == $"{szh}:{ezh}") { data = list[i]; return data; } } } return data; } /// /// 上一次奇偶比val的数据 /// /// /// /// public static Tcsdklpk3Info GetLastJobTcsdklpk3Info(ref List list, int sjo, int ejo, int rank) { Tcsdklpk3Info data = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var info = list[i]; List kjh = new List { info.n1, info.n2, info.n3 }; var job = ZstUtils.GetJob(kjh); if (job == $"{sjo}:{ejo}") { data = list[i]; return data; } } } return data; } /// /// 上一次大小比val的数据 /// /// /// /// public static Tcsdklpk3Info GetLastDxbTcsdklpk3Info(ref List list, int sdx, int edx, int rank) { Tcsdklpk3Info data = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var info = list[i]; List kjh = new List { info.n1, info.n2, info.n3 }; var job = ZstUtils.GetDxb(kjh, 40); if (job == $"{sdx}:{edx}") { data = list[i]; return data; } } } return data; } /// /// 上一次大小形态的情况 /// /// /// /// public static Tcsdklpk3Info GetLastDxxtTcsdklpk3Info(ref List list, string val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 }, 7, false) == val) { return list[i]; } } } return info; } /// /// 上一次奇偶形态的情况 /// /// /// /// public static Tcsdklpk3Info GetLastJoxtTcsdklpk3Info(ref List list, string val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 }, false) == val) { return list[i]; } } } return info; } /// /// 上一次质合形态的情况 /// /// /// /// public static Tcsdklpk3Info GetLastZhxtTcsdklpk3Info(ref List list, string val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); 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 }, false) == val) { return list[i]; } } } return info; } /// /// 上一其和尾val的数据 /// /// /// /// public static Tcsdklpk3Info GetLastHwTcsdklpk3Info(ref List list, int val, int rank) { Tcsdklpk3Info info = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { if (ZstUtils.GetHw(list[i].hz) == val) { info = list[i]; return info; } } } return info; } /// /// 上一次花色的数据 /// /// /// /// public static Tcsdklpk3Info GetLastHsTcsdklpk3Info(ref List list, int val, int rank, int dnw) { Tcsdklpk3Info info = new Tcsdklpk3Info(); if (list != null && list.Count > 0) { for (int i = rank - 2; i >= 0; i--) { var hs = 0; if (dnw == 1) hs = list[i].hs1; else if (dnw == 2) hs = list[i].hs2; else if (dnw == 3) hs = list[i].hs2; if (hs == val) { return list[i]; } } } return info; } /// /// 按条件筛选数据 /// /// /// /// /// /// /// public static List GetTcsdklpk3List(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++) { Tcsdklpk3Info 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++) { Tcsdklpk3Info info = list[i]; info.rank = i + 1; outlist.Add(info); } } return outlist; } } } }