Esempio n. 1
0
        /// <summary>
        /// 获取基本用户维度初始化组
        /// </summary>
        /// <param name="title"></param>
        /// <param name="stDate"></param>
        /// <param name="edDate"></param>
        /// <param name="lstDate"></param>
        /// <param name="ledDate"></param>
        /// <returns>
        /// 带时间参数则返回填充数据的列表
        /// 不带参数返回空列表
        /// </returns>
        public static UgcGroup GetGeneralUserDimension(string title, DateTime?stDate = null, DateTime?edDate = null, DateTime?lstDate = null, DateTime?ledDate = null)
        {
            UgcGroup group = new UgcGroup(title);

            List <ItemGroup> itemGroup = new List <ItemGroup>();

            itemGroup.Add(new ItemGroup("按设备", 4, 1));
            itemGroup.Add(new ItemGroup("按状态", 6, 1));
            itemGroup.Add(new ItemGroup("按版本", 2, 1));
            itemGroup.Add(new ItemGroup("按营业额", 5, 1));
            itemGroup.Add(new ItemGroup("按新老用户", 2, 1));

            itemGroup.Find(x => x.GroupName == "按设备").DataList.Add(new NewAccountItem("Android", 0, 0));
            itemGroup.Find(x => x.GroupName == "按设备").DataList.Add(new NewAccountItem("iPhone", 0, 0));
            itemGroup.Find(x => x.GroupName == "按设备").DataList.Add(new NewAccountItem("iPad", 0, 0));
            itemGroup.Find(x => x.GroupName == "按设备").DataList.Add(new NewAccountItem("Web & PC", 0, 0));

            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("流失", 0, 0));
            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("新注册", 0, 0));
            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("休眠", 0, 0));
            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("需关怀", 0, 0));
            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("活跃", 0, 0));
            itemGroup.Find(x => x.GroupName == "按状态").DataList.Add(new NewAccountItem("忠诚", 0, 0));

            itemGroup.Find(x => x.GroupName == "按版本").DataList.Add(new NewAccountItem("免费版", 0, 0));
            itemGroup.Find(x => x.GroupName == "按版本").DataList.Add(new NewAccountItem("高级版", 0, 0));

            itemGroup.Find(x => x.GroupName == "按营业额").DataList.Add(new NewAccountItem("<1万", 0, 0));
            itemGroup.Find(x => x.GroupName == "按营业额").DataList.Add(new NewAccountItem("1-5万", 0, 0));
            itemGroup.Find(x => x.GroupName == "按营业额").DataList.Add(new NewAccountItem("5-10万", 0, 0));
            itemGroup.Find(x => x.GroupName == "按营业额").DataList.Add(new NewAccountItem("10-30万", 0, 0));
            itemGroup.Find(x => x.GroupName == "按营业额").DataList.Add(new NewAccountItem(">30万", 0, 0));

            itemGroup.Find(x => x.GroupName == "按新老用户").DataList.Add(new NewAccountItem("新用户", 0, 0));
            itemGroup.Find(x => x.GroupName == "按新老用户").DataList.Add(new NewAccountItem("老用户", 0, 0));

            group.DataList = itemGroup;

            //如果传入的时间参数不为null则默认初始化登录数据
            if (stDate != null && edDate != null)
            {
                DateTime st = Convert.ToDateTime(stDate);
                DateTime ed = Convert.ToDateTime(edDate);

                DateTime lst = Convert.ToDateTime(lstDate);
                DateTime led = Convert.ToDateTime(ledDate);

                //本周期登录的分组用户需要持久化 在获取均值的时候作为分母
                DateTime tedDate             = ControlHelper.GetEndDate(ed);
                List <NewAccountItem> tModel = OperationReportBLL.GetDimensionLogin(st, tedDate);

                DateTime ltedDate            = ControlHelper.GetEndDate(led);
                List <NewAccountItem> lModel = OperationReportBLL.GetDimensionLogin(lst, ltedDate);

                return(GetGroupModel(tModel, lModel, group));
            }

            return(group);
        }
