示例#1
0
        private Result GetComplexPlatUserData(HttpContext context)
        {
            var loginService = new URLoginService();

            SetDownHead(context.Response, "复合平台用户下载量.xls", false, "gb2312");
            if (loginService.CheckUrlRight("tools/InternalCommonUse.aspx", "?act=getcomplexplatuserdata"))
            {
                List <SoftUser> lstsoftuser = GetComplexPlatUserData_GetData(context);
                Func <List <SoftUser>, List <List <string> > > func = p =>
                {
                    var tempList = new List <List <string> >();
                    foreach (SoftUser item in p)
                    {
                        var values = new List <string>();
                        values.Add(item.StatDate.ToString("yyyy-MM-dd"));
                        values.Add(UtilityHelp.FormatNum(item.NewNum));
                        values.Add(UtilityHelp.FormatNum(item.ActiveNum));
                        tempList.Add(values);
                    }
                    return(tempList);
                };
                string html = GetTableHtml(new[] { "日期", "新增用户", "活跃用户" }, func(lstsoftuser));
                return(Result.GetSuccessedResult(html, false, true));
            }
            else
            {
                return(Result.GetSuccessedResult("", false, true));
            }
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                foreach (D_StatDownCountsBySoft_SUM obj in list2)
                {
                    List <string> values = new List <string>();
                    values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.UserCount));
                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCount * 1.0 / (obj.UserCount == 0 ? 1 : obj.UserCount)));

                    values.Add(UtilityHelp.FormatNum <int>(obj.NewUserDownCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.NewUserCount));
                    values.Add(UtilityHelp.GetDecimalDataString(obj.NewUserDownCount * 1.0 / (obj.NewUserCount == 0 ? 1 : obj.NewUserCount)));

                    int user = obj.UserCount - obj.NewUserCount;
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount - obj.NewUserDownCount));
                    values.Add(UtilityHelp.FormatNum <int>(user));
                    values.Add(
                        UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.NewUserDownCount) * 1.0 / (user == 0 ? 1 : user)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCountExceptAllUpdating * 1.0 / (obj.UserCountExceptAllUpdating == 0 ? 1 : obj.UserCountExceptAllUpdating)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.DownCountExceptAllUpdating) * 1.0 / obj.UserCountUpdateing));
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
示例#3
0
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                foreach (D_StatDownCountsBySoft_SUM obj in list2)
                {
                    List <string> values = new List <string>();
                    values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCountExceptAllUpdating));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountByExceptAllUpdate));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCountByExceptAllUpdate));
                    values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountByExceptAllUpdate));
                    values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCountByExceptAllUpdate));
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
示例#4
0
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownPositionDistribution> )
            {
                var temp = list as List <D_StatDownPositionDistribution>;
                foreach (D_StatDownPositionDistribution item in temp)
                {
                    List <string> values = new List <string>();
                    values.Add(item.PositionId.ToString());
                    values.Add(item.PositionName);
                    if (isbrowsecount == 1)
                    {
                        values.Add(UtilityHelp.FormatNum <long>(item.BrowseCount, true));
                    }
                    else
                    {
                        values.Add(UtilityHelp.FormatNum <long>(item.DownCount, true));
                    }

                    tempList.Add(values);
                }
            }
            return(tempList);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool isDetailTable)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownPositionDistribution> )
            {
                var  temp         = list as List <D_StatDownPositionDistribution>;
                long downcountsum = temp.Sum(p => p.DownCount);
                foreach (D_StatDownPositionDistribution item in temp)
                {
                    List <string> values = new List <string>();

                    string pAndP        = "";
                    string positionname = "未知";
                    if (!string.IsNullOrEmpty(item.PageName))
                    {
                        if (!string.IsNullOrEmpty(item.PositionName))
                        {
                            pAndP        = item.PageName + "_" + item.PositionName;
                            positionname = item.PositionName;
                        }
                        else
                        {
                            pAndP = item.PageName;
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(item.PositionName))
                        {
                            pAndP        = item.PositionName;
                            positionname = item.PositionName;
                        }
                        else
                        {
                            pAndP = "未知";
                        }
                    }
                    if (isdiffpage == 1)
                    {
                        pAndP = string.IsNullOrEmpty(item.PageType) ? pAndP : pAndP + "_" + item.PageType;
                    }
                    values.Add(pAndP);
                    values.Add(item.ByTag == 1 ? "专辑" : pAndP.Equals("未知")?"0":item.PositionId.ToString());
                    values.Add(UtilityHelp.FormatNum <long>(item.DownCount, true));
                    values.Add(UtilityHelp.FormatPercent <double>(item.DownCount * 1.0 / downcountsum, true));
                    values.Add(UtilityHelp.FormatNum <double>(item.DownCount * 1.0 / diffdays, true));
                    if (isDetailTable)
                    {
                        values.Add(item.ByTag == 1 ? item.PageType + "_" + Guid.NewGuid().GetHashCode() :  item.PositionId.ToString());
                        values.Add(item.ByTag.ToString());
                    }
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var lstlstname = new List <List <string> >();
            var temp       = list as List <D_StatDownCountsBySoft_SUM>;

            foreach (D_StatDownCountsBySoft_SUM obj in temp)
            {
                var values = new List <string>();
                values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownCountByUpdating));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownCount - obj.DownCountByUpdating));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountByExceptAllUpdate));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountByExceptAllUpdate));
                values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.BrowseCount));
                if (DetailEqChart)
                {
                    if (showdetailposition == 1)
                    {
                        values.Add(obj.StatDate.ToString("yyyy-MM-dd") + "_" + obj.SoftID + "_" + obj.Platform + "_" + obj.ResType + "_" + obj.VersionID + "_" + obj.SourceID + "_" + areatype + "_" + resselecttype + "_" + rescontext + "_" + obj.Area);
                    }
                    else
                    {
                        values.Add("");
                    }
                }
                lstlstname.Add(values);
            }
            if (temp.Count > 0)
            {
                var values2 = new List <string>();
                values2.Add("汇总");
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownCount)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownCountByUpdating)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownCount - p.DownCountByUpdating)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownCountBySearching)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownSuccessCount)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownSuccessCountByExceptAllUpdate)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.DownFailCount)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.SetUpSuccessCount)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.SetUpSuccessCountByExceptAllUpdate)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.SetUpFailCount)));
                values2.Add(UtilityHelp.FormatNum <int>(temp.Sum(p => p.BrowseCount)));
                if (DetailEqChart)
                {
                    values2.Add("");
                }
                lstlstname.Add(values2);
            }

            return(lstlstname);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable(List <Dictionary <string, string> > list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            foreach (Dictionary <string, string> obj in list)
            {
                List <string> values = new List <string>();
                values.Add(obj["rank"]);
                values.Add(UtilityHelp.FormatNum <int>(int.Parse(obj["resid"])));
                values.Add(obj["resname"]);
                values.Add(obj["residentifier"]);
                values.Add(UtilityHelp.FormatNum <int>(int.Parse(obj["realdowncount"])));
                values.Add(string.IsNullOrEmpty(obj["lastrank"]) ? "--" : obj["lastrank"]);
                tempList.Add(values);
            }
            return(tempList);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownPositionDistribution> )
            {
                var temp = list as List <D_StatDownPositionDistribution>;
                foreach (D_StatDownPositionDistribution item in temp)
                {
                    List <string> values = new List <string>();
                    values.Add(item.StatDate.ToString("yyyy-MM-dd"));
                    values.Add(UtilityHelp.FormatNum <long>(item.DownCount, true));
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var lstlstname = new List <List <string> >();
            var temp       = list as List <D_StatDownCountsByResIDEntity>;

            foreach (D_StatDownCountsByResIDEntity obj in temp)
            {
                var values = new List <string>();
                values.Add(obj.Rank.ToString());
                values.Add(obj.AuthorID.ToString());
                values.Add(obj.AuthorName);
                values.Add(UtilityHelp.FormatNum <int>(obj.ResCount));
                values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                values.Add(obj.LastRank.ToString());
                lstlstname.Add(values);
            }
            return(lstlstname);
        }
        private List <List <string> > GetStringList(List <List <Sjqd_StatRetainedUsers> > lists, int peroid)
        {
            var tempList = new List <List <string> >();

            //输出表格
            foreach (var objs in lists)
            {
                var values = new List <string>();


                if (peroid != (int)PeriodOptions.Daily)
                {
                    values.Add(string.Format("{0:yyyy-MM-dd} ~ {1:yyyy-MM-dd}",
                                             peroid == (int)PeriodOptions.Weekly
                                                 ? objs[0].OriginalDate.AddDays(-6)
                                                 : objs[0].OriginalDate.AddMonths(-1).AddDays(1),
                                             objs[0].OriginalDate));
                    values.Add(UtilityHelp.FormatNum <long>(objs[0].OriginalNewUserCount));
                }
                else
                {
                    values.Add(objs[0].OriginalDate.ToString("yyyyMMdd"));
                    values.Add(UtilityHelp.FormatNum <long>(objs[0].OriginalNewUserCount));
                }
                List <Sjqd_StatRetainedUsers> objs2 = objs.OrderByDescending(p => p.StatDate).ToList();
                for (int index = objs2.Count - 1; index >= 0; index--)
                {
                    values.Add(UtilityHelp.FormatNum <long>(objs2[index].RetainedUserCount));
                    values.Add(
                        UtilityHelp.FormatPercent(objs2[index].RetainedUserCount /
                                                  (double)objs2[index].OriginalNewUserCount));
                }
                if (objs.Count < 6)
                {
                    for (int ii = 0; ii < 6 - objs.Count; ii++)
                    {
                        values.Add("");
                        values.Add("");
                    }
                }
                tempList.Add(values);
            }
            return(tempList);
        }
示例#11
0
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownRank_SUM> )
            {
                var temp = list as List <D_StatDownRank_SUM>;
                foreach (D_StatDownRank_SUM obj in temp)
                {
                    List <string> values = new List <string>();
                    values.Add(obj.Rank.ToString());
                    values.Add(obj.ResIdentifier);
                    values.Add(obj.ResName);
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                    values.Add(obj.LastRank.Equals("0")?"--":obj.LastRank);
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                //输出表格
                if (46 == softid || 85 == softid || 58 == softid)
                {
                    foreach (D_StatDownCountsBySoft_SUM obj in list2)
                    {
                        List <string> values = new List <string>();
                        values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountExceptUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountByUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountBySlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount - obj.GameDownCountByUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCountByUpdating, false));
                        tempList.Add(values);
                    }
                    if (list2.Count != 0)
                    {
                        List <string> meavValues = new List <string>();
                        meavValues.Add("均值");
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountExceptUpdating).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountByUpdating).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountBySearching).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountBySlience).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownSuccessCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownSuccessCountByUpdateNoSlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownSuccessCountBySlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownFailCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownFailCountByUpdateNoSlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownFailCountBySlience).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpSuccessCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpSuccessCountByUpdateNoSlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpSuccessCountBySlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpFailCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpFailCountByUpdateNoSlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpFailCountBySlience).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.GameDownCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => (p.GameDownCount - p.GameDownCountByUpdating)).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.GameDownCountByUpdating).Average(), false));

                        tempList.Add(meavValues);
                    }
                }
                else
                {
                    foreach (D_StatDownCountsBySoft_SUM obj in list2)
                    {
                        List <string> values = new List <string>();
                        values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountExceptUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.ScheduleDownCount, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount - obj.GameDownCountByUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCountBySearching, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount, false));
                        tempList.Add(values);
                    }
                    if (list2.Count != 0)
                    {
                        List <string> meavValues = new List <string>();
                        meavValues.Add("均值");
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountExceptUpdating).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountBySlience).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownCountBySearching).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.ScheduleDownCount).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.GameDownCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.GameDownCount - p.GameDownCountByUpdating).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.GameDownCountBySearching).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownSuccessCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.DownFailCount).Average(), false));

                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpSuccessCount).Average(), false));
                        meavValues.Add(UtilityHelp.FormatNum <double>(list2.Select(p => p.SetUpFailCount).Average(), false));
                        tempList.Add(meavValues);
                    }
                }
            }

            return(tempList);
        }
示例#13
0
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                //输出表格
                if (46 == softid || 85 == softid || 58 == softid)
                {
                    int i = 1;
                    foreach (D_StatDownCountsBySoft_SUM obj in list2)
                    {
                        List <string> values = new List <string>();

                        values.Add((i++).ToString());
                        values.Add(obj.E_Version);
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountExceptUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountByUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCountBySlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCountBySlience, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCountByUpdateNoSlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCountBySlience, false));
                        tempList.Add(values);
                    }
                }
                else
                {
                    int i = 1;
                    foreach (D_StatDownCountsBySoft_SUM obj in list2)
                    {
                        List <string> values = new List <string>();

                        values.Add((i++).ToString());
                        values.Add(obj.E_Version);
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountExceptUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySlience, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownCountBySearching, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.ScheduleDownCount, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCount - obj.GameDownCountByUpdating, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.GameDownCountBySearching, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.DownSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.DownFailCount, false));

                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpSuccessCount, false));
                        values.Add(UtilityHelp.FormatNum <int>(obj.SetUpFailCount, false));
                        tempList.Add(values);
                    }
                }
            }

            return(tempList);
        }