123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- 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
- {
- /// <summary>
- /// 生成遗漏图表,生成当前term数据及以后数据
- /// by JNswins 2015-06-10
- /// </summary>
- /// <param name="chartId">遗漏表ID</param>
- /// <param name="term">需要生成走势图期数</param>
- /// <param name="LotterySearchField">彩种开奖数据额外查询条件</param>
- /// <returns></returns>
- public static Tuple<bool, string> CreateMissData(int chartId, long term, LotterySearchField fields = null)
- {
- //读取遗漏配置
- var trendMissItem = TrendMissItemService.GetMissEntity(chartId);
- if (null == trendMissItem)
- return new Tuple<bool, string>(false, string.Format("未找到【ChartId={0}】遗漏图的项配置数据", chartId));
- var ListToEnd = FCSSQService.GetListToEnd(term, fields);
- if (null == ListToEnd || ListToEnd.Count <= 0)
- return new Tuple<bool, string>(false, "未找到有效开奖数据");
- //初始化项
- IMissItem<FCSSQInfo> missItem = TrendMissUtils.GetTrendMissClassName<FCSSQInfo>(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<TrendMissDataInfo> 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<bool, string>(false, string.Format("开奖号错误:截止期数【term={0}】", item.Term));
- yes = yes && missItem.SaveData();
- if (!yes)
- return new Tuple<bool, string>(false, string.Format("数据保存出错:截止期数【term={0}】", item.Term));
- }
- return new Tuple<bool, string>(false, string.Format("生成遗漏成功:截止期数【term={0}】", ListToEnd[ListToEnd.Count - 1].Term));
- }
- /// <summary>
- /// 预览遗漏数据
- /// </summary>
- /// <param name="chartId"></param>
- /// <param name="term"></param>
- /// <returns></returns>
- public static string PreViewMissData(int chartId, LotterySearchField fields = null)
- {
- var sb = new StringBuilder(20000);
- var trendMissItem = TrendMissItemService.GetMissEntity(chartId);
- if (null == trendMissItem)
- return "";
- IMissItem<FCSSQInfo> missItem = TrendMissUtils.GetTrendMissClassName<FCSSQInfo>(trendMissItem.ClassName);
- var list = FCSSQService.GetListToEnd(0, fields);
- FCSSQInfo info = null;
- IList<TrendMissDataInfo> 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("<tr>");
- sb.Append(string.Format("<td>{0}</td>", item.ItemValue));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.Cycle)));
- sb.Append(string.Format("<td>{0}|{1}</td>", item.Times, item.TimesTheory));
- sb.Append(string.Format("<td>{0}</td>", (string.Format("{0:F2}", item.Probability * 100)) + "%"));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.AvgMiss)));
- sb.Append(string.Format("<td>{0}</td>", item.MaxMiss));
- sb.Append(string.Format("<td>{0}</td>", item.LastMaxMiss));
- sb.Append(string.Format("<td>{0}</td>", item.LastMiss));
- sb.Append(string.Format("<td>{0}</td>", item.LocalMiss));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.AppearingProbability)));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.InvestmentValue)));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.CoveringProbability)));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.ContinuousProbability)));
- sb.Append(string.Format("<td>{0}</td>", item.ContinuousMaxTimes));
- sb.Append(string.Format("<td>{0}</td>", item.ContinuousMaxMiss));
- sb.Append(string.Format("<td>{0}</td>", 0 == item.ContinuousTimes ? item.Times - 1 : item.ContinuousLocalMiss));
- sb.Append(string.Format("<td>{0}</td>", string.Format("{0:F2}", item.ContinuousLocalProbability)));
- }
- break;
- }
- }
- return sb.ToString();
- }
- #region 生成遗漏 已注释 by JNswins 2015-06-11
- ///// <summary>
- ///// 生成遗漏
- ///// </summary>
- ///// <param name="chartId">走势图ID</param>
- ///// <param name="term">期号</param>
- ///// <param name="MultiTerm">true:生成term期数及以后期数的走势图及遗漏数据;false:仅生成当前期走势图及遗漏数据</param>
- ///// <returns></returns>
- //public static bool CreateMissData(int chartId, long term, bool MultiTerm = false)
- //{
- // if (MultiTerm)
- // return CreateCurrentToEndMissData(chartId, term);
- // return CreateCurrentMissData(chartId, term);
- //}
- ///// <summary>
- ///// 生成当期遗漏数据
- ///// </summary>
- ///// <param name="chartId"></param>
- ///// <param name="term"></param>
- ///// <returns></returns>
- //public static bool CreateCurrentMissData(int chartId, long term, bool MultiTerm = false)
- //{
- // var trendMissItem = TrendMissItemService.GetMissEntity(chartId);
- // if (null == trendMissItem)
- // return false;
- // IMissItem<FCSSQInfo> missItem = TrendMissUtils.GetTrendMissClassName<FCSSQInfo>(trendMissItem.ClassName);
- // //GenericUtils.CreateInstance<IMissItem<FCSSQInfo>>(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<TrendMissDataInfo> 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();
- //}
- ///// <summary>
- ///// 生成当期及以后遗漏数据
- ///// </summary>
- ///// <param name="chartId"></param>
- ///// <param name="term"></param>
- ///// <returns></returns>
- //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<FCSSQInfo> missItem = TrendMissUtils.GetTrendMissClassName<FCSSQInfo>(trendMissItem.ClassName);
- // //GenericUtils.CreateInstance<IMissItem<FCSSQInfo>>(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<TrendMissDataInfo> 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
- }
- }
|