using System; using System.Collections.Generic; using System.Linq; using System.Text; using CB.Data; using CB.Entity; using CB.Interface; using CB.Common; namespace CB.TrendMiss.LotteryTrendMiss { public class FCSSQTrendMiss { /// /// 生成遗漏图表,生成当前term数据及以后数据 /// by JNswins 2015-06-10 /// /// 遗漏表ID /// 需要生成走势图期数 /// 彩种开奖数据额外查询条件 /// public static Tuple CreateMissData(int chartId, long term, LotterySearchField fields = null) { //读取遗漏配置 var trendMissItem = TrendMissItemService.GetMissEntity(chartId); if (null == trendMissItem) return new Tuple(false, string.Format("未找到【ChartId={0}】遗漏图的项配置数据", chartId)); var ListToEnd = FCSSQService.GetListToEnd(term, fields); if (null == ListToEnd || ListToEnd.Count <= 0) return new Tuple(false, "未找到有效开奖数据"); //初始化项 IMissItem missItem = TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName); int i = 0; bool yes = true; foreach (var item in ListToEnd) { //根据参数term期数获取近两期开奖信息TOP 2 [Term]<=term ORDER BY [Term] DESC var list = FCSSQService.ToListForTrend(item.Term, fields); FCSSQInfo info = null; IList missDataList = null; if (null == list || 0 >= list.Count) continue; info = list[0]; if (2 == list.Count) { //取当前期数的上一期的遗漏数据 if (0 == i) missDataList = TrendMissDataService.GetMissDataList(chartId, list[1].Term); else missDataList = missItem.GetMissDataList(); } missItem.Init(trendMissItem, missDataList); yes = yes && missItem.SetItemValue(info); if (!yes) return new Tuple(false, string.Format("开奖号错误:截止期数【term={0}】", item.Term)); yes = yes && missItem.SaveData(); if (!yes) return new Tuple(false, string.Format("数据保存出错:截止期数【term={0}】", item.Term)); } return new Tuple(false, string.Format("生成遗漏成功:截止期数【term={0}】", ListToEnd[ListToEnd.Count - 1].Term)); } /// /// 预览遗漏数据 /// /// /// /// public static string PreViewMissData(int chartId, LotterySearchField fields = null) { var sb = new StringBuilder(20000); var trendMissItem = TrendMissItemService.GetMissEntity(chartId); if (null == trendMissItem) return ""; IMissItem missItem = TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName); var list = FCSSQService.GetListToEnd(0, fields); FCSSQInfo info = null; IList missDataList = null; if (null == list || 0 >= list.Count) return ""; bool yes = true; for (int i = 0; i < list.Count; i++) { info = list[i]; missItem.Init(trendMissItem, missDataList); yes = yes && missItem.SetItemValue(info); missDataList = missItem.GetMissDataList(); if (!yes || i == list.Count - 1) //开奖号码不正确或者最后一条数据的时候显示数据 { if (null != missDataList) foreach (var item in missDataList) { sb.Append(""); sb.Append(string.Format("{0}", item.ItemValue)); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.Cycle))); sb.Append(string.Format("{0}|{1}", item.Times, item.TimesTheory)); sb.Append(string.Format("{0}", (string.Format("{0:F2}", item.Probability * 100)) + "%")); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.AvgMiss))); sb.Append(string.Format("{0}", item.MaxMiss)); sb.Append(string.Format("{0}", item.LastMaxMiss)); sb.Append(string.Format("{0}", item.LastMiss)); sb.Append(string.Format("{0}", item.LocalMiss)); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.AppearingProbability))); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.InvestmentValue))); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.CoveringProbability))); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.ContinuousProbability))); sb.Append(string.Format("{0}", item.ContinuousMaxTimes)); sb.Append(string.Format("{0}", item.ContinuousMaxMiss)); sb.Append(string.Format("{0}", 0 == item.ContinuousTimes ? item.Times - 1 : item.ContinuousLocalMiss)); sb.Append(string.Format("{0}", string.Format("{0:F2}", item.ContinuousLocalProbability))); } break; } } return sb.ToString(); } #region 生成遗漏 已注释 by JNswins 2015-06-11 ///// ///// 生成遗漏 ///// ///// 走势图ID ///// 期号 ///// true:生成term期数及以后期数的走势图及遗漏数据;false:仅生成当前期走势图及遗漏数据 ///// //public static bool CreateMissData(int chartId, long term, bool MultiTerm = false) //{ // if (MultiTerm) // return CreateCurrentToEndMissData(chartId, term); // return CreateCurrentMissData(chartId, term); //} ///// ///// 生成当期遗漏数据 ///// ///// ///// ///// //public static bool CreateCurrentMissData(int chartId, long term, bool MultiTerm = false) //{ // var trendMissItem = TrendMissItemService.GetMissEntity(chartId); // if (null == trendMissItem) // return false; // IMissItem missItem = TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName); // //GenericUtils.CreateInstance>(TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName), // // new Type[] { typeof(FCSSQInfo) }); // //根据参数term期数获取近两期开奖信息TOP 2 [Term]<=term ORDER BY [Term] DESC // var list = FCSSQService.ToListForTrend(term); // FCSSQInfo info = null; // IList missDataList = null; // if (null == list || 0 >= list.Count) // return false; // info = list[0]; // if (2 == list.Count) // { // //取当前期数的上一期的遗漏数据 // missDataList = TrendMissDataService.GetMissDataList(chartId, list[1].Term); // } // missItem.Init(trendMissItem, missDataList); // missItem.SetItemValue(info); // return missItem.SaveData(); //} ///// ///// 生成当期及以后遗漏数据 ///// ///// ///// ///// //public static bool CreateCurrentToEndMissData(int chartId, long term, bool MultiTerm = false) //{ // var ListToEnd = FCSSQService.GetListToEnd(term); // if (null == ListToEnd || ListToEnd.Count <= 0) // return false; // var trendMissItem = TrendMissItemService.GetMissEntity(chartId); // if (null == trendMissItem) // return false; // IMissItem missItem = TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName); // //GenericUtils.CreateInstance>(TrendMissUtils.GetTrendMissClassName(trendMissItem.ClassName), // // new Type[] { typeof(FCSSQInfo) }); // for (int i = 0; i < ListToEnd.Count; i++) // { // //根据参数term期数获取近两期开奖信息TOP 2 [Term]<=term ORDER BY [Term] DESC // var list = FCSSQService.ToListForTrend(ListToEnd[i].Term); // FCSSQInfo info = null; // IList missDataList = null; // if (null == list || 0 >= list.Count) // continue; // info = list[0]; // if (2 == list.Count) // { // //取当前期数的上一期的遗漏数据 // if (i == 0) // missDataList = TrendMissDataService.GetMissDataList(chartId, list[1].Term); // else // missDataList = missItem.GetMissDataList(); // } // missItem.Init(trendMissItem, missDataList); // missItem.SetItemValue(info); // missItem.SaveData(); // } // return true; //} #endregion } }