Esempio n. 2
0
        /// <summary>
        /// 获取留存报表
        /// </summary>
        /// <param name="stDate"></param>
        /// <param name="edDate"></param>
        /// <param name="lstDate"></param>
        /// <param name="ledDate"></param>
        /// <returns></returns>
        public static List <UgcGroup> GetRetentionModel(DateTime stDate, DateTime edDate, DateTime lstDate,
                                                        DateTime ledDate)
        {
            List <UgcGroup> list = new List <UgcGroup>();

            //初始化登录分维
            List <ItemGroup> itemGroup = new List <ItemGroup>();

            #region 生成留存头组数据
            //生成通用登录分维组外的字段信息
            ItemGroup logItem = new ItemGroup("日登录数", 1, 1);
            logItem.DataList.Add(new NewAccountItem("日均登录", 0, 0));
            itemGroup.Add(logItem);

            //生成用户登录Model组
            UgcGroup logGroup = GetGeneralUserDimension("用户登录", stDate, edDate, lstDate, ledDate);
            //合并同一条件组的字段信息
            if (itemGroup != null && itemGroup.Count >= 1)
            {
                logGroup = GetMergeGroup(logGroup, itemGroup, null);
            }
            //生成单独数据
            DateTime tedDate             = ControlHelper.GetEndDate(edDate);
            List <NewAccountItem> tModel = OperationReportBLL.GetRetentionData(stDate, tedDate);

            DateTime ltedDate            = ControlHelper.GetEndDate(ledDate);
            List <NewAccountItem> lModel = OperationReportBLL.GetRetentionData(lstDate, ltedDate);

            logGroup = GetGroupModel(tModel, lModel, logGroup);
            list.Add(logGroup);
            #endregion

            #region 生成留存其他数据
            itemGroup.Clear();
            logGroup = new UgcGroup("其他留存数据");

            //表格字段初始化
            itemGroup.Add(new ItemGroup("总登录率", 1, 1, new NewAccountItem("登录率", 0, 0)));
            itemGroup.Add(new ItemGroup("连续登录用户", 1, 1, new NewAccountItem("连续登录", 0, 0)));
            itemGroup.Add(new ItemGroup("净新增活忠", 1, 1, new NewAccountItem("新增活忠", 0, 0)));
            itemGroup.Add(new ItemGroup("流失活忠", 1, 1, new NewAccountItem("流失活忠", 0, 0)));
            itemGroup.Add(new ItemGroup("流失回流数", 1, 1, new NewAccountItem("流失回流", 0, 0)));
            itemGroup.Add(new ItemGroup("只移动端登录", 1, 1, new NewAccountItem("仅移动端登录", 0, 0)));
            itemGroup.Add(new ItemGroup("只电脑端登录", 1, 1, new NewAccountItem("仅电脑端登录", 0, 0)));
            itemGroup.Add(new ItemGroup("全端用户", 1, 1, new NewAccountItem("全端登录", 0, 0)));
            logGroup.DataList = itemGroup;

            list.Add(GetGroupModel(tModel, lModel, logGroup));

            #endregion


            return(list);
        }
