using System;
using System.Collections.Generic;
using CB.Common;
using CB.Entity;
using CB.Interface;
namespace CB.TrendMiss
{
///
/// 单值项遗漏
///
///
public class SingleValueItem : MissRepository, IMissItem where TEntity : LotteryOpenCode
{
public override void Init(TrendMissItemInfo itemConfig, IList missData)
{
DefaultInit(itemConfig, missData);
}
public override bool SetItemValue(TEntity entity)
{
Tuple t;
switch (this._itemConfig.FuntionType)
{
case MissItemType.SingleValue_Sum:
t = MissItemFunction.SingleValue_Sum(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
case MissItemType.SingleValue_JOItem:
t = MissItemFunction.SingleValue_JOItem(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
case MissItemType.SingleValue_DXItem:
t = MissItemFunction.SingleValue_DXItem(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd, this._itemConfig.SplitNumberOfDX);
break;
case MissItemType.SingleValue_ZHItem:
t = MissItemFunction.SingleValue_ZHItem(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
case MissItemType.SingleValue_KDItem:
t = MissItemFunction.SingleValue_KDItem(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
case MissItemType.SingleValue_012Item:
t = MissItemFunction.SingleValue_012Item(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
case MissItemType.SingleValue_HWItem:
t = MissItemFunction.SingleValue_HWItem(entity, this._itemConfig.IndexStart, this._itemConfig.IndexEnd);
break;
default:
t = new Tuple(false, "");
break;
}
this.Completed = t.Item1;
if (!t.Item1)
return false;
int index = -1;
for (int i = 0; i < this._itemConfig.ItemCount; i++)
{
this._missData[i].LocalMiss++;//当前遗漏
this._missData[i].RecordCount++;
if (t.Item2 == _missData[i].ItemValue)
{
index = i;
this._missData[i].LastMiss = this._missData[i].LocalMiss - 1;//上期遗漏
this._missData[i].LocalMiss = 0;//重置当前遗漏
this._missData[i].Times++;//出现次数加1
//---------连出及连出遗漏 begin---------------
if (this._missData[i].ItemSelect && i == index)
{
this._missData[i].ContinuousTimes++;
this._missData[i].ContinuousLocalTimes++;
this._missData[i].ContinuousLocalMiss = 0;
//最大连出次数
if (this._missData[i].ContinuousLocalTimes > this._missData[i].ContinuousMaxTimes)
{ this._missData[i].ContinuousMaxTimes = this._missData[i].ContinuousLocalTimes; }
}
else
{
this._missData[i].ContinuousLocalTimes = 0;
this._missData[i].ContinuousLocalMiss++;
//最大连出遗漏
if (this._missData[i].ContinuousLocalMiss > this._missData[i].ContinuousMaxMiss)
{ this._missData[i].ContinuousMaxMiss = this._missData[i].ContinuousLocalMiss; }
}
//---------连出及连出遗漏 end---------------
}
if (this.IsFirst)
this._missData[i].LastMiss = 0;
//最大遗漏
if (this._missData[i].LocalMiss > this._missData[i].MaxMiss)
{ this._missData[i].MaxMiss = this._missData[i].LocalMiss; }
//历史最大遗漏
if (this._missData[i].LastMiss > this._missData[i].LastMaxMiss)
{ this._missData[i].LastMaxMiss = this._missData[i].LastMiss; }
this._missData[i].AvgMiss = ((double)(this._missData[i].RecordCount - this._missData[i].Times)) / (this._missData[i].Times + 1);//计算平均遗漏
//if (this._missData[i].ContinuousTimes == 0)
//{ this._missData[i].ContinuousLocalMiss = this._missData[i].Times - 1; }
this._missData[i].ItemSelect = i == index;
}
if (this.Completed)
{
ComputMissData(entity.Term);
}
return true;
}
public override bool SaveData()
{
return DefaultSaveData();
}
public override IList GetMissDataList()
{
return this._missData;
}
}
}