예제 #1
0
        /// <summary>
        /// 得到数据分布图表信息
        /// </summary>
        /// <param name="sKeyValue"></param>
        /// <param name="sClass"></param>
        /// <param name="showDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public static Sys_AreaDate4EchartsMapList GetDataDistributedChart(string sKeyValue, string sClass, DateTime showDate, DateTime endDate, string order)
        {
            Sys_AreaDate4EchartsMapList areaDateMapList = new Sys_AreaDate4EchartsMapList();

            areaDateMapList = Sys_SysAreaData4EchartsBLL.GetAreaDataMap(sKeyValue, sClass, showDate, endDate, order);

            return(areaDateMapList);
        }
        /// <summary>
        /// 获得区域统计数据
        /// </summary>
        /// <param name="areaKey">统计关键值</param>
        /// <param name="sClass">统计类型</param>
        /// <param name="recDate">开始日期</param>
        /// <param name="endDate">截止日期</param>
        /// <param name="sAreaName">省份名称 none-全部</param>
        /// <returns></returns>
        public static Sys_AreaDate4EchartsMapList GetAreaDataMap(string areaKey, string sClass, DateTime recDate, DateTime endDate, string order)
        {
            Sys_SysAreaData4EchartsDAL  dal             = new Sys_SysAreaData4EchartsDAL();
            Sys_AreaDate4EchartsMapList areaDateMapList = new Sys_AreaDate4EchartsMapList();

            areaDateMapList = dal.GetAreaDataMap(areaKey, sClass, recDate, endDate, order);
            if (areaDateMapList.areaDataList != null && areaDateMapList.areaDataList.Count > 0)
            {
            }

            return(areaDateMapList);
        }