Esempio n. 3
0
        /// <summary>
        /// 获取收入报表
        /// </summary>
        /// <param name="stDate"></param>
        /// <param name="edDate"></param>
        /// <param name="lstDate"></param>
        /// <param name="ledDate"></param>
        /// <returns></returns>
        public static List <UgcGroup> GetIncomeModel(DateTime stDate, DateTime edDate, DateTime lstDate, DateTime ledDate)
        {
            //时间归一化
            DateTime tedDate  = ControlHelper.GetEndDate(edDate);
            DateTime ltedDate = ControlHelper.GetEndDate(ledDate);

            //返回数据组
            List <UgcGroup> list = new List <UgcGroup>();

            #region 生成收入数据
            List <ItemGroup> itemGroupshowCase = new List <ItemGroup>();//组前置行
            UgcGroup         incomeGroup       = new UgcGroup("付费信息");

            //获取订单信息
            Dictionary <string, decimal> tDic = GetOrderInfo(stDate, tedDate);
            Dictionary <string, decimal> lDic = GetOrderInfo(lstDate, ltedDate);

            //表格字段初始化
            itemGroupshowCase.Add(new ItemGroup("总销售额", 1, 1, new NewAccountItem("总订单", tDic["总订单"], lDic["总订单"], ControlHelper.GetFixDecimalStr(tDic["总订单"], lDic["总订单"]))));
            itemGroupshowCase.Add(new ItemGroup("Saas服务", 1, 1, new NewAccountItem("Saas服务", tDic["Saas服务"], lDic["Saas服务"], ControlHelper.GetFixDecimalStr(tDic["Saas服务"], lDic["Saas服务"]))));
            itemGroupshowCase.Add(new ItemGroup("短信", 1, 1, new NewAccountItem("短信", tDic["短信"], lDic["短信"], ControlHelper.GetFixDecimalStr(tDic["短信"], lDic["短信"]))));
            itemGroupshowCase.Add(new ItemGroup("话费", 1, 1, new NewAccountItem("话费", tDic["话费"], lDic["话费"], ControlHelper.GetFixDecimalStr(tDic["话费"], lDic["话费"]))));
            itemGroupshowCase.Add(new ItemGroup("硬件", 1, 1, new NewAccountItem("硬件", tDic["硬件"], lDic["硬件"], ControlHelper.GetFixDecimalStr(tDic["硬件"], lDic["硬件"]))));

            itemGroupshowCase.Add(new ItemGroup("总销售笔数", 1, 1, new NewAccountItem("总订单笔数", tDic["总订单笔数"], lDic["总订单笔数"], ControlHelper.GetFixDecimalStr(tDic["总订单笔数"], lDic["总订单笔数"]))));
            itemGroupshowCase.Add(new ItemGroup("Saas服务笔数", 1, 1, new NewAccountItem("Saas服务笔数", tDic["Saas服务笔数"], lDic["Saas服务笔数"], ControlHelper.GetFixDecimalStr(tDic["Saas服务笔数"], lDic["Saas服务笔数"]))));
            itemGroupshowCase.Add(new ItemGroup("短信笔数", 1, 1, new NewAccountItem("短信笔数", tDic["短信笔数"], lDic["短信笔数"], ControlHelper.GetFixDecimalStr(tDic["短信笔数"], lDic["短信笔数"]))));
            itemGroupshowCase.Add(new ItemGroup("话费笔数", 1, 1, new NewAccountItem("话费笔数", tDic["话费笔数"], lDic["话费笔数"], ControlHelper.GetFixDecimalStr(tDic["话费笔数"], lDic["话费笔数"]))));
            itemGroupshowCase.Add(new ItemGroup("硬件笔数", 1, 1, new NewAccountItem("硬件笔数", tDic["硬件笔数"], lDic["硬件笔数"], ControlHelper.GetFixDecimalStr(tDic["硬件笔数"], lDic["硬件笔数"]))));

            itemGroupshowCase.Add(new ItemGroup("现金券", 1, 1, new NewAccountItem("使用现金券金额", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("抵现", 1, 1, new NewAccountItem("抵现金额", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("发出现金券", 1, 1, new NewAccountItem("发出现金券", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("使用现金券", 1, 1, new NewAccountItem("使用现金券", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("现金券使用率", 1, 1, new NewAccountItem("现金券使用率", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("付费用户数", 1, 1, new NewAccountItem("付费用户数", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("付费用户续约率", 1, 1, new NewAccountItem("付费用户续约率", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("高付费用户续约率", 1, 1, new NewAccountItem("高付费用户续约率", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("活忠用户平均收入", 1, 1, new NewAccountItem("活忠用户平均收入", 0, 0)));

            incomeGroup.DataList = itemGroupshowCase;

            //生成分维数据并处理均值
            List <NewAccountItem> tIncomeModel = OperationReportBLL.GetIncomePart(stDate, tedDate);
            List <NewAccountItem> lIncomeModel = OperationReportBLL.GetIncomePart(lstDate, ltedDate);
            list.Add(GetGroupModel(tIncomeModel, lIncomeModel, incomeGroup));

            #endregion


            return(list);
        }
Esempio n. 4
0
        /// <summary>
        /// 分维数据的均值处理
        /// </summary>
        /// <param name="log"></param>
        /// <param name="data"></param>
        /// <param name="tAllLog"></param>
        /// <param name="lAllLog"></param>
        /// <returns></returns>
        public static UgcGroup LogAvgProcess(UgcGroup log, UgcGroup data, int tAllLog = 0, int lAllLog = 0)
        {
            if (data != null && data.DataList != null && data.DataList.Count > 0)
            {
                foreach (var item in data.DataList)
                {
                    foreach (var lItem in item.DataList)
                    {
                        if (lItem.SourceName.Contains("日均"))
                        {
                            lItem.ThisWeekVal =
                                tAllLog == 0?0: Math.Round(lItem.ThisWeekVal / tAllLog, 2);
                            lItem.LastWeekVal =
                                lAllLog == 0 ? 0 : Math.Round(lItem.LastWeekVal / lAllLog, 2);
                            lItem.Percent =
                                lItem.LastWeekVal == 0
                                        ? "-"
                                        : (Convert.ToDecimal(lItem.ThisWeekVal - lItem.LastWeekVal) * 100 / lItem.LastWeekVal).ToString("F2") +
                                "%";
                        }

                        if (log.DataList.Exists(x => x.DataList.Exists(y => y.SourceName == lItem.SourceName)))
                        {
                            var v1Data = log.DataList.Find(x => x.DataList.Exists(y => y.SourceName == lItem.SourceName));
                            var v2Data = v1Data.DataList.Find(x => x.SourceName == lItem.SourceName);

                            lItem.ThisWeekVal =
                                v2Data.ThisWeekVal == 0 ? 0 : Math.Round(lItem.ThisWeekVal / v2Data.ThisWeekVal, 2);
                            lItem.LastWeekVal =
                                v2Data.LastWeekVal == 0 ? 0 : Math.Round(lItem.LastWeekVal / v2Data.LastWeekVal, 2);

                            lItem.Percent =
                                lItem.LastWeekVal == 0
                                        ? "-"
                                        : (Convert.ToDecimal(lItem.ThisWeekVal - lItem.LastWeekVal) * 100 / lItem.LastWeekVal).ToString("F2") +
                                "%";
                        }
                    }
                }
            }

            return(data);
        }
Esempio n. 5
0
        /// <summary>
        /// 拼装通用返回列表字段
        /// </summary>
        /// <param name="logGroup"></param>
        /// <param name="otherGroup"></param>
        /// <param name="afterGroup"></param>
        /// <returns></returns>
        public static UgcGroup GetMergeGroup(UgcGroup logGroup, List <ItemGroup> otherGroup, List <ItemGroup> afterGroup)
        {
            UgcGroup         group     = new UgcGroup();
            List <ItemGroup> itemGroup = new List <ItemGroup>();

            if (otherGroup != null && otherGroup.Count >= 0)
            {
                foreach (var item in otherGroup)
                {
                    itemGroup.Add(item);
                }
            }

            itemGroup.AddRange(logGroup.DataList);

            if (afterGroup != null && afterGroup.Count >= 0)
            {
                itemGroup.AddRange(afterGroup);
            }

            group.DataList = itemGroup;

            return(group);
        }
Esempio n. 6
0
        /// <summary>
        /// 生成条件组对比数据的通用输出
        /// </summary>
        /// <param name="tList"></param>
        /// <param name="lList"></param>
        /// <param name="emptyGroup"></param>
        /// <returns></returns>
        public static UgcGroup GetGroupModel(List <NewAccountItem> tList, List <NewAccountItem> lList, UgcGroup emptyGroup)
        {
            if (tList != null && lList != null && emptyGroup != null)
            {
                foreach (var item in tList)
                {
                    foreach (var lItem in lList)
                    {
                        if (lItem.SourceName == item.SourceName)
                        {
                            item.LastWeekVal = lItem.ThisWeekVal;
                        }
                    }
                }

                foreach (var item in tList)
                {
                    foreach (var gItem in emptyGroup.DataList)
                    {
                        //如果列表中存在
                        try
                        {
                            if (gItem.DataList.Find(x => x.SourceName == item.SourceName) != null)
                            {
                                gItem.DataList.Find(x => x.SourceName == item.SourceName).ThisWeekVal += item.ThisWeekVal;
                                gItem.DataList.Find(x => x.SourceName == item.SourceName).LastWeekVal += item.LastWeekVal;
                                gItem.DataList.Find(x => x.SourceName == item.SourceName).Percent      =
                                    item.LastWeekVal == 0
                                        ? "-"
                                        : (Convert.ToDecimal(item.ThisWeekVal - item.LastWeekVal) * 100 / item.LastWeekVal).ToString("F2") +
                                    "%";
                            }
                            //else if(gItem.DataList.Exists(x => x.ThisWeekVal!=0)&& gItem.DataList.Exists(x => x.LastWeekVal != 0))
                            //{
                            //    gItem.DataList.Find(x => x.ThisWeekVal != 0).Percent =
                            //        item.LastWeekVal == 0
                            //            ? "-"
                            //            : (Convert.ToDecimal(item.ThisWeekVal - item.LastWeekVal) * 100 / item.LastWeekVal).ToString("F2") +
                            //              "%";
                            //}
                        }
                        catch (Exception ex)
                        {
                            Logger.Error("运营分析报表通用维度遍历出错!", ex);
                            continue;
                        }
                    }
                }

                return(emptyGroup);
            }
            else
            {
                Logger.Warn("生成条件对比组的输入数据存在空数据!");
                return(null);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 获取促活报表
        /// </summary>
        /// <param name="stDate"></param>
        /// <param name="edDate"></param>
        /// <param name="lstDate"></param>
        /// <param name="ledDate"></param>
        /// <returns></returns>
        public static List <UgcGroup> GetAvgDateModel(DateTime stDate, DateTime edDate, DateTime lstDate, DateTime ledDate)
        {
            //生成用户登录Model组,用于切分多维用户UGC均值
            UgcGroup logGroup = GetGeneralUserDimension("用户登录", stDate, edDate, lstDate, ledDate);
            //时间归一化
            DateTime tedDate  = ControlHelper.GetEndDate(edDate);
            DateTime ltedDate = ControlHelper.GetEndDate(ledDate);

            int tAllLog = OperationReportBLL.GetIndependLog(stDate, tedDate);
            int lAllLog = OperationReportBLL.GetIndependLog(lstDate, ltedDate);

            //返回数据组
            List <UgcGroup> list = new List <UgcGroup>();


            #region 销售数据
            //生成头数据
            UgcGroup saleGroup = GetGeneralUserDimension("收银记账");          //组中置分维条件

            List <ItemGroup> itemGroupSaleBefore = new List <ItemGroup>(); //组前置行
            itemGroupSaleBefore.Add(new ItemGroup("登录用户日销售笔数", 1, 1, new NewAccountItem("登录日均销售", 0, 0)));

            List <ItemGroup> itemGroupSaleAfter = new List <ItemGroup>();//组后置行
            itemGroupSaleAfter.Add(new ItemGroup("录入销售店铺数", 1, 1, new NewAccountItem("销售独立店铺", 0, 0)));
            itemGroupSaleAfter.Add(new ItemGroup("补录销售笔数", 1, 1, new NewAccountItem("补录笔数", 0, 0)));
            itemGroupSaleAfter.Add(new ItemGroup("补录销售店铺数", 1, 1, new NewAccountItem("补录店铺数", 0, 0)));
            itemGroupSaleAfter.Add(new ItemGroup("挂单笔数", 1, 1, new NewAccountItem("挂单笔数", 0, 0)));

            //生成完整组
            if (itemGroupSaleBefore != null && itemGroupSaleBefore.Count >= 1)
            {
                saleGroup = GetMergeGroup(saleGroup, itemGroupSaleBefore, itemGroupSaleAfter);
            }

            //生成分维数据并处理均值
            List <NewAccountItem> tSaleModel = OperationReportBLL.GetSalePart(stDate, tedDate);
            List <NewAccountItem> lSaleModel = OperationReportBLL.GetSalePart(lstDate, ltedDate);

            saleGroup = GetGroupModel(tSaleModel, lSaleModel, saleGroup);

            //均值处理(总值有“日均”关键字过滤)
            saleGroup = LogAvgProcess(logGroup, saleGroup, tAllLog, lAllLog);

            list.Add(saleGroup);
            #endregion


            #region 商品数据
            //生成头数据
            UgcGroup goodsGroup = GetGeneralUserDimension("商品管理");          //组中置分维条件

            List <ItemGroup> itemGroupgoodsBefore = new List <ItemGroup>(); //组前置行
            itemGroupgoodsBefore.Add(new ItemGroup("登录用户日新增商品", 1, 1, new NewAccountItem("登录日均商品", 0, 0)));

            List <ItemGroup> itemGroupgoodsAfter = new List <ItemGroup>();//组后置行
            itemGroupgoodsAfter.Add(new ItemGroup("录入商品店铺数", 1, 1, new NewAccountItem("商品录入独立店铺", 0, 0)));

            //生成完整组
            if (itemGroupgoodsBefore != null && itemGroupgoodsBefore.Count >= 1)
            {
                goodsGroup = GetMergeGroup(goodsGroup, itemGroupgoodsBefore, itemGroupgoodsAfter);
            }

            //生成分维数据并处理均值
            List <NewAccountItem> tGoodsModel = OperationReportBLL.GetGoodsPart(stDate, tedDate);
            List <NewAccountItem> lGoodsModel = OperationReportBLL.GetGoodsPart(lstDate, ltedDate);

            goodsGroup = GetGroupModel(tGoodsModel, lGoodsModel, goodsGroup);

            //均值处理(总值有“日均”关键字过滤)
            goodsGroup = LogAvgProcess(logGroup, goodsGroup, tAllLog, lAllLog);

            list.Add(goodsGroup);
            #endregion


            #region 会员数据
            //生成头数据
            UgcGroup userGroup = GetGeneralUserDimension("会员管理");          //组中置分维条件

            List <ItemGroup> itemGroupUserBefore = new List <ItemGroup>(); //组前置行
            itemGroupUserBefore.Add(new ItemGroup("登录用户日新增会员", 1, 1, new NewAccountItem("登录日均会员", 0, 0)));

            List <ItemGroup> itemGroupUserAfter = new List <ItemGroup>();//组后置行
            itemGroupUserAfter.Add(new ItemGroup("录入会员店铺数", 1, 1, new NewAccountItem("会员录入独立店铺", 0, 0)));

            //生成完整组
            if (itemGroupUserBefore != null && itemGroupUserBefore.Count >= 1)
            {
                userGroup = GetMergeGroup(userGroup, itemGroupUserBefore, itemGroupUserAfter);
            }

            //生成分维数据并处理均值
            List <NewAccountItem> tUserModel = OperationReportBLL.GetUserPart(stDate, tedDate);
            List <NewAccountItem> lUserModel = OperationReportBLL.GetUserPart(lstDate, ltedDate);

            userGroup = GetGroupModel(tUserModel, lUserModel, userGroup);

            //均值处理(总值有“日均”关键字过滤)
            userGroup = LogAvgProcess(logGroup, userGroup, tAllLog, lAllLog);

            list.Add(userGroup);
            #endregion


            #region 支出数据
            //生成头数据
            UgcGroup payGroup = GetGeneralUserDimension("支出管理");          //组中置分维条件

            List <ItemGroup> itemGroupPayBefore = new List <ItemGroup>(); //组前置行
            itemGroupPayBefore.Add(new ItemGroup("登录用户日新增支出", 1, 1, new NewAccountItem("登录日均支出", 0, 0)));

            List <ItemGroup> itemGroupPayAfter = new List <ItemGroup>();//组后置行
            itemGroupPayAfter.Add(new ItemGroup("录入支出店铺数", 1, 1, new NewAccountItem("支出录入独立店铺", 0, 0)));

            //生成完整组
            if (itemGroupPayBefore != null && itemGroupPayBefore.Count >= 1)
            {
                payGroup = GetMergeGroup(payGroup, itemGroupPayBefore, itemGroupPayAfter);
            }

            //生成分维数据并处理均值
            List <NewAccountItem> tPayModel = OperationReportBLL.GetPayPart(stDate, tedDate);
            List <NewAccountItem> lPayModel = OperationReportBLL.GetPayPart(lstDate, ltedDate);

            payGroup = GetGroupModel(tPayModel, lPayModel, payGroup);

            //均值处理(总值有“日均”关键字过滤)
            payGroup = LogAvgProcess(logGroup, payGroup, tAllLog, lAllLog);

            list.Add(payGroup);
            #endregion


            #region 短信数据
            //生成头数据
            UgcGroup smsGroup = GetGeneralUserDimension("短信发送");          //组中置分维条件

            List <ItemGroup> itemGroupSmsBefore = new List <ItemGroup>(); //组前置行
            itemGroupSmsBefore.Add(new ItemGroup("登录用户日短信数", 1, 1, new NewAccountItem("登录日均短信数", 0, 0)));

            List <ItemGroup> itemGroupSmsAfter = new List <ItemGroup>();//组后置行
            itemGroupSmsAfter.Add(new ItemGroup("发送短信店铺数", 1, 1, new NewAccountItem("发送短信独立店铺", 0, 0)));
            itemGroupSmsAfter.Add(new ItemGroup("营销短信数", 1, 1, new NewAccountItem("营销短信", 0, 0)));
            itemGroupSmsAfter.Add(new ItemGroup("维客短信数", 1, 1, new NewAccountItem("维客短信", 0, 0)));

            //生成完整组
            if (itemGroupSmsBefore != null && itemGroupSmsBefore.Count >= 1)
            {
                smsGroup = GetMergeGroup(smsGroup, itemGroupSmsBefore, itemGroupSmsAfter);
            }

            //生成分维数据并处理均值
            List <NewAccountItem> tSmsModel = OperationReportBLL.GetSmsPart(stDate, tedDate);
            List <NewAccountItem> lSmsModel = OperationReportBLL.GetSmsPart(lstDate, ltedDate);

            smsGroup = GetGroupModel(tSmsModel, lSmsModel, smsGroup);

            //均值处理(总值有“日均”关键字过滤)
            smsGroup = LogAvgProcess(logGroup, smsGroup, tAllLog, lAllLog);

            list.Add(smsGroup);
            #endregion

            #region 生成留存其他数据
            List <ItemGroup> itemGroupshowCase = new List <ItemGroup>();//组前置行
            UgcGroup         showCaseGroup     = new UgcGroup("手机橱窗");

            //表格字段初始化
            itemGroupshowCase.Add(new ItemGroup("手机橱窗浏览数", 1, 1, new NewAccountItem("pv", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("手机橱窗访客数", 1, 1, new NewAccountItem("uv", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("手机橱窗展示商品数", 1, 1, new NewAccountItem("日均新增商品", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("手机橱窗订单数", 1, 1, new NewAccountItem("手机橱窗订单", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("手机橱窗支付数", 1, 1, new NewAccountItem("手机橱窗支付", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("手机橱窗交易金额", 1, 1, new NewAccountItem("周期内交易金额", 0, 0)));
            itemGroupshowCase.Add(new ItemGroup("在版手机橱窗套餐用户数", 1, 1, new NewAccountItem("在版用户", 0, 0)));

            showCaseGroup.DataList = itemGroupshowCase;

            //生成分维数据并处理均值
            List <NewAccountItem> tShowModel = OperationReportBLL.GetShowPart(stDate, tedDate);
            List <NewAccountItem> lShowModel = OperationReportBLL.GetShowPart(lstDate, ltedDate);
            list.Add(GetGroupModel(tShowModel, lShowModel, showCaseGroup));

            #endregion


            return(list);
        }