Exemple #1
0
        public OperationResult PostPointsByBranch(Boolean isGetPointsByBranch, string userID, branchParams param)
        {
            var result = new OperationResult();

            CommomMethods.visitLog(2, param.bankID, userID);
            try
            {
                using (var db = new HeatMapEntities())
                {
                    var data = db.Pro_GetTwoBankUserCount(param.bankID, param.type, param.level, param.longitude, param.latitude, param.distance * 2).ToList().Select(x => new HeatmapPoint
                    {
                        lng       = x.Longitude,
                        lat       = x.Latitude,
                        userCount = x.UserCount,
                    });

                    result.ReturnData = data;
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #2
0
        public OperationResult PostPointsBySiteWithDimension(Boolean isGetPointsBySiteWithDimension, string userID, siteParams param)
        {
            var result = new OperationResult();
            var ip     = HostIP.GetHostAddress();

            CommomMethods.visitLog(2, param.bankID, userID);
            try
            {
                using (var db = new HeatMapEntities())
                {
                    var data = db.Pro_GetUserPropertyData(param.bankID, param.type, param.AUMLevel, param.dimension).ToList().Select(x => new HeatmapPoint
                    {
                        lng       = x.Longitude,
                        lat       = x.Latitude,
                        userCount = Convert.ToInt32(x.UserCount)
                    });
                    result.ReturnData = data;
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #3
0
        public OperationResult GetExportPoiSingleCatagoryData(Boolean isExportPoiSingleCatagoryData, int bankID, int radiusIndex, string name)
        {
            var result = new OperationResult()
            {
                ReturnCode = 1
            };
            string cName = HttpUtility.UrlDecode(name);

            try
            {
                var    poiData  = CommomMethods.GetSingleCategoryPoiStatisticData(bankID, radiusIndex, cName);
                string fileName = "统计-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls"; // 文件名称
                Dictionary <string, string> poiCellheader = new Dictionary <string, string> {
                    { "level1", "大类" },
                    { "count_lv1", "合计" },
                    { "level3", "小类" },
                    { "count_lv2", "小计" },
                    { "Address", "明细" }
                };
                string[] PoiName = new string[] { "距网点0-0.5公里", "距网点0-1公里", "距网点0-1.5公里", "距网点0-2公里", "距网点0-3公里" };
                var      url     = ExcelHelper.EntityListToExcel2003(poiCellheader, poiData, fileName, $"POI类别({cName},{PoiName[radiusIndex]})");
                result.ReturnData = url;
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 获取分行的客户渗透率
        /// </summary>
        /// <param name="isGetPenetranceByBranch"></param>
        /// <param name="userID"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public OperationResult PostPenetranceByBranch(Boolean isGetPenetranceByBranch, string userID, branchParams param)
        {
            var result = new OperationResult();

            CommomMethods.visitLog(2, param.bankID, userID);
            try
            {
                using (var db = new HeatMapEntities())
                {
                    var cmbUserCount       = db.Pro_GetTwoBankData(param.bankID, param.level, param.type, param.isAum, param.AUMLevel, param.UMPLlevel, param.isNoDF, param.isCheck, param.longitude, param.latitude, param.distance * 2).Sum(x => x.UserCount);
                    var _3rdPartyUserCount = db.Pro_Get3rdDataByCityID(0, param.level, param.type, param.longitude, param.latitude, param.distance * 2).Sum(x => x.UserCount);
                    result.ReturnData = new
                    {
                        cmbUserCount       = cmbUserCount,
                        _3rdPartyUserCount = _3rdPartyUserCount
                    };
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
        public ActionResult Index()
        {
            RegistrationVM models = new RegistrationVM();
            DataTable      dt     = new DataTable();

            dt = IndRepository.GetUserData(1);
            models.ddlCtegory = CommomMethods.ToSelectList(dt, "CategoryName", "CategoryID");

            return(View(models));
        }
Exemple #6
0
        /// <summary>
        /// 暂时弃用
        /// </summary>
        /// <param name="isPostPointsByBounds"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public OperationResult PostPointsByBounds(Boolean isPostPointsByBounds, polygonBounds args)
        {
            var result    = new OperationResult();
            var dataList  = new List <HeatmapPoint>();
            var isContain = false;
            var pathList  = args.path;
            var ip        = HostIP.GetHostAddress();

            try
            {
                using (var db = new HeatMapEntities())
                {
                    var data = db.Pro_GetAnywhereData((decimal)args.lat, (decimal)args.lng, (decimal)args.radius).ToList().Select(x => new HeatmapPoint
                    {
                        lng       = x.Longitude,
                        lat       = x.Latitude,
                        userCount = x.UserCount
                    });
                    foreach (var point in data)
                    {
                        isContain = CommomMethods.IsInside(new lnglat {
                            lat = (decimal)point.lat, lng = (decimal)point.lng
                        }, pathList);

                        if (isContain)
                        {
                            dataList.Add(point);
                        }
                    }
                    result.ReturnData = dataList;
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #7
0
        /// <summary>
        /// 城市级别获取热力图数据
        /// </summary>
        /// <param name="isGetPointsByBranchWithClientFilter"></param>
        /// <param name="userID"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public OperationResult PostPointsByBranchWithClientFilter(Boolean isGetPointsByBranchWithClientFilter, string userID, branchParams param)
        {
            var result = new OperationResult();

            CommomMethods.visitLog(2, param.bankID, userID);
            try
            {
                using (var db = new HeatMapEntities())
                {
                    var data = db.Pro_GetTwoBankData(param.bankID, param.level, param.type, param.isAum, param.AUMLevel, param.UMPLlevel, param.isNoDF, param.isCheck, param.longitude, param.latitude, param.distance * 2).ToList().Select(x => new HeatmapPoint
                    {
                        lng       = x.Longitude,
                        lat       = x.Latitude,
                        userCount = x.UserCount,
                        aumCount  = x.AUMMoney,
                        deposit   = x.DepositMoney
                    });
                    var _3rdPartyData = db.Pro_Get3rdDataByCityID(0, param.level, param.type, param.longitude, param.latitude, param.distance * 2).ToList().Select(x => new
                    {
                        lng        = x.Longitude,
                        lat        = x.Latitude,
                        thirdParty = x.UserCount,
                    });
                    result.ReturnData = new
                    {
                        CMBData       = data,
                        _3rdPartyData = _3rdPartyData
                    };
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #8
0
        /// <summary>
        /// 获取网点相关数据
        /// </summary>
        /// <param name="isGetPointsBySite"></param>
        /// <param name="userID"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public OperationResult PostPointsBySite(Boolean isGetPointsBySite, string userID, siteParams param)
        {
            var result = new OperationResult();
            List <HeatmapPoint>    CMBData       = new List <HeatmapPoint>();
            List <_3rdPartyPoints> _3rdPartyData = new List <_3rdPartyPoints>();
            var ip = HostIP.GetHostAddress();
            int aum11 = 0, aum12 = 0, aum13 = 0, aum14 = 0, aum15 = 0, aum16 = 0, ump21 = 0, ump22 = 0, ump23 = 0, tCount = 0;
            var AumStatisticList = new List <Pro_GetAnywhereAUMStatisticsData_Result>();
            var UmpStatisticList = new List <Pro_GetAnywhereUMPStatisticsData_Result>();

            CommomMethods.visitLog(2, param.bankID, userID);
            try
            {
                using (var db = new HeatMapEntities())
                {
                    CMBData = db.Pro_GetBankData(param.bankID, param.type, param.isAum, param.AUMLevel, param.UMPLlevel, param.isNoDF, param.isCheck, param.distance).Select(x => new HeatmapPoint
                    {
                        lng       = x.Longitude,
                        lat       = x.Latitude,
                        userCount = x.UserCount,
                        aumCount  = x.AUMMoney,
                        deposit   = x.DepositMoney,
                        Distance  = x.Distance,
                        AUM_level = x.AUM_level,
                        UMP_level = x.UMP_level
                    }).ToList();

                    var statisticData = db.Pro_GetBankStatistics(param.bankID, param.isAum, param.AUMLevel, param.UMPLlevel, param.isNoDF).ToList();
                    if (param.type == 1 || param.type == 2)
                    {
                        tCount = (int)db.Pro_GetTwoBranchUserCount(param.bankID).FirstOrDefault().UserCount;
                        foreach (var point in statisticData)
                        {
                            //AUM统计
                            switch (point.AUM_level)
                            {
                            case 11: aum11 += (int)point.UserCount; break;

                            case 12: aum12 += (int)point.UserCount; break;

                            case 13: aum13 += (int)point.UserCount; break;

                            case 14: aum14 += (int)point.UserCount; break;

                            case 15: aum15 += (int)point.UserCount; break;

                            case 16: aum16 += (int)point.UserCount; break;

                            default: break;
                            }
                            //UMP统计
                            switch (point.UMP_level)
                            {
                            case 21: ump21 += (int)point.UserCount; break;

                            case 22: ump22 += (int)point.UserCount; break;

                            case 23: ump23 += (int)point.UserCount; break;

                            default: break;
                            }
                        }
                    }
                    else if (param.type == 3 || param.type == 4)
                    {
                        tCount = (int)CMBData.Sum(x => x.userCount);
                        foreach (var point in CMBData)
                        {
                            //AUM统计
                            switch (point.AUM_level)
                            {
                            case 11: aum11 += (int)point.userCount; break;

                            case 12: aum12 += (int)point.userCount; break;

                            case 13: aum13 += (int)point.userCount; break;

                            case 14: aum14 += (int)point.userCount; break;

                            case 15: aum15 += (int)point.userCount; break;

                            case 16: aum16 += (int)point.userCount; break;

                            default: break;
                            }
                            //UMP统计
                            switch (point.UMP_level)
                            {
                            case 21: ump21 += (int)point.userCount; break;

                            case 22: ump22 += (int)point.userCount; break;

                            case 23: ump23 += (int)point.userCount; break;

                            default: break;
                            }
                        }
                    }
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 11, AUM_Name = "零资产", UserCount = aum11, Total = tCount, Percent = aum11 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 12, AUM_Name = "非零不达标基客", UserCount = aum12, Total = tCount, Percent = aum12 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 13, AUM_Name = "达标基客", UserCount = aum13, Total = tCount, Percent = aum13 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 14, AUM_Name = "金卡", UserCount = aum14, Total = tCount, Percent = aum14 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 15, AUM_Name = "金葵花", UserCount = aum15, Total = tCount, Percent = aum15 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 16, AUM_Name = "私钻", UserCount = aum16, Total = tCount, Percent = aum16 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 21, UMP_Name = "潜力金卡", UserCount = ump21, Total = tCount, Percent = ump21 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 22, UMP_Name = "潜力金葵花", UserCount = ump22, Total = tCount, Percent = ump22 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 23, UMP_Name = "潜力私钻", UserCount = ump23, Total = tCount, Percent = ump23 * 100 / (decimal)tCount
                    });
                    var PoiStatisticData = CommomMethods.GetSitePoiStatisticData(param.bankID);
                    if (param.type == 3 || param.type == 4)
                    {
                        _3rdPartyData = db.Pro_GetAnywhere3rdData(param.lat, param.lng, param.distance, (int)PointType.Work).Select(x => new _3rdPartyPoints
                        {
                            lng        = x.Longitude,
                            lat        = x.Latitude,
                            thirdParty = Convert.ToInt32(x.UserCount),
                            Distance   = x.Distance
                        }).ToList();
                        var sitePonetranceList = CommomMethods.CalSiteRelPonetrance(CMBData, _3rdPartyData);
                        result.ReturnData = new
                        {
                            CMBData            = CMBData,
                            _3rdPartyData      = _3rdPartyData,
                            PoiStatisticData   = PoiStatisticData,
                            sitePonetranceData = sitePonetranceList,
                            AumStatisticList   = AumStatisticList,
                            UmpStatisticList   = UmpStatisticList
                        };
                    }
                    else
                    {
                        result.ReturnData = new
                        {
                            CMBData          = CMBData,
                            PoiStatisticData = PoiStatisticData,
                            AumStatisticList = AumStatisticList,
                            UmpStatisticList = UmpStatisticList
                        };
                    }
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }
            return(result);
        }
Exemple #9
0
        public OperationResult PostPointsByPolygon(Boolean isPostPointsByPolygon, string userID, polygonBounds args)
        {
            var result      = new OperationResult();
            var cmbDataList = new List <HeatmapPoint>();
            var pathList    = args.path;

            CommomMethods.visitLog(3, 0, userID);

            try
            {
                using (var db = new HeatMapEntities())
                {
                    var pathXArr = new decimal[pathList.Count];
                    var pathYArr = new decimal[pathList.Count];
                    int aum11 = 0, aum12 = 0, aum13 = 0, aum14 = 0, aum15 = 0, aum16 = 0, ump21 = 0, ump22 = 0, ump23 = 0, tCount = 0;

                    var AumStatisticList = new List <Pro_GetAnywhereAUMStatisticsData_Result>();
                    var UmpStatisticList = new List <Pro_GetAnywhereUMPStatisticsData_Result>();
                    for (var i = 0; i < pathList.Count; i++)
                    {
                        pathXArr[i] = pathList[i].lat;
                        pathYArr[i] = pathList[i].lng;
                    }
                    var data = db.Pro_GetPolygonData(String.Join(",", pathXArr), String.Join(",", pathYArr)).ToList();
                    tCount = data.Count();
                    foreach (var point in data)
                    {
                        //描点数据
                        cmbDataList.Add(new HeatmapPoint
                        {
                            lat       = point.Latitude,
                            lng       = point.Longitude,
                            userCount = point.UserCount,
                            aumCount  = point.AUMMoney,
                            deposit   = point.DepositMoney
                        });
                        //AUM统计
                        switch (point.AUM_level)
                        {
                        case 11: aum11 += (int)point.UserCount; break;

                        case 12: aum12 += (int)point.UserCount; break;

                        case 13: aum13 += (int)point.UserCount; break;

                        case 14: aum14 += (int)point.UserCount; break;

                        case 15: aum15 += (int)point.UserCount; break;

                        case 16: aum16 += (int)point.UserCount; break;

                        default: break;
                        }
                        //ump统计
                        if (point.AUM_level <= 13)
                        {
                            switch (point.UMP_level)
                            {
                            case 21: ump21 += (int)point.UserCount; break;

                            case 22: ump22 += (int)point.UserCount; break;

                            case 23: ump23 += (int)point.UserCount; break;

                            default: break;
                            }
                        }
                    }
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 11, AUM_Name = "零资产", UserCount = aum11, Total = tCount, Percent = aum11 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 12, AUM_Name = "非零不达标基客", UserCount = aum12, Total = tCount, Percent = aum12 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 13, AUM_Name = "达标基客", UserCount = aum13, Total = tCount, Percent = aum13 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 14, AUM_Name = "金卡", UserCount = aum14, Total = tCount, Percent = aum14 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 15, AUM_Name = "金葵花", UserCount = aum15, Total = tCount, Percent = aum15 * 100 / (decimal)tCount
                    });
                    AumStatisticList.Add(new Pro_GetAnywhereAUMStatisticsData_Result {
                        AUM_level = 16, AUM_Name = "私钻", UserCount = aum16, Total = tCount, Percent = aum16 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 21, UMP_Name = "潜力金卡", UserCount = ump21, Total = tCount, Percent = ump21 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 22, UMP_Name = "潜力金葵花", UserCount = ump22, Total = tCount, Percent = ump22 * 100 / (decimal)tCount
                    });
                    UmpStatisticList.Add(new Pro_GetAnywhereUMPStatisticsData_Result {
                        UMP_level = 23, UMP_Name = "潜力私钻", UserCount = ump23, Total = tCount, Percent = ump23 * 100 / (decimal)tCount
                    });

                    //导出统计数据到excel
                    var statisticDataList = new List <statistic_2>();
                    foreach (var item in AumStatisticList)
                    {
                        statisticDataList.Add(new statistic_2
                        {
                            name    = item.AUM_Name,
                            count   = item.UserCount.ToString(),
                            percent = Math.Round((decimal)item.Percent, 2).ToString() + "%",
                        });
                    }
                    foreach (var item in UmpStatisticList)
                    {
                        statisticDataList.Add(new statistic_2
                        {
                            name    = item.UMP_Name,
                            count   = item.UserCount.ToString(),
                            percent = Math.Round((decimal)item.Percent, 2).ToString() + "%",
                        });
                    }
                    Dictionary <string, string> cellheader = new Dictionary <string, string> {
                        { "name", "类型" },
                        { "count", "数量" },
                        { "percent", "百分比" },
                    };
                    //获取第三方数据
                    var _3rdPartyData = db.Pro_GetPolygon3rdData(String.Join(",", pathXArr), String.Join(",", pathYArr), (int)PointType.Work).Select(x => new {
                        lng        = x.Longitude,
                        lat        = x.Latitude,
                        thirdParty = Convert.ToInt32(x.UserCount),
                    }).ToList();

                    //计算招行客户数量和第三方客户数量
                    var cmbUserCount       = cmbDataList.Sum(x => x.userCount);
                    var _3rdPartyUserCount = _3rdPartyData.Sum(x => x.thirdParty);
                    if (cmbUserCount >= _3rdPartyUserCount)
                    {
                        _3rdPartyUserCount = (int)cmbUserCount;
                    }
                    statisticDataList.Add(new statistic_2
                    {
                        name    = "招行客户",
                        count   = cmbUserCount.ToString(),
                        percent = Math.Round(((decimal)cmbUserCount * 100 / _3rdPartyUserCount), 2).ToString() + "%",
                    });
                    statisticDataList.Add(new statistic_2
                    {
                        name    = "其它用户",
                        count   = (_3rdPartyUserCount - cmbUserCount).ToString(),
                        percent = Math.Round(((decimal)(_3rdPartyUserCount - cmbUserCount) * 100 / _3rdPartyUserCount), 2).ToString() + "%",
                    });

                    var url = ExcelHelper.EntityListToExcel2003(cellheader, statisticDataList, "统计");
                    result.ReturnData = new { CMBData = cmbDataList, _3rdPartyData = _3rdPartyData, AUMData = AumStatisticList, UMPData = UmpStatisticList, url = url };
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }

            return(result);
        }
Exemple #10
0
        /// <summary>
        /// 获取网点级别资产统计数据
        /// </summary>
        /// <param name="isPostBankStatisticData"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public OperationResult PostBankStatisticData(Boolean isPostBankStatisticData, siteStatisticParam param)
        {
            var result = new OperationResult();

            try
            {
                using (var db = new HeatMapEntities())
                {
                    var data = param.AumStatisticList;
                    // 1.获取数据集合
                    var       dataList       = new List <statistic_2>();
                    ArrayList PenetranceList = new ArrayList();
                    foreach (var item in data)
                    {
                        dataList.Add(new statistic_2
                        {
                            name    = item.AUM_Name,
                            count   = item.UserCount.ToString(),
                            percent = Math.Round((decimal)item.Percent, 2).ToString() + "%"
                        });
                    }
                    // 2.设置单元格抬头
                    // key:实体对象属性名称,可通过反射获取值
                    // value:Excel列的名称
                    Dictionary <string, string> staCellheader = new Dictionary <string, string> {
                        { "name", "类别" },
                        { "count", "数量" },
                        { "percent", "百分比" },
                    };
                    Dictionary <string, string> penetranceCellheader = new Dictionary <string, string> {
                        { "radius", "半径范围" },
                        { "cmb", "招行客户" },
                        { "_3rdParty", "其他客户" },
                    };
                    Dictionary <string, string> poiCellheader = new Dictionary <string, string> {
                        { "level1", "大类" },
                        { "count_lv1", "合计" },
                        { "level3", "小类" },
                        { "count_lv2", "小计" },
                        { "Address", "明细" }
                    };
                    string fileName = "统计-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls"; // 文件名称
                    var    url      = ExcelHelper.EntityListToExcel2003(staCellheader, dataList, fileName, "资产分段-截至2017年9月30日");
                    //新增渗透率sheet页
                    if (param.dType == 3 || param.dType == 4)
                    {
                        foreach (var peneItem in param.sitePenetranceList)
                        {
                            var cmbUserCount       = (int)peneItem.cmbUserCount;
                            var _3rdPartyUserCount = (int)peneItem._3rdPartyUserCount;
                            _3rdPartyUserCount = cmbUserCount >= _3rdPartyUserCount ? cmbUserCount + _3rdPartyUserCount : _3rdPartyUserCount;
                            var cmbPercent  = Math.Round(((decimal)cmbUserCount * 100 / _3rdPartyUserCount), 2).ToString() + "%";
                            var _3rdPercent = Math.Round(((decimal)(_3rdPartyUserCount - cmbUserCount) * 100 / _3rdPartyUserCount), 2).ToString() + "%";
                            PenetranceList.Add(new
                            {
                                radius    = $"0-{peneItem.radius}公里",
                                cmb       = $"{cmbUserCount.ToString("###,###")}({cmbPercent})",
                                _3rdParty = $"{(_3rdPartyUserCount - cmbUserCount).ToString("###,###")}({_3rdPercent})"
                            });
                        }
                        ExcelHelper.EntityListToExcel2003(penetranceCellheader, PenetranceList, fileName, "渗透率");
                    }
                    //新增poi数据sheet页
                    double[] radiusArr = new double[] { 0.5, 1, 1.5, 2, 3 };
                    string[] PoiName   = new string[] { "距网点0-0.5公里", "距网点0.5-1公里", "距网点1-1.5公里", "距网点1.5-2公里", "距网点2-3公里" };
                    var      nameIndex = 0;
                    foreach (var radius in radiusArr)
                    {
                        var poiStatisticData = CommomMethods.GetPoiStatisticData(param.bankID, radius);
                        ExcelHelper.EntityListToExcel2003(poiCellheader, poiStatisticData, fileName, "POI类别(" + PoiName[nameIndex] + ")");
                        ExcelHelper.mergeSheet("UpFiles/template/poides.xls", "汇总", $"UpFiles/ExcelFiles/{fileName}", $"POI类别({PoiName[nameIndex]})");
                        nameIndex++;
                    }
                    result.ReturnData = new { url = url };
                    result.ReturnCode = 1;
                }
            }
            catch (Exception ex)
            {
                result.Message    = ex.Message;
                result.ReturnCode = 0;
                Logger.Log.Error(ex.StackTrace);
            }

            return(result);
        }