예제 #3
0
        /// <summary>
        /// 获得区域统计数据
        /// </summary>
        /// <param name="areaKey">统计关键值</param>
        /// <param name="sClass">统计类型</param>
        /// <param name="recDate">开始日期</param>
        /// <param name="endDate">截止日期</param>
        /// <param name="sAreaName">省份名称 none-全部</param>
        /// <returns></returns>
        public Sys_AreaDate4EchartsMapList GetAreaDataMap(string areaKey, string sClass, DateTime recDate, DateTime endDate, string order)
        {
            Sys_AreaDate4EchartsMapList    AreaDateMapList = new Sys_AreaDate4EchartsMapList();
            List <Sys_AreaData4EchartsMap> AreaDataList    = new List <Sys_AreaData4EchartsMap>();

            if (sClass == "single")
            {
                //按单个日期统计之前所有数据

                string Column   = "recDate, areaID, areaName, regCnt, MemberCnt, saleCnt, payCnt, smsCnt, orderSum, UserActiveCnt, UserLoginCnt, UserSleepCnt, UserLostCnt,prov_name";
                string orderSql = "";

                //判断关键值(排序处理,防止拼接Sql)
                string[] NameList = { "regCnt", "MemberCnt", "saleCnt", "payCnt", "smsCnt", "orderSum", "UserActiveCnt", "UserLoginCnt", "UserSleepCnt", "UserLostCnt", "prov_name" };
                if (NameList.Contains(areaKey))
                {
                    orderSql = (" order by ") + (areaKey) + (" desc;");
                    Column  += "," + areaKey + " keyAreaValue";
                }
                //全国省市
                StringBuilder strSql = new StringBuilder();
                strSql.Append("SELECT ");
                strSql.Append(Column);
                strSql.Append(" FROM Sys_SysAreaData4Echarts ");
                strSql.Append(" where datediff(day,recDate,@recDate)=0");
                strSql.Append(orderSql);
                AreaDataList = DapperHelper.Query <Sys_AreaData4EchartsMap>(strSql.ToString(), new { recDate = recDate }).ToList();
            }
            else
            {
                //按日期区间范围统计新增数据
                StringBuilder strSql = new StringBuilder();


                string Column   = "areaID,areaName, sum(regCnt) as regCnt, sum(MemberCnt) as MemberCnt,sum(saleCnt) as saleCnt,sum(payCnt) as payCnt,sum(smsCnt) as smsCnt,sum(orderSum) as orderSum,sum(UserActiveCnt) as UserActiveCnt,sum(UserLoginCnt) as UserLoginCnt,sum(UserSleepCnt) as UserSleepCnt,sum(UserLostCnt) as UserLostCnt,'' prov_name";
                string orderSql = "";

                //判断关键值(排序处理,防止拼接Sql)
                string[] NameList = { "regCnt", "MemberCnt", "saleCnt", "payCnt", "smsCnt", "orderSum", "UserActiveCnt", "UserLoginCnt", "UserSleepCnt", "UserLostCnt", "prov_name" };
                if (NameList.Contains(areaKey))
                {
                    orderSql = (" order by ") + (areaKey) + (" desc ");
                    if (areaKey != "prov_name")
                    {
                        Column += ",sum(" + areaKey + ") keyAreaValue";
                    }
                    else
                    {
                        Column += ",0 keyAreaValue";
                    }
                }


                strSql.Append("SELECT ");
                strSql.Append(Column);
                strSql.Append(" into #temp");
                strSql.Append(" FROM Sys_SysAreaData4Echarts ");
                strSql.Append(" where recDate>@bgDate and recDate<@edDate group by areaName,areaID ");
                strSql.Append(orderSql + ";");
                strSql.Append("  alter table #temp alter column prov_name varchar(100); ");
                strSql.Append(" update #temp set prov_name=(select top 1 prov_name from Sys_SysAreaData4Echarts where #temp.areaID=Sys_SysAreaData4Echarts.areaID order by id desc); ");
                strSql.Append(" select * from #temp; ");
                strSql.Append(" drop table #temp; ");

                AreaDataList = DapperHelper.Query <Sys_AreaData4EchartsMap>(strSql.ToString(), new { bgDate = recDate, edDate = endDate.Date.Add(new TimeSpan(23, 59, 59)) }).ToList();
            }

            if (AreaDataList != null && AreaDataList.Count() > 0)
            {
                decimal maxValue = 0;   //最大值

                Dictionary <string, int>    city     = getHash();
                Dictionary <int, string>    province = getProvince();
                Dictionary <string, string> relation = new Dictionary <string, string>();

                foreach (var item in city)
                {
                    foreach (var prov in province)
                    {
                        if (item.Value == prov.Key)
                        {
                            relation.Add(item.Key, prov.Value);
                        }
                    }
                }

                foreach (var item in province)
                {
                    Sys_AreaData4EchartsMap AtraData = new Sys_AreaData4EchartsMap();
                    AtraData.areaName     = item.Value;
                    AtraData.keyAreaValue = 0;
                    AtraData.prov_name    = "prov";
                    AreaDataList.Add(AtraData);
                }

                //bool exist = false;

                foreach (var data in AreaDataList)
                {
                    if (relation.ContainsKey(data.areaName))
                    {
                        //exist = true;
                        foreach (var prov in AreaDataList)
                        {
                            if (prov.areaName == relation[data.areaName])
                            {
                                prov.keyAreaValue  += data.keyAreaValue;
                                prov.MemberCnt     += data.MemberCnt;
                                prov.orderSum      += data.orderSum;
                                prov.payCnt        += data.payCnt;
                                prov.regCnt        += data.regCnt;
                                prov.saleCnt       += data.saleCnt;
                                prov.smsCnt        += data.smsCnt;
                                prov.UserActiveCnt += data.UserActiveCnt;
                                prov.UserLoginCnt  += data.UserLoginCnt;
                                prov.UserLostCnt   += data.UserLostCnt;
                                prov.UserSleepCnt  += data.UserSleepCnt;
                            }
                        }
                    }
                }

                AreaDateMapList.areaDataList = AreaDataList;
                AreaDateMapList.areaCount    = AreaDataList.Count;

                decimal minValue = AreaDataList[0].keyAreaValue;

                foreach (Sys_AreaData4EchartsMap AtraData in AreaDataList)
                {
                    //检测最大值
                    if (AtraData.keyAreaValue > 0)
                    {
                        if (Convert.ToDecimal(AtraData.keyAreaValue) > maxValue)
                        {
                            if (AtraData.areaName.IndexOf("其他") < 0)
                            {
                                maxValue = Convert.ToDecimal(AtraData.keyAreaValue);
                            }
                        }
                    }
                    if (AtraData.keyAreaValue > 0)
                    {
                        if (Convert.ToDecimal(AtraData.keyAreaValue) < minValue)
                        {
                            if (AtraData.areaName.IndexOf("其他") < 0)
                            {
                                minValue = Convert.ToDecimal(AtraData.keyAreaValue);
                            }
                        }
                    }
                }
                AreaDateMapList.areaMaxValue = maxValue;
                AreaDateMapList.areaMinValue = minValue;
            }

            //if (order != "")
            //{
            //    switch (order)
            //    {
            //        case "regNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.regCnt);
            //            break;
            //        case "usrNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.MemberCnt);
            //            break;
            //        case "saleNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.saleCnt);
            //            break;
            //        case "orderNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.orderSum);
            //            break;
            //        case "actNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.UserActiveCnt);
            //            break;
            //        case "logNum":
            //            AreaDateMapList.areaDataList.OrderByDescending(x => x.UserLoginCnt);
            //            break;
            //    }

            //}

            return(AreaDateMapList);
        }