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
}
}