public void CustomerAlertListExport(string searchKey, string company, DateTime?from, DateTime?to)
        {
            CustomerListViewData view = new CustomerListViewData();

            view.PageData                     = new BaseFrameWork.Model.PaginationData();
            view.PageData.PageIndex           = 1;
            view.PageData.PageSize            = int.MaxValue;
            view.PageData.PagintionJsFunction = "window.System.CustomerList.search()";
            view.PageData.OrderBy             = "CreatedOn DESC, Name";

            string    sql = @"SELECT A.*, B.Name AS CompanyName, C.Name AS BusinessTypeName, SUM(BidCost) OVER() AS TotalBidCost, SUM(SaleAmount) OVER() AS TotalSaleAmount,
       SUM(FactCost) OVER() AS TotalFactCost, SUM(Profit) OVER() AS TotalProfit, D.StepName, D.EstimateDate
  FROM dbo.Customer AS A
  LEFT JOIN dbo.Company AS B ON A.CompanyID = B.CompanyID
  LEFT JOIN dbo.BusinessType AS C ON A.BusinessType = C.TypeID
 OUTER APPLY (SELECT TOP 1 IA.ID AS StepID, IA.StepName, IA.EstimateDate
                FROM dbo.ProcessStep AS IA
               WHERE A.CustomerID = IA.CustomerID
                 AND IA.EstimateDate > GETDATE()
                 AND IA.EstimateDate < GETDATE() + @AlertDays
                 AND FinishDate IS NULL
               ORDER BY IA.EstimateDate, IA.CreatedOn) AS D
 WHERE D.StepID IS NOT NULL
   AND (((ISNULL(@CustomerName, '') <> '') AND A.Name LIKE '%' + @CustomerName + '%') OR (ISNULL(@CustomerName, '') = ''))
   AND (((ISNULL(@CompanyName, '') <> '') AND B.Name LIKE '%' + @CompanyName + '%') OR (ISNULL(@CompanyName, '') = ''))
   AND (((ISNULL(@From, '') <> '') AND A.CreatedOn >= @From) OR (ISNULL(@From, '') = ''))
   AND (((ISNULL(@To, '') <> '') AND A.CreatedOn < DATEADD(DAY, 1, @To)) OR (ISNULL(@To, '') = ''))";
            DataTable dt  = new Pagintion(sql, new
            {
                AlertDays    = Convert.ToInt32(ConfigurationManager.AppSettings["AlertDays"]),
                CustomerName = searchKey,
                CompanyName  = company,
                From         = from, To = to
            }, view.PageData).ToDataTable();

            dt = dt.DefaultView.ToTable(true, new string[] { "Name", "CompanyName", "BusinessTypeName", "BidCost", "SaleAmount", "FactCost", "Profit", "Phone", "StartPlace", "DestinationPlace", "StepName", "EstimateDate" });

            dt.Columns["Name"].ColumnName             = "客户名称";
            dt.Columns["CompanyName"].ColumnName      = "所属公司";
            dt.Columns["BusinessTypeName"].ColumnName = "业务类型";
            dt.Columns["BidCost"].ColumnName          = "报价";
            dt.Columns["SaleAmount"].ColumnName       = "销售额";
            dt.Columns["FactCost"].ColumnName         = "成本";
            dt.Columns["Profit"].ColumnName           = "利润";
            dt.Columns["Phone"].ColumnName            = "联系电话";
            dt.Columns["StartPlace"].ColumnName       = "起运地";
            dt.Columns["DestinationPlace"].ColumnName = "目的地";
            dt.Columns["StepName"].ColumnName         = "下一步";
            dt.Columns["EstimateDate"].ColumnName     = "预计处理日期";

            ExcelHelper eh = new ExcelHelper();

            eh.FillDataNew("客户列表", dt, "客户列表", true);
            eh.ExportExcelFile("客户列表文件");
        }
        public void CustomerStatisticListExport(string searchKey, string company, DateTime?from, DateTime?to, int num)
        {
            CustomerListViewData view = new CustomerListViewData();

            view.PageData                     = new BaseFrameWork.Model.PaginationData();
            view.PageData.PageIndex           = 1;
            view.PageData.PageSize            = int.MaxValue;
            view.PageData.PagintionJsFunction = "window.System.CustomerList.search()";
            view.PageData.OrderBy             = "CreatedOn DESC, Name";

            string    sql = @"SELECT A.*, B.Name AS CompanyName, C.Name AS BusinessTypeName
  FROM dbo.Customer AS A
  LEFT JOIN dbo.Company AS B ON A.CompanyID = B.CompanyID
  LEFT JOIN dbo.BusinessType AS C ON A.BusinessType = C.TypeID
OUTER APPLY (SELECT COUNT(*) AS StepCount
                FROM dbo.ProcessStep AS IA
               WHERE FinishDate IS NULL) AS D
 WHERE (((ISNULL(@CustomerName, '') <> '') AND A.Name LIKE '%' + @CustomerName + '%') OR (ISNULL(@CustomerName, '') = ''))
   AND (((ISNULL(@CompanyName, '') <> '') AND B.Name LIKE '%' + @CompanyName + '%') OR (ISNULL(@CompanyName, '') = ''))
   AND (((ISNULL(@From, '') <> '') AND A.CreatedOn >= @From) OR (ISNULL(@From, '') = ''))
   AND (((ISNULL(@To, '') <> '') AND A.CreatedOn < DATEADD(DAY, 1, @To)) OR (ISNULL(@To, '') = ''))
   AND CASE WHEN D.StepCount = 0 THEN 0 ELSE 1 END = @Num";
            DataTable dt  = new Pagintion(sql, new { Num = num, CustomerName = searchKey, CompanyName = company, From = from, To = to }, view.PageData).ToDataTable();

            dt = dt.DefaultView.ToTable(true, new string[] { "Name", "CompanyName", "BusinessTypeName", "BidCost", "SaleAmount", "FactCost", "Profit", "Phone", "StartPlace", "DestinationPlace", "Comment" });

            dt.Columns["Name"].ColumnName             = "客户名称";
            dt.Columns["CompanyName"].ColumnName      = "所属公司";
            dt.Columns["BusinessTypeName"].ColumnName = "业务类型";
            dt.Columns["BidCost"].ColumnName          = "报价";
            dt.Columns["SaleAmount"].ColumnName       = "销售额";
            dt.Columns["FactCost"].ColumnName         = "成本";
            dt.Columns["Profit"].ColumnName           = "利润";
            dt.Columns["Phone"].ColumnName            = "联系电话";
            dt.Columns["StartPlace"].ColumnName       = "起运地";
            dt.Columns["DestinationPlace"].ColumnName = "目的地";
            dt.Columns["Comment"].ColumnName          = "评价";
            ExcelHelper eh = new ExcelHelper();

            eh.FillDataNew("客户列表", dt, "客户列表", true);
            eh.ExportExcelFile("客户列表文件");
        }
        public void CustomerMonthListExport(string searchKey, string company, DateTime?from, DateTime?to)
        {
            CustomerListViewData view = new CustomerListViewData();

            view.PageData                     = new BaseFrameWork.Model.PaginationData();
            view.PageData.PageIndex           = 1;
            view.PageData.PageSize            = int.MaxValue;
            view.PageData.PagintionJsFunction = "window.System.CustomerList.search()";
            view.PageData.OrderBy             = "Code";

            string    sql = @"SELECT DISTINCT C.Code, C.Name, SUM(BidCost) OVER(PARTITION BY A.BusinessType, C.Code, C.NAME) AS BidCost,
       SUM(SaleAmount) OVER(PARTITION BY A.BusinessType, C.Code, C.NAME) AS SaleAmount,
       SUM(FactCost) OVER(PARTITION BY A.BusinessType, C.Code, C.NAME) AS FactCost,
       SUM(Profit) OVER(PARTITION BY A.BusinessType, C.Code, C.NAME) AS Profit,
       SUM(BidCost) OVER() AS TotalBidCost, SUM(SaleAmount) OVER() AS TotalSaleAmount,
       SUM(FactCost) OVER() AS TotalFactCost, SUM(Profit) OVER() AS TotalProfit
  FROM dbo.Customer AS A
  LEFT JOIN dbo.Company AS B ON A.CompanyID = B.CompanyID
  LEFT JOIN dbo.BusinessType AS C ON A.BusinessType = C.TypeID
 WHERE (((ISNULL(@CustomerName, '') <> '') AND A.Name LIKE '%' + @CustomerName + '%') OR (ISNULL(@CustomerName, '') = ''))
   AND (((ISNULL(@CompanyName, '') <> '') AND B.Name LIKE '%' + @CompanyName + '%') OR (ISNULL(@CompanyName, '') = ''))
   AND (((ISNULL(@From, '') <> '') AND A.CreatedOn >= @From) OR (ISNULL(@From, '') = ''))
   AND (((ISNULL(@To, '') <> '') AND A.CreatedOn < DATEADD(DAY, 1, @To)) OR (ISNULL(@To, '') = ''))";
            DataTable dt  = new Pagintion(sql, new { CustomerName = searchKey, CompanyName = company, From = from, To = to }, view.PageData).ToDataTable();

            dt = dt.DefaultView.ToTable(true, new string[] { "Code", "Name", "BidCost", "SaleAmount", "FactCost", "Profit" });

            dt.Columns["Code"].ColumnName       = "业务类型编码";
            dt.Columns["Name"].ColumnName       = "业务类型名称";
            dt.Columns["BidCost"].ColumnName    = "报价";
            dt.Columns["SaleAmount"].ColumnName = "销售额";
            dt.Columns["FactCost"].ColumnName   = "实际成本";
            dt.Columns["Profit"].ColumnName     = "利润";

            ExcelHelper eh = new ExcelHelper();

            eh.FillDataNew("客户列表", dt, "客户列表", true);
            eh.ExportExcelFile("客户列表文件");
        }