예제 #1
0
        /// <summary>
        /// 获取地推下渠道发展C类用户
        /// </summary>
        /// <param name="timeType"></param>
        /// <returns></returns>
        public async Task <BDtoCuserResultList> GetBDtoCuserList(string timeType)
        {
            BDtoCuserList data = null;

            //BDtoCuserResult temps = null;
            BDtoCuserResultList result = new BDtoCuserResultList
            {
                list = new List <BDtoCuserResult>()
            };
            string startTime = string.Empty;
            string endTime   = string.Empty;

            string[] times  = null;
            string[] nums   = null;
            string   names  = null;
            int      counts = 0;

            #region new
            switch (timeType)
            {
            /**
             * 处理开始时间和和结束时间。
             * addDays(+1)为between不包含结束当天数据,
             * */
            case "1":
            {
                startTime = DateTime.Now.AddDays(-6).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");

                times  = new string[7];
                nums   = new string[7];
                counts = 7;
                //names = new string[7];
                for (int i = 0; i < 7; i++)
                {
                    times[i] = DateTime.Now.AddDays(+(i - 6)).ToString("yyyy-MM-dd");

                    nums[i] = "0";
                    //names[i] = "";
                }
            }
            break;

            case "2":
            {
                startTime = DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                times     = new string[30];
                nums      = new string[30];
                counts    = 30;
                //names = new string[30];
                for (int i = 0; i < 30; i++)
                {
                    times[i] = DateTime.Now.AddDays(+(i - 29)).ToString("yyyy-MM-dd");
                    nums[i]  = "0";
                    //names[i] = "";
                }
            }
            break;

            case "3":
            {
                startTime = DateTime.Now.AddDays(-89).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                int days = DateTimeExtensions.DateDiff() + 1;
                times  = new string[90];
                nums   = new string[90];
                counts = 90;
                //names = new string[90];
                for (int i = 0; i < 90; i++)
                {
                    times[i] = DateTime.Now.AddDays(+(i - 89)).ToString("yyyy-MM-dd");
                    nums[i]  = "0";
                    //names[i] = "";
                }
            }
            break;

            default:
                break;
            }
            result.date = times;
            //时间
            for (int i = 0; i < times.Length; i++)
            {
                try
                {
                    result.date[i] = Convert.ToDateTime(times[i]).ToString("MM-dd");
                }
                catch { }
            }


            data = await BDtoCuserDal.Instance.GetBDtoCuserList(startTime, endTime);

            BDtoCuserList namelist1 = await BDtoCuserDal.Instance.GetBDtoCuserNameList();

            #region 将BD名称写入
            var namelist = namelist1.list.Select(c => c.name).Distinct().ToList();


            foreach (var item in namelist)
            {
                nums  = new string[counts];
                times = new string[counts];
                for (int i = 0; i < counts; i++)
                {
                    nums[i]  = "0";
                    times[i] = DateTime.Now.AddDays(+(i - (counts - 1))).ToString("yyyy-MM-dd");
                }
                if (item == null || item == "")
                {
                    names = "匿名";
                }
                else
                {
                    names = item.ToString();
                }

                //根据名字写入数量
                List <BDtoCuserEntity> numlist = data.list.Where(c => c.name == item).ToList();

                foreach (var items in numlist)
                {
                    if (((IList)times).Contains(items.dates)) //判断那天有数据。
                    {
                        //data中数据插入到数组中。
                        nums[times.ToList().IndexOf(items.dates)] = items.num;
                    }
                }
                var temps = new BDtoCuserResult
                {
                    name = names,
                    data = nums
                };

                result.list.Add(temps);
            }
            #endregion
            #endregion
            return(result);
        }
예제 #2
0
        /// <summary>
        /// 获取某时间段每天的销售额。
        /// </summary>
        /// <param name="timeType">1:自然周,2:自然月,3:季度</param>
        /// <returns></returns>
        public async Task <SaleroomResult> GetSaleroomAsync(string timeType)
        {
            SaleroomList   data      = null;
            SaleroomResult result    = new SaleroomResult();
            string         startTime = string.Empty;
            string         endTime   = string.Empty;

            string[] times  = null;
            string[] limits = null;
            switch (timeType)
            {
            case "1":
            {
                //DateTimeExtensions.GetMondayDate().ToString("yyyy-MM-dd");
                // DateTimeExtensions.GetSundayDate().AddDays(+1).ToString("yyyy-MM-dd");
                // DateTimeExtensions.GetMondayDate().AddDays(+i).ToString("yyyy-MM-dd");
                startTime = DateTime.Now.AddDays(-6).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");

                times  = new string[7];
                limits = new string[7];
                for (int i = 0; i < 7; i++)
                {
                    times[i] = DateTime.Now.AddDays(+(i - 6)).ToString("yyyy-MM-dd");


                    limits[i] = "0.00";
                }
            }
            break;

            case "2":
            {
                //DateTimeExtensions.FirstDayOfMonth().ToString("yyyy-MM-dd");
                //DateTimeExtensions.LastDayOfMonth().AddDays(+1).ToString("yyyy-MM-dd");
                //DateTimeExtensions.FirstDayOfMonth().AddDays(+i).ToString("yyyy-MM-dd");
                startTime = DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                times     = new string[30];
                limits    = new string[30];
                for (int i = 0; i < 30; i++)
                {
                    times[i]  = DateTime.Now.AddDays(+(i - 29)).ToString("yyyy-MM-dd");
                    limits[i] = "0.00";
                }
            }
            break;

            case "3":
            {
                //startTime = DateTimeExtensions.ToFirstDayOfSeason().ToString("yyyy-MM-dd");
                //endTime = DateTimeExtensions.ToLastDayOfSeason().AddDays(+1).ToString("yyyy-MM-dd");
                // times[i] = DateTimeExtensions.ToFirstDayOfSeason().AddDays(+i).ToString("yyyy-MM-dd");
                startTime = DateTime.Now.AddDays(-89).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                int days = DateTimeExtensions.DateDiff() + 1;
                times  = new string[90];
                limits = new string[90];
                for (int i = 0; i < 90; i++)
                {
                    times[i]  = DateTime.Now.AddDays(+(i - 89)).ToString("yyyy-MM-dd");
                    limits[i] = "0.00";
                }
            }
            break;

            default:
                break;
            }
            data = await LeadDataDataAccess.Instance.GetSaleroomAsync(startTime, endTime);

            foreach (var item in data.Lists)
            {
                if (((IList)times).Contains(item.Date))                 //判断那天有数据。
                {
                    //data中数据插入到数组中。
                    limits[times.ToList().IndexOf(item.Date)] = item.Limit;
                }
            }
            for (int i = 0; i < times.Length; i++)
            {
                try
                {
                    times[i] = Convert.ToDateTime(times[i]).ToString("MM-dd");
                }
                catch { }
            }
            result.date  = times;
            result.limit = limits;
            return(result);
        }
예제 #3
0
        /// <summary>
        /// bd经理
        /// </summary>
        /// <param name="userid">操作人id</param>
        /// <param name="stype">1:销售额,2:渠道数,3:拉新用户数</param>
        /// <param name="timeType">1:7,2:30,3:90</param>
        /// <param name="infoTimeType">1:自然周,2:自然月,3:季度,4:天</param>
        /// <param name="time">当前显示时间</param>
        /// <param name="upAndDown">0:当前,1:向上,2:向下</param>
        public async Task <BDLeader> GetBdInfo(int userid, int stype, string timeType, string infoTimeType, DateTime time, string upAndDown)
        {
            BDLeader bDLeader = new BDLeader();

            bDLeader.lineData = new BDLeaderLineResult();
            IList <BDLeaderEntity> list = await AccountProfitDAL.Instance.GetBdInfo(userid, stype);

            string startTime     = string.Empty;
            string endTime       = string.Empty;
            string lastStartTime = string.Empty;         //对比数据开始时间
            string lastEndTime   = string.Empty;         //对比数据结束时间
            string retStartTime  = string.Empty;         //返回的开始时间
            string retEndTime    = string.Empty;         //返回的结束时间
            String retQuarter    = string.Empty;

            string[] times  = null;
            string[] limits = null;
            #region 空数据构建
            switch (timeType)
            {
            case "1":
            {
                startTime = DateTime.Now.AddDays(-6).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");

                times  = new string[7];
                limits = new string[7];
                for (int i = 0; i < 7; i++)
                {
                    times[i] = DateTime.Now.AddDays(+(i - 6)).ToString("yyyy-MM-dd");


                    limits[i] = "0.00";
                }
            }
            break;

            case "2":
            {
                startTime = DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                times     = new string[30];
                limits    = new string[30];
                for (int i = 0; i < 30; i++)
                {
                    times[i]  = DateTime.Now.AddDays(+(i - 29)).ToString("yyyy-MM-dd");
                    limits[i] = "0.00";
                }
            }
            break;

            case "3":
            {
                startTime = DateTime.Now.AddDays(-89).ToString("yyyy-MM-dd");
                endTime   = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
                int days = DateTimeExtensions.DateDiff() + 1;
                times  = new string[90];
                limits = new string[90];
                for (int i = 0; i < 90; i++)
                {
                    times[i]  = DateTime.Now.AddDays(+(i - 89)).ToString("yyyy-MM-dd");
                    limits[i] = "0.00";
                }
            }
            break;

            default:
                break;
            }
            #endregion
            #region 折线数据处理
            for (int i = 0; i < times.Length; i++)
            {
                //销售额
                if (stype == 1)
                {
                    limits[i] = list.Where(p => p.date < Convert.ToDateTime(times[i])).Sum(p => Convert.ToDecimal(p.limit)).ToString();
                }
                //渠道数和拉新数
                else
                {
                    limits[i] = list.Where(p => p.date < Convert.ToDateTime(times[i])).Count().ToString();
                }
                times[i] = Convert.ToDateTime(times[i]).ToString("MM-dd");
            }
            bDLeader.lineData.date  = times;
            bDLeader.lineData.limit = limits;
            bDLeader.LineStartTime  = times[0];
            bDLeader.LineEndTime    = times[times.Length - 1];
            #endregion
            //数据详情构建
            switch (infoTimeType)
            {
            case "1":
            {
                if (upAndDown == "0")
                {
                    startTime = DateTimeExtensions.GetMondayDate(time).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.GetSundayDate(time).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "1")                                //上
                {
                    startTime = DateTimeExtensions.GetMondayDate(DateTimeExtensions.GetMondayDate(time).AddDays(-1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.GetSundayDate(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "2")                                //下
                {
                    startTime = DateTimeExtensions.GetMondayDate(DateTimeExtensions.GetSundayDate(time).AddDays(+1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.GetSundayDate(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                lastStartTime = DateTimeExtensions.GetMondayDate(DateTime.Parse(startTime).AddDays(-1)).ToString("yyyy-MM-dd");
                lastEndTime   = startTime;
                retStartTime  = startTime;
                retEndTime    = DateTime.Parse(endTime).AddDays(-1).ToString("yyyy-MM-dd");
            }
            break;

            case "2":
            {
                if (upAndDown == "0")
                {
                    startTime = DateTimeExtensions.FirstDayOfMonth(time).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.LastDayOfMonth(time).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "1")                                //上
                {
                    startTime = DateTimeExtensions.FirstDayOfMonth(time.AddMonths(-1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.LastDayOfMonth(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "2")                                //下
                {
                    //计算逻辑错误  比九月下一月应该是十月  十月应该和九月比较
                    startTime = DateTimeExtensions.FirstDayOfMonth(time.AddMonths(+1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.LastDayOfMonth(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                lastStartTime = DateTimeExtensions.FirstDayOfMonth(DateTime.Parse(startTime).AddMonths(-1)).ToString("yyyy-MM-dd");
                lastEndTime   = startTime;
                retStartTime  = DateTime.Parse(lastStartTime).ToString("yyyy-MM");
                retEndTime    = DateTime.Parse(startTime).ToString("yyyy-MM");
            }
            break;

            case "3":
            {
                if (upAndDown == "0")
                {
                    startTime = DateTimeExtensions.TwoToFirstDayOfSeason(time).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.TwoToLastDayOfSeason(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "1")                                //上
                {
                    startTime = DateTimeExtensions.TwoToFirstDayOfSeason(DateTimeExtensions.TwoToFirstDayOfSeason(time).AddDays(-1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.TwoToLastDayOfSeason(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                if (upAndDown == "2")                                //下
                {
                    startTime = DateTimeExtensions.TwoToFirstDayOfSeason(DateTimeExtensions.TwoToLastDayOfSeason(time).AddDays(+1)).ToString("yyyy-MM-dd");
                    endTime   = DateTimeExtensions.TwoToLastDayOfSeason(DateTime.Parse(startTime)).AddDays(+1).ToString("yyyy-MM-dd");
                }
                lastStartTime = DateTimeExtensions.TwoToFirstDayOfSeason(DateTime.Parse(startTime).AddDays(-1)).ToString("yyyy-MM-dd");
                lastEndTime   = startTime;
                retStartTime  = lastStartTime;
                retEndTime    = startTime;
                retQuarter    = DateTimeExtensions.JudgeTimeIsToDiff(DateTime.Parse(startTime));
            }
            break;

            case "4":
            {
                int day = 0;
                if (upAndDown == "0")
                {
                    day = 0;
                }
                if (upAndDown == "1")                                //上
                {
                    day = -1;
                }
                if (upAndDown == "2")                                //下
                {
                    day = 1;
                }
                startTime     = time.AddDays(day).ToString("yyyy-MM-dd");
                endTime       = time.AddDays(+(1 + day)).ToString("yyyy-MM-dd");
                lastStartTime = time.AddDays(-(1 - day)).ToString("yyyy-MM-dd");
                lastEndTime   = time.AddDays(day).ToString("yyyy-MM-dd");
                retStartTime  = lastStartTime;
                retEndTime    = startTime;
            }
            break;

            default:
                break;
            }
            bDLeader.StartTime = retStartTime;
            bDLeader.EndTime   = retEndTime;
            bDLeader.Quarter   = retQuarter;
            IList <BDLeaderEntity> listinfo = await AccountProfitDAL.Instance.GetBdInfo(userid, 4);

            List <BDLeaderInfoResult> bDLeaderInfoResults = new List <BDLeaderInfoResult>();
            foreach (var item in listinfo)
            {
                BDLeaderInfoResult bDLeaderItem = new BDLeaderInfoResult();
                bDLeaderItem.name = item.rname;
                string limit     = string.Empty;
                string climit    = string.Empty;
                bool   issuccess = false;
                //销售额
                if (stype == 1)
                {
                    limit  = list.Where(p => (p.date >= Convert.ToDateTime(startTime)) && (p.date < Convert.ToDateTime(endTime)) && (p.rname == item.rname)).Sum(p => Convert.ToDecimal(p.limit)).ToString();
                    climit = list.Where(p => (p.date >= Convert.ToDateTime(lastStartTime)) && (p.date < Convert.ToDateTime(lastEndTime)) && (p.rname == item.rname)).Sum(p => Convert.ToDecimal(p.limit)).ToString();
                }
                //渠道数和拉新数
                else
                {
                    limit  = list.Where(p => (p.date >= Convert.ToDateTime(startTime)) && (p.date < Convert.ToDateTime(endTime)) && (p.rname == item.rname)).Count().ToString();
                    climit = list.Where(p => (p.date >= Convert.ToDateTime(lastStartTime)) && (p.date < Convert.ToDateTime(lastEndTime)) && (p.rname == item.rname)).Sum(p => Convert.ToDecimal(p.limit)).ToString();
                }
                bDLeaderItem.Sum      = limit;
                bDLeaderItem.SumRate  = Contrast(limit, climit, out issuccess);
                bDLeaderItem.SumTrend = issuccess;
                bDLeaderInfoResults.Add(bDLeaderItem);
            }
            bDLeader.infoData = bDLeaderInfoResults;
            return(bDLeader);
        }