1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.Common;
- using System.Data.SqlClient;
- using System.Linq;
- using System.Text;
- using CB.Entity;
- using CB.Interface.OldDataCenter;
- namespace CB.Data.SqlServer
- {
- public class OldDataCenterManage : IOldDataCenterService
- {
- private string InterfaceId = "";
- public OldDataCenterManage(string interfaceId)
- {
- InterfaceId = interfaceId;
- }
- public int GetProcessResultCount(int term)
- {
- return Convert.ToInt32(DbHelper.ExecuteScalar(InterfaceId, CommandType.Text, "SELECT COUNT([rid]) FROM [tbl_result] WHERE [qi]=" + term.ToString() + " AND [status]=0"));
- }
- public List<ShortResult> ProcessResultData(int term, int[] openCode)
- {
- List<ShortResult> rList = new List<ShortResult>();
- List<ShortResult> sList = GetSourceResult(term);
- if (sList != null && sList.Count > 0)
- {
- int[] _kjh = openCode;
- int kd, hz, hw;
- if (_kjh[0] == _kjh[1] && _kjh[0] == _kjh[2])
- {
- kd = 0;
- hz = _kjh[0] * 3;
- }
- else
- {
- List<int> list = new List<int>(_kjh.ToList());
- list.Sort();
- kd = Convert.ToInt32(list[2].ToString()) - Convert.ToInt32(list[0].ToString());
- hz = _kjh[0] + _kjh[1] + _kjh[2];
- }
- hw = hz % 10;
- int record = sList.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- string rkjh = _kjh[0].ToString() + _kjh[1].ToString() + _kjh[2].ToString();
- string source = sList[i].Source;
- int status = 1;
- string result = "";
- switch (sList[i].Cid)
- {
- case 1://胆码 记录中奖个数
- int j = 0;
- string[] tp = source.Split(',');
- foreach (string s in tp)
- {
- if (!String.IsNullOrEmpty(s))
- {
- if (rkjh.Contains(s))
- { j++; }
- }
- }
- j = j > 3 ? 0 : j;
- result = j > 0 ? j.ToString() : "";
- status = j > 0 ? 2 : 1;
- break;
- case 2://杀码
- break;
- case 3://和尾 记录中奖号码
- status = 1;
- if (source.Contains(hw.ToString()))
- {
- result = hw.ToString();
- status = 2;
- }
- break;
- case 4://五码复式 记录中奖号码
- break;
- case 5://跨度 记录中奖号码
- status = 1;
- if (source.Contains(kd.ToString()))
- {
- result = kd.ToString();
- status = 2;
- }
- break;
- case 6://组三
- break;
- case 7://组六
- break;
- default:
- break;
- }
- ShortResult info = new ShortResult();
- info.Rid = sList[i].Rid;
- info.Result = result.ToString();
- info.Kjh = rkjh;
- info.Status = status;
- rList.Add(info);
- }
- }
- return rList;
- }
- public void UpBatchDataResult(List<ShortResult> results)
- {
- if (results == null || results.Count <= 0) return;
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- List<ShortResult> list = results;
- int record = list.Count;
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand("SELECT TOP " + record.ToString() + " [rid],[kjh],[result],[status] FROM [tbl_result]", conn);
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- sd.UpdateCommand = new SqlCommand("UPDATE [tbl_result] SET [kjh]=@kjh,[result]=@result,[status]=@status WHERE [rid]=@rid", conn);
- sd.UpdateCommand.Parameters.Add("@kjh", SqlDbType.Char, 20, "kjh");
- sd.UpdateCommand.Parameters.Add("@result", SqlDbType.VarChar, 200, "result");
- sd.UpdateCommand.Parameters.Add("@status", SqlDbType.TinyInt, 2, "status");
- sd.UpdateCommand.Parameters.Add("@rid", SqlDbType.Int, 4, "rid");
- sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.UpdateBatchSize = 0;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = dataset.Tables[0].Rows[i];
- dr.BeginEdit();
- dr["kjh"] = list[i].Kjh;
- dr["result"] = list[i].Result;
- dr["status"] = list[i].Status;
- dr["rid"] = list[i].Rid;
- dr.EndEdit();
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- #region 批量更新数据统计表是否中奖
- public void UpBatchDataReports(int term, int[] openCode)
- {
- int[] _kjh = openCode;
- string sqlstr = "SELECT [status] FROM tbl_report";
- string sqlwhere = " WHERE [qi]=" + term.ToString();
- if (_kjh[0] == _kjh[1] && _kjh[0] == _kjh[2])
- {
- sqlwhere = sqlwhere + " AND (([cid]=1 AND [number]=" + _kjh[0].ToString() + ") OR ([cid]=5 AND [number]=0) OR ([cid]=3 AND [number]=" + ((_kjh[0] * 3) % 10).ToString() + "))";
- }
- else
- {
- ArrayList list = new ArrayList(_kjh);
- list.Sort();
- int zxkjh = Convert.ToInt32(list[0].ToString() + list[1].ToString() + list[2].ToString());
- int kd = Convert.ToInt32(list[2].ToString()) - Convert.ToInt32(list[0].ToString());
- int hw = (_kjh[0] + _kjh[1] + _kjh[2]) % 10;
- sqlwhere = sqlwhere + " AND (([cid]=1 AND ([number]=" + _kjh[0].ToString() + " OR [number]=" + _kjh[1].ToString() + " OR [number]=" + _kjh[2].ToString() + ")) OR ([cid]=5 AND [number]=" + kd.ToString() + ") OR ([cid]=3 AND [number]=" + hw.ToString() + ") OR (([cid]=6 OR [cid]=7) AND [number]=" + zxkjh.ToString() + "))";
- }
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand(sqlstr + sqlwhere, conn);
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- sd.UpdateCommand = new SqlCommand("UPDATE tbl_report SET [status]=@status" + sqlwhere, conn);
- sd.UpdateCommand.Parameters.Add("@status", SqlDbType.Int, 4, "status");
- sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.UpdateBatchSize = 0;
- int record = dataset.Tables[0].Rows.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = dataset.Tables[0].Rows[i];
- dr.BeginEdit();
- dr["status"] = 1;
- dr.EndEdit();
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- public void UpBatchDataEffect(int term, int[] openCode)
- {
- int[] kjh = openCode;
- string sqlstr = "SELECT [status] FROM tbl_effect";
- string sqlwhere = " WHERE [qi]=" + term.ToString();
- if (kjh[0] == kjh[1] && kjh[0] == kjh[2])
- {
- sqlwhere = sqlwhere + " AND (([cid]=1 AND [number]=" + kjh[0].ToString() + ") OR ([cid]=5 AND [number]=0) OR ([cid]=3 AND [number]=" + ((kjh[0] * 3) % 10).ToString() + "))";
- }
- else
- {
- ArrayList list = new ArrayList(kjh);
- list.Sort();
- int zxkjh = Convert.ToInt32(list[0].ToString() + list[1].ToString() + list[2].ToString());
- int kd = Convert.ToInt32(list[2].ToString()) - Convert.ToInt32(list[0].ToString());
- int hw = (kjh[0] + kjh[1] + kjh[2]) % 10;
- sqlwhere = sqlwhere + " AND (([cid]=1 AND ([number]=" + kjh[0].ToString() + " OR [number]=" + kjh[1].ToString() + " OR [number]=" + kjh[2].ToString() + ")) OR ([cid]=5 AND [number]=" + kd.ToString() + ") OR ([cid]=3 AND [number]=" + hw.ToString() + ") OR (([cid]=6 OR [cid]=7) AND [number]=" + zxkjh.ToString() + "))";
- }
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand(sqlstr + sqlwhere, conn);
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- sd.UpdateCommand = new SqlCommand("UPDATE tbl_effect SET [status]=@status" + sqlwhere, conn);
- sd.UpdateCommand.Parameters.Add("@status", SqlDbType.Int, 4, "status");
- sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.UpdateBatchSize = 0;
- int record = dataset.Tables[0].Rows.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = dataset.Tables[0].Rows[i];
- dr.BeginEdit();
- dr["status"] = 1;
- dr.EndEdit();
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- #endregion
- public void ProcessReportDeviation(int term)
- {
- List<int> qiList = new List<int>();
- List<mReport> dqList = new List<mReport>();
- List<mReport> allList = new List<mReport>();
- qiList = GetQiList(term);
- allList = GetReportList(term, qiList, ref dqList);
- int[,] allSum = GetEverLocationHot(term, qiList, allList);
- if (dqList != null && dqList.Count > 0)
- {
- List<mReport> dmList = new List<mReport>();
- List<mReport> hwList = new List<mReport>();
- List<mReport> kdList = new List<mReport>();
- for (int i = dqList.Count - 1; i >= 0; i--)
- {
- mReport info = dqList[i];
- switch (dqList[i].Cid)
- {
- case 1:
- dmList.Add(info);
- break;
- case 3:
- hwList.Add(info);
- break;
- case 5:
- kdList.Add(info);
- break;
- }
- }
- int ca = dmList.Count, cb = hwList.Count, cc = kdList.Count;
- int count = qiList.Count;
- for (int a = 0; a < ca; a++)
- { dmList[a].Deviation = allSum[0, a] > 0 ? (allSum[1, a] / (double)count - (allSum[2, a] / (double)allSum[0, a]) * 0.65) : 0d; }
- for (int b = 0; b < cb; b++)
- { hwList[b].Deviation = allSum[3, b] > 0 ? (allSum[4, b] / (double)count - (allSum[5, b] / (double)allSum[3, b]) * 0.65) : 0d; }
- for (int c = 0; c < cc; c++)
- { kdList[c].Deviation = allSum[6, c] > 0 ? (allSum[7, c] / (double)count - (allSum[8, c] / (double)allSum[6, c])) : 0d; }
- UpReportDeviation(term, 1, dmList);
- UpReportDeviation(term, 3, hwList);
- UpReportDeviation(term, 5, kdList);
- }
- }
- public void ProcessEffectDeviation(int term)
- {
- List<int> qiList = new List<int>();
- List<mReport> dqList = new List<mReport>();
- List<mReport> allList = new List<mReport>();
- qiList = GetQiList(term);
- allList = GetEffectList(term, qiList, ref dqList);
- int[,] allSum = GetEverLocationHot(term, qiList, allList);
- if (dqList != null && dqList.Count > 0)
- {
- List<mReport> dmList = new List<mReport>();
- List<mReport> hwList = new List<mReport>();
- List<mReport> kdList = new List<mReport>();
- for (int i = dqList.Count - 1; i >= 0; i--)
- {
- mReport info = dqList[i];
- switch (dqList[i].Cid)
- {
- case 1:
- dmList.Add(info);
- break;
- case 3:
- hwList.Add(info);
- break;
- case 5:
- kdList.Add(info);
- break;
- }
- }
- int ca = dmList.Count, cb = hwList.Count, cc = kdList.Count;
- int count = qiList.Count;
- for (int a = 0; a < ca; a++)
- { dmList[a].Deviation = allSum[0, a] > 0 ? (allSum[1, a] / (double)count - (allSum[2, a] / (double)allSum[0, a]) * 0.65) : 0d; }
- for (int b = 0; b < cb; b++)
- { hwList[b].Deviation = allSum[3, b] > 0 ? (allSum[4, b] / (double)count - (allSum[5, b] / (double)allSum[3, b]) * 0.65) : 0d; }
- for (int c = 0; c < cc; c++)
- { kdList[c].Deviation = allSum[6, c] > 0 ? (allSum[7, c] / (double)count - (allSum[8, c] / (double)allSum[6, c])) : 0d; }
- UpEffectDeviation(term, 1, dmList);
- UpEffectDeviation(term, 3, hwList);
- UpEffectDeviation(term, 5, kdList);
- }
- }
- #region 更新配置表tbl_config开奖期数
- /// <summary>
- /// 更新配置表tbl_config开奖期数
- /// </summary>
- /// <param name="qi"></param>
- public void UpConfigQi(int term)
- {
- DbHelper.ExecuteNonQuery(InterfaceId, CommandType.Text, "UPDATE [tbl_config] SET [qi]=" + term.ToString());
- }
- #endregion
- public void PushHistoryResultData(int term, int[] openCode)
- {
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand("SELECT [qi],[cid],[kjh],[source],[result],[status] FROM [tbl_history]", conn);
- sd.InsertCommand = new SqlCommand("du_create_historyresult", conn);
- sd.InsertCommand.Parameters.Add("@qi", SqlDbType.Int, 4, "qi");
- sd.InsertCommand.Parameters.Add("@cid", SqlDbType.Int, 4, "cid");
- sd.InsertCommand.Parameters.Add("@kjh", SqlDbType.Char, 5, "kjh");
- sd.InsertCommand.Parameters.Add("@source", SqlDbType.NChar, 200, "source");
- sd.InsertCommand.Parameters.Add("@result", SqlDbType.NChar, 150, "result");
- sd.InsertCommand.Parameters.Add("@status", SqlDbType.Bit, 1, "status");
- sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.InsertCommand.CommandType = CommandType.StoredProcedure;
- sd.UpdateBatchSize = 0;
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- List<mResult> rList = GetReportHistory(term, openCode);
- List<mResult> eList = GetEffectHistory(term, openCode);
- string _kjh = openCode[0].ToString() + openCode[1].ToString() + openCode[2].ToString();
- int count = 0;
- count = rList.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- object[] row = { term, rList[i].Cid, _kjh, rList[i].Source, rList[i].Result, false };
- dataset.Tables[0].Rows.Add(row);
- }
- count = eList.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- object[] row = { term, eList[i].Cid, _kjh, eList[i].Source, eList[i].Result, true };
- dataset.Tables[0].Rows.Add(row);
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- public void ResetDataResult(int term)
- {
- DbHelper.ExecuteNonQuery(InterfaceId, CommandType.Text, "UPDATE [tbl_result] SET [status]=0 WHERE [qi]=" + term.ToString());
- }
- #region 私有方法
- #region 取未处理分表数据
- /// <summary>
- /// 取未处理分表数据
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private DataSet GetProcessResult(int qi)
- {
- DbParameter[] pars = { DbHelper.MakeInParam(InterfaceId, "@qi", (DbType)SqlDbType.Int, 4, qi), };
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.StoredProcedure, "du_st_result", pars);
- }
- #endregion
- /// <summary>
- /// 获取未处理分表结果数据
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private List<ShortResult> GetSourceResult(int qi)
- {
- List<ShortResult> rList = new List<ShortResult>();
- DataSet ds = GetProcessResult(qi);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int record = ds.Tables[0].Rows.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = ds.Tables[0].Rows[i];
- ShortResult info = new ShortResult();
- info.Rid = Convert.ToInt32(dr["rid"]);
- info.Cid = Convert.ToInt32(dr["cid"]);
- info.Qi = Convert.ToInt32(dr["qi"]);
- info.Source = dr["source"].ToString().Trim();
- rList.Add(info);
- }
- }
- return rList;
- }
- /// <summary>
- /// 获取计算近10期热度偏差的所有期数信息
- /// </summary>
- /// <returns></returns>
- private List<int> GetQiList(int dqQi)
- {
- List<int> rList = new List<int>();
- DataSet ds = GetDeviationQi(dqQi);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int count = ds.Tables[0].Rows.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- string str = ds.Tables[0].Rows[i][0].ToString().Trim();
- if (!String.IsNullOrEmpty(str))
- {
- rList.Add(Convert.ToInt32(str));
- }
- }
- }
- return rList;
- }
- #region 获取计算近10期热度偏差的所有期数信息
- /// <summary>
- /// 获取计算近10期热度偏差的所有期数信息
- /// </summary>
- /// <param name="dqQi"></param>
- /// <returns></returns>
- private DataSet GetDeviationQi(int dqQi)
- {
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.Text, "SELECT TOP 30 [qi] FROM [tbl_report] WHERE [qi]<=" + dqQi.ToString() + " GROUP BY [qi] ORDER BY [qi] DESC");
- }
- #endregion
- /// <summary>
- /// 取热度统计数据 条件
- /// </summary>
- /// <param name="qi"></param>
- /// <param name="sList"></param>
- /// <returns></returns>
- private List<mReport> GetReportList(int qi, List<int> qiList, ref List<mReport> sList)
- {
- List<mReport> list = new List<mReport>();
- string qistr = string.Empty;
- if (qiList != null && qiList.Count > 0)
- {
- int count = qiList.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- if (String.IsNullOrEmpty(qistr))
- { qistr = qiList[i].ToString(); }
- else
- { qistr = qistr + "," + qiList[i].ToString(); }
- }
- }
- if (!String.IsNullOrEmpty(qistr))
- {
- DataSet ds = GetReportList(qistr);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int count = ds.Tables[0].Rows.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- DataRow dr = ds.Tables[0].Rows[i];
- mReport info = new mReport();
- info.Qi = Convert.ToInt32(dr["qi"]);
- info.Cid = Convert.ToInt32(dr["cid"]);
- info.Number = Convert.ToInt32(dr["number"]);
- info.Record = Convert.ToInt32(dr["record"]);
- info.Status = Convert.ToInt32(dr["status"]);
- if (info.Qi == qi)
- { sList.Add(info); }
- list.Add(info);
- }
- }
- }
- return list;
- }
- #region 获取号码热度数据
- /// <summary>
- /// 取近10期号码热度数据 条件
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private DataSet GetReportList(string qi)
- {
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.Text, "SELECT [qi],[cid],[number],[allcount] AS record,[status] FROM [tbl_report] WHERE [cid]<=5 AND [qi] IN(" + qi + ") ORDER BY [record] DESC");
- }
- /// <summary>
- /// 获取当期热度号码数据 条件
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private DataSet GetReportList(int qi)
- {
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.Text, "SELECT [qi],[cid],[number],[allcount] AS record,[status] FROM [tbl_report] WHERE [qi]=" + qi.ToString() + " ORDER BY [record] DESC");
- }
- #endregion
- /// <summary>
- /// 获取单一分类某一位置热度总量 2011-9-29
- /// </summary>
- /// <param name="rList"></param>
- /// <returns></returns>
- private static int[,] GetEverLocationHot(int dqi, List<int> qiList, List<mReport> rList)
- {
- int[,] avg = new int[9, 10];
- for (int i = 9; i >= 0; i--)
- {
- avg[0, i] = 0; avg[1, i] = 0; avg[2, i] = 0; avg[3, i] = 0; avg[4, i] = 0; avg[5, i] = 0; avg[6, i] = 0; avg[7, i] = 0; avg[8, i] = 0;
- }
- List<int> _qi = qiList;
- List<mReport> _list = rList;
- if (_qi != null && _qi.Count > 0 && _list != null && _list.Count > 0)
- {
- int count = _qi.Count;
- int len = _list.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- int tpqi = _qi[i];
- List<mReport> dmList = new List<mReport>();
- List<mReport> hwList = new List<mReport>();
- List<mReport> kdList = new List<mReport>();
- for (int j = len - 1; j >= 0; j--)
- {
- mReport info = _list[j];
- if (info.Qi == tpqi)
- {
- if (_list[j].Cid == 1)
- { dmList.Add(info); }
- if (_list[j].Cid == 3)
- { hwList.Add(info); }
- if (_list[j].Cid == 5)
- { kdList.Add(info); }
- }
- }
- int ca = dmList.Count, cb = hwList.Count, cc = kdList.Count;
- for (int a = 0; a < ca; a++)
- {
- avg[0, a] += dmList[a].Record;
- if (dmList[a].Status == 1) { avg[1, a]++; }
- if (tpqi == dqi) { avg[2, a] = dmList[a].Record; }
- }
- for (int b = 0; b < cb; b++)
- {
- avg[3, b] += hwList[b].Record;
- if (hwList[b].Status == 1) { avg[4, b]++; }
- if (tpqi == dqi) { avg[5, b] = hwList[b].Record; }
- }
- for (int c = 0; c < cc; c++)
- {
- avg[6, c] += kdList[c].Record;
- if (kdList[c].Status == 1) { avg[7, c]++; }
- if (tpqi == dqi) { avg[8, c] = kdList[c].Record; }
- }
- }
- }
- return avg;
- }
- #region 更新热度偏差数据
- /// <summary>
- /// 更新热度偏差数据 条件
- /// </summary>
- /// <param name="qi"></param>
- /// <param name="rList"></param>
- private void UpReportDeviation(int qi, int cid, List<mReport> rList)
- {
- if (rList != null && rList.Count > 0)
- {
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand("SELECT [qi],[cid],[number],[deviation] FROM [tbl_report] WHERE [cid]=" + cid.ToString() + " AND [qi]=" + qi.ToString(), conn);
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- sd.UpdateCommand = new SqlCommand("UPDATE [tbl_report] SET [deviation]=@deviation WHERE [qi]=@qi AND [cid]=@cid AND [number]=@number", conn);
- sd.UpdateCommand.Parameters.Add("@deviation", SqlDbType.Float, 6, "deviation");
- sd.UpdateCommand.Parameters.Add("@qi", SqlDbType.Int, 4, "qi");
- sd.UpdateCommand.Parameters.Add("@cid", SqlDbType.Int, 4, "cid");
- sd.UpdateCommand.Parameters.Add("@number", SqlDbType.Int, 4, "number");
- sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.UpdateBatchSize = 0;
- int record = dataset.Tables[0].Rows.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = dataset.Tables[0].Rows[i];
- int _cid = Convert.ToInt32(dr["cid"]);
- int number = Convert.ToInt32(dr["number"]);
- dr.BeginEdit();
- dr["deviation"] = GetNumberDeviation(rList, qi, _cid, number);
- dr.EndEdit();
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- }
- /// <summary>
- /// 返回热度偏差
- /// </summary>
- /// <param name="rList"></param>
- /// <param name="qi"></param>
- /// <param name="cid"></param>
- /// <param name="number"></param>
- /// <returns></returns>
- public static double GetNumberDeviation(List<mReport> rList, int qi, int cid, int number)
- {
- if (rList != null && rList.Count > 0)
- {
- List<mReport> list = rList;
- int count = list.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- if (list[i].Qi == qi && list[i].Cid == cid && list[i].Number == number)
- {
- return list[i].Deviation;
- }
- }
- }
- return 0d;
- }
- #endregion
- /// <summary>
- /// 取热度统计数据 结果(返算)
- /// </summary>
- /// <param name="qi"></param>
- /// <param name="sList"></param>
- /// <returns></returns>
- private List<mReport> GetEffectList(int qi, List<int> qiList, ref List<mReport> sList)
- {
- List<mReport> list = new List<mReport>();
- string qistr = string.Empty;
- if (qiList != null && qiList.Count > 0)
- {
- int count = qiList.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- if (String.IsNullOrEmpty(qistr))
- { qistr = qiList[i].ToString(); }
- else
- { qistr = qistr + "," + qiList[i].ToString(); }
- }
- }
- if (!String.IsNullOrEmpty(qistr))
- {
- DataSet ds = GetEffectList(qistr);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int[] avgKD = { 1, 18, 24, 28, 30, 30, 28, 24, 18, 10 };
- int count = ds.Tables[0].Rows.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- DataRow dr = ds.Tables[0].Rows[i];
- mReport info = new mReport();
- info.Qi = Convert.ToInt32(dr["qi"]);
- info.Cid = Convert.ToInt32(dr["cid"]);
- info.Number = Convert.ToInt32(dr["number"]);
- info.Record = Convert.ToInt32(dr["record"]);
- if (info.Cid == 1)
- { info.Record = info.Record / 54; }
- if (info.Cid == 3)
- { info.Record = info.Record / 21; }
- if (info.Cid == 5)
- { info.Record = info.Record / avgKD[info.Number]; }
- info.Status = Convert.ToInt32(dr["status"]);
- if (info.Qi == qi)
- { sList.Add(info); }
- list.Add(info);
- }
- }
- }
- return list;
- }
- /// <summary>
- /// 更新热度偏差数据 结果(返算)
- /// </summary>
- /// <param name="qi"></param>
- /// <param name="rList"></param>
- private void UpEffectDeviation(int qi, int cid, List<mReport> rList)
- {
- if (rList != null && rList.Count > 0)
- {
- using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString(InterfaceId)))
- {
- conn.Open();
- SqlDataAdapter sd = new SqlDataAdapter();
- sd.SelectCommand = new SqlCommand("SELECT [qi],[cid],[number],[deviation] FROM [tbl_effect] WHERE [cid]=" + cid.ToString() + " AND [qi]=" + qi.ToString(), conn);
- DataSet dataset = new DataSet();
- sd.Fill(dataset);
- sd.UpdateCommand = new SqlCommand("UPDATE [tbl_effect] SET [deviation]=@deviation WHERE [qi]=@qi AND [cid]=@cid AND [number]=@number", conn);
- sd.UpdateCommand.Parameters.Add("@deviation", SqlDbType.Float, 6, "deviation");
- sd.UpdateCommand.Parameters.Add("@qi", SqlDbType.Int, 4, "qi");
- sd.UpdateCommand.Parameters.Add("@cid", SqlDbType.Int, 4, "cid");
- sd.UpdateCommand.Parameters.Add("@number", SqlDbType.Int, 4, "number");
- sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
- sd.UpdateBatchSize = 0;
- int record = dataset.Tables[0].Rows.Count;
- for (int i = record - 1; i >= 0; i--)
- {
- DataRow dr = dataset.Tables[0].Rows[i];
- int _cid = Convert.ToInt32(dr["cid"]);
- int number = Convert.ToInt32(dr["number"]);
- dr.BeginEdit();
- dr["deviation"] = GetNumberDeviation(rList, qi, _cid, number);
- dr.EndEdit();
- }
- sd.Update(dataset.Tables[0]);
- dataset.Tables[0].Clear();
- sd.Dispose();
- dataset.Dispose();
- conn.Close();
- }
- }
- }
- /// <summary>
- /// 组合热度统计号码 结果
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private List<mResult> GetReportHistory(int qi, int[] kjh)
- {
- List<mResult> rList = new List<mResult>();
- int[] number = kjh;
- string _kjh = number[0].ToString() + number[1].ToString() + number[2].ToString();
- int hw = (number[0] + number[1] + number[2]) % 10;
- ArrayList ary = new ArrayList(number);
- ary.Sort();
- int kd = Convert.ToInt32(ary[2]) - Convert.ToInt32(ary[0]);
- int zx = Convert.ToInt32(ary[0].ToString() + ary[1].ToString() + ary[2].ToString());
- List<mReport> sList = GetReportLists(qi);
- if (sList != null && sList.Count > 0)
- {
- mResult dmResult = new mResult(qi, 1, _kjh, false);
- mResult hwResult = new mResult(qi, 3, _kjh, false);
- mResult kdResult = new mResult(qi, 5, _kjh, false);
- mResult zxResult = new mResult(qi, 6, _kjh, false);
- int a = 0, b = 0, c = 0, d = 0, e = 0;
- int ka = 0, kb = 0, kc = 0, ke = 0;
- int count = sList.Count;
- int tpnum = -1;
- for (int i = count - 1; i >= 0; i--)
- {
- tpnum = sList[i].Number;
- switch (sList[i].Cid)
- {
- case 1://胆码
- if (a < 3)
- {
- if (_kjh.Contains(tpnum.ToString()))
- { ka++; }
- dmResult.Source = String.IsNullOrEmpty(dmResult.Source) ? tpnum.ToString() : (dmResult.Source + "," + tpnum.ToString());
- a++;
- }
- break;
- case 3://和尾
- if (b < 3)
- {
- if (hw == tpnum)
- { kb++; }
- hwResult.Source = String.IsNullOrEmpty(hwResult.Source) ? tpnum.ToString() : (hwResult.Source + "," + tpnum.ToString());
- b++;
- }
- break;
- case 5://跨度
- if (c < 3)
- {
- if (kd == tpnum)
- { kc++; }
- kdResult.Source = String.IsNullOrEmpty(kdResult.Source) ? tpnum.ToString() : (kdResult.Source + "," + tpnum.ToString());
- c++;
- }
- break;
- case 6://组三
- if (d < 10)
- {
- if (zx == tpnum)
- { ke = 1; }
- zxResult.Source = String.IsNullOrEmpty(zxResult.Source) ? tpnum.ToString("000") : (zxResult.Source + "," + tpnum.ToString("000")); d++;
- }
- break;
- case 7://组六
- if (e < 30)
- {
- if (zx == tpnum)
- { ke = 1; }
- zxResult.Source = String.IsNullOrEmpty(zxResult.Source) ? tpnum.ToString("000") : (zxResult.Source + "," + tpnum.ToString("000")); e++;
- }
- break;
- }
- }
- if (ka > 0) dmResult.Result = "<span style=\"color:#ff0000;\">中" + ka.ToString() + "码</span>";
- if (kb > 0) hwResult.Result = "<span style=\"color:#ff0000;\">中和尾" + hw.ToString() + "</span>";
- if (kc > 0) kdResult.Result = "<span style=\"color:#ff0000;\">中跨度" + kd.ToString() + "</span>";
- if (ke == 1) zxResult.Result = "<span style=\"color:#ff0000;\">组选推荐中" + zx.ToString("000") + "</span>";
- rList.Add(dmResult);
- rList.Add(hwResult);
- rList.Add(kdResult);
- rList.Add(zxResult);
- }
- return rList;
- }
- /// <summary>
- /// 组合热度统计号码 结果
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private List<mResult> GetEffectHistory(int qi, int[] kjh)
- {
- List<mResult> rList = new List<mResult>();
- int[] number = kjh;
- string _kjh = number[0].ToString() + number[1].ToString() + number[2].ToString();
- int hw = (number[0] + number[1] + number[2]) % 10;
- ArrayList ary = new ArrayList(number);
- ary.Sort();
- int kd = Convert.ToInt32(ary[2]) - Convert.ToInt32(ary[0]);
- int zx = Convert.ToInt32(ary[0].ToString() + ary[1].ToString() + ary[2].ToString());
- List<mReport> sList = GetEffectLists(qi);
- if (sList != null && sList.Count > 0)
- {
- mResult dmResult = new mResult(qi, 1, _kjh, false);
- mResult hwResult = new mResult(qi, 3, _kjh, false);
- mResult kdResult = new mResult(qi, 5, _kjh, false);
- int a = 0, b = 0, c = 0;
- int ka = 0, kb = 0, kc = 0;
- int count = sList.Count;
- int tpnum = -1;
- for (int i = count - 1; i >= 0; i--)
- {
- tpnum = sList[i].Number;
- switch (sList[i].Cid)
- {
- case 1://胆码
- if (a < 3)
- {
- if (_kjh.Contains(tpnum.ToString()))
- { ka++; }
- dmResult.Source = String.IsNullOrEmpty(dmResult.Source) ? tpnum.ToString() : (dmResult.Source + "," + tpnum.ToString());
- a++;
- }
- break;
- case 3://和尾
- if (b < 3)
- {
- if (hw == tpnum)
- { kb++; }
- hwResult.Source = String.IsNullOrEmpty(hwResult.Source) ? tpnum.ToString() : (hwResult.Source + "," + tpnum.ToString());
- b++;
- }
- break;
- case 5://跨度
- if (c < 3)
- {
- if (kd == tpnum)
- { kc++; }
- kdResult.Source = String.IsNullOrEmpty(kdResult.Source) ? tpnum.ToString() : (kdResult.Source + "," + tpnum.ToString());
- c++;
- }
- break;
- }
- }
- if (ka > 0) dmResult.Result = "<span style=\"color:#ff0000;\">中" + ka.ToString() + "码</span>";
- if (kb > 0) hwResult.Result = "<span style=\"color:#ff0000;\">中和尾" + hw.ToString() + "</span>";
- if (kc > 0) kdResult.Result = "<span style=\"color:#ff0000;\">中跨度" + kd.ToString() + "</span>";
- rList.Add(dmResult);
- rList.Add(hwResult);
- rList.Add(kdResult);
- }
- return rList;
- }
- /// <summary>
- /// 获取当期热度号码数据 结果(返算)
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private DataSet GetEffectList(int qi)
- {
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.Text, "SELECT [qi],[cid],[number],[helpcount] AS record,[status] FROM [tbl_effect] WHERE [qi]=" + qi.ToString() + " ORDER BY [record] DESC");
- }
- /// <summary>
- /// 取近10期号码热度数据 结果(返算)
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private DataSet GetEffectList(string qi)
- {
- return DbHelper.ExecuteDataset(InterfaceId, CommandType.Text, "SELECT [qi],[cid],[number],[helpcount] AS record,[status] FROM [tbl_effect] WHERE [cid]<=5 AND [qi] IN(" + qi + ") ORDER BY [record] DESC");
- }
- /// <summary>
- /// 当期热度统计信息 条件
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- public List<mReport> GetReportLists(int qi)
- {
- List<mReport> rList = new List<mReport>();
- DataSet ds = GetReportList(qi);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int count = ds.Tables[0].Rows.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- DataRow dr = ds.Tables[0].Rows[i];
- mReport info = new mReport();
- info.Qi = Convert.ToInt32(dr["qi"]);
- info.Cid = Convert.ToInt32(dr["cid"]);
- info.Number = Convert.ToInt32(dr["number"]);
- info.Record = Convert.ToInt32(dr["record"]);
- info.Status = Convert.ToInt32(dr["status"]);
- rList.Add(info);
- }
- }
- return rList;
- }
- /// <summary>
- /// 当期热度统计信息 结果(返算)
- /// </summary>
- /// <param name="qi"></param>
- /// <returns></returns>
- private List<mReport> GetEffectLists(int qi)
- {
- List<mReport> rList = new List<mReport>();
- DataSet ds = GetEffectList(qi);
- if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
- {
- int count = ds.Tables[0].Rows.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- DataRow dr = ds.Tables[0].Rows[i];
- mReport info = new mReport();
- info.Qi = Convert.ToInt32(dr["qi"]);
- info.Cid = Convert.ToInt32(dr["cid"]);
- info.Number = Convert.ToInt32(dr["number"]);
- info.Record = Convert.ToInt32(dr["record"]);
- info.Status = Convert.ToInt32(dr["status"]);
- rList.Add(info);
- }
- }
- return rList;
- }
- #endregion
- }
- }
|