public static DataListModel <Production_Model> GetList(int page, int pagesize, string sidx, string sord, string Where)
        {
            List <Production_Model>          modelList  = new List <Production_Model>();
            List <Production_Model>          footerList = new List <Production_Model>();
            DataListModel <Production_Model> modeldata  = new DataListModel <Production_Model>();
            int    returnValue = 0;
            int    total       = 0;
            int    StartIndex  = (page - 1) * pagesize + 1;
            int    EndIndex    = page * pagesize;
            string SortFlag    = sidx;
            string sortOrder   = sord;
            string wherestr    = Where;
            string sql         = @"SELECT  [id] 
      ,[product_date]
      ,[cl_name]
      ,[hourid]
      ,[customer_num]
      ,[real_num]
	  ,([real_num] - [customer_num]) as real_customer
      ,[plan_pro_num]
      ,[real_pro_num]
	  ,([real_pro_num] - [plan_pro_num]) as real_plan
	  ,case when ([plan_pro_num]>0)
	  then round([real_pro_num]*100.00/[plan_pro_num],1)
	  else 0.0 end as real_biplan
      ,[line1_finish_num]
      ,[line1_repair_num]
	   ,case when ([line1_finish_num]>0)
	  then round([line1_repair_num]*100.00/[line1_finish_num],1)
	  else 0.0 end as line1_FTT
      ,[line2_finish_num]
      ,[line2_repair_num]
	   ,case when ([line2_finish_num]>0)
	  then round([line2_repair_num]*100.00/[line2_finish_num],1)
	  else 0.0 end as line2_FTT
      ,[line3_finish_num]
      ,[line3_repair_num]
	  ,case when ([line3_finish_num]>0)
	  then round([line3_repair_num]*100.00/[line3_finish_num],1)
	  else 0.0 end as line3_FTT
      ,[line4_finish_num]
      ,[line4_repair_num]
      ,case when ([line4_finish_num]>0)
	  then round([line4_repair_num]*100.00/[line4_finish_num],1)
	  else 0.0 end as line4_FTT
      ,[line5_finish_num]
      ,[line5_repair_num]
      ,case when ([line5_finish_num]>0)
	  then round([line5_repair_num]*100.00/[line5_finish_num],1)
	  else 0.0 end as line5_FTT
     ,[line6_finish_num]
      ,[line6_repair_num]
      ,case when ([line6_finish_num]>0)
	  then round([line6_repair_num]*100.00/[line6_finish_num],1)
	  else 0.0 end as line6_FTT
  FROM [Sheet] where 1=1 " + Where;

            if (string.IsNullOrEmpty(SortFlag))
            {
                SortFlag = "ID";
            }
            if (string.IsNullOrEmpty(sortOrder))
            {
                sortOrder = "asc";
            }
            StringBuilder commandText = new StringBuilder();

            commandText.Append(" SELECT TOP " + pagesize + " * FROM (SELECT ROW_NUMBER() OVER (ORDER BY " + SortFlag + " " + sortOrder + ") AS RowNumber,* FROM Sheet  where 1=1 ");
            commandText.Append(wherestr);//这里修改条件语句
            commandText.Append(" ) AS T  WHERE RowNumber >= " + StartIndex + " and RowNumber <= " + EndIndex);
            string query_sql = commandText.ToString();
            string count_sql = " select  count(*) as total from Sheet where 1 = 1 " + wherestr;
            string sum_sql   = @" select '汇总' as id 
,null as product_date
,null as cl_name
,null as hourid
     ,sum(customer_num) as customer_num
     ,sum([real_num])   as real_num
     ,sum([real_customer]) as [real_customer]
      , sum([plan_pro_num]) as [plan_pro_num]
      ,sum([real_pro_num]) as [real_pro_num]
      ,sum([real_plan]) as [real_plan]
,null as [real_biplan]
      ,sum([line1_finish_num]) as [line1_finish_num]
      ,sum ([line1_repair_num]) as [line1_repair_num]
,null as [line1_FTT]
        ,sum([line2_finish_num]) as [line2_finish_num]
      ,sum ([line2_repair_num]) as [line2_repair_num]
,null as [line2_FTT]
  ,sum([line3_finish_num]) as [line3_finish_num]
      ,sum ([line3_repair_num]) as [line3_repair_num]
,null as [line3_FTT]
  ,sum([line4_finish_num]) as [line4_finish_num]
      ,sum ([line4_repair_num]) as [line4_repair_num]
,null as [line4_FTT]
  ,sum([line5_finish_num]) as [line5_finish_num]
      ,sum ([line5_repair_num]) as [line5_repair_num]
,null as [line5_FTT]
  ,sum([line6_finish_num]) as [line6_finish_num]
      ,sum ([line6_repair_num]) as [line6_repair_num]
,null as [line6_FTT]
  from ";

            sum_sql += " (" + query_sql + ")a ";
            sum_sql  = sum_sql.Replace("\n", string.Empty).Replace("\r", string.Empty);
            DataSet ds = SqlHelper.GetDataSetTableMapping(SqlHelper.SqlConnString, System.Data.CommandType.Text, count_sql + query_sql + sum_sql, new string[] { "count", "data", "footer" }, null);

            if (DataHelper.HasData(ds))
            {
                DataTable dt1 = ds.Tables["count"];
                total = NumericParse.StringToInt(DataHelper.GetCellDataToStr(dt1.Rows[0], "total"));
                DataTable dt2    = ds.Tables["data"];
                DataTable footer = ds.Tables["footer"];
                foreach (DataRow row in dt2.Rows)
                {
                    Production_Model model = new Production_Model();
                    model.id               = NumericParse.StringToInt(DataHelper.GetCellDataToStr(row, "id"));
                    model.product_date     = DataHelper.GetCellDataToStr(row, "product_date").Substring(0, 10);
                    model.cl_name          = DataHelper.GetCellDataToStr(row, "cl_name");
                    model.hourid           = DataHelper.GetCellDataToStr(row, "hourid");
                    model.customer_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "customer_num"));
                    model.real_num         = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_num"));
                    model.real_customer    = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_customer"));
                    model.plan_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "plan_pro_num"));
                    model.real_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_pro_num"));
                    model.real_plan        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_plan"));
                    model.real_biplan      = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_biplan"));
                    model.real_biplan      = NumericParse.CutDecimalWithN(model.real_biplan, 3);
                    model.line1_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_finish_num"));
                    model.line1_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_repair_num"));
                    model.line1_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_FTT"));
                    model.line1_FTT        = NumericParse.CutDecimalWithN(model.line1_FTT, 3);
                    model.line2_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_finish_num"));
                    model.line2_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_repair_num"));
                    model.line2_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_FTT"));
                    model.line2_FTT        = NumericParse.CutDecimalWithN(model.line2_FTT, 3);
                    model.line3_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_finish_num"));
                    model.line3_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_repair_num"));
                    model.line3_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_FTT"));
                    model.line3_FTT        = NumericParse.CutDecimalWithN(model.line3_FTT, 3);
                    model.line4_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_finish_num"));
                    model.line4_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_repair_num"));
                    model.line4_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_FTT"));
                    model.line4_FTT        = NumericParse.CutDecimalWithN(model.line4_FTT, 3);
                    model.line5_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_finish_num"));
                    model.line5_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_repair_num"));
                    model.line5_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_FTT"));
                    model.line5_FTT        = NumericParse.CutDecimalWithN(model.line5_FTT, 3);
                    model.line6_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_finish_num"));
                    model.line6_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_repair_num"));
                    model.line6_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_FTT"));
                    model.line6_FTT        = NumericParse.CutDecimalWithN(model.line6_FTT, 3);



                    modelList.Add(model);
                }
                foreach (DataRow row in footer.Rows)
                {
                    Production_Model model = new Production_Model();
                    model.id               = NumericParse.StringToInt(DataHelper.GetCellDataToStr(row, "id"));
                    model.product_date     = DataHelper.GetCellDataToStr(row, "product_date");
                    model.cl_name          = DataHelper.GetCellDataToStr(row, "cl_name");
                    model.hourid           = DataHelper.GetCellDataToStr(row, "hourid");
                    model.customer_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "customer_num"));
                    model.real_num         = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_num"));
                    model.real_customer    = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_customer"));
                    model.plan_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "plan_pro_num"));
                    model.real_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_pro_num"));
                    model.real_plan        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_plan"));
                    model.real_biplan      = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_biplan"));
                    model.line1_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_finish_num"));
                    model.line1_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_repair_num"));
                    model.line1_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_FTT"));
                    model.line2_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_finish_num"));
                    model.line2_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_repair_num"));
                    model.line2_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_FTT"));
                    model.line3_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_finish_num"));
                    model.line3_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_repair_num"));
                    model.line3_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_FTT"));
                    model.line4_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_finish_num"));
                    model.line4_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_repair_num"));
                    model.line4_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_FTT"));
                    model.line5_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_finish_num"));
                    model.line5_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_repair_num"));
                    model.line5_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_FTT"));
                    model.line6_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_finish_num"));
                    model.line6_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_repair_num"));
                    model.line6_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_FTT"));



                    footerList.Add(model);
                }
                DataListModel <Production_Model> allmodel = new DataListModel <Production_Model>();
                allmodel.total  = total.ToString();
                allmodel.rows   = modelList;
                allmodel.footer = footerList;
                return(allmodel);
            }
            else
            {
                total = 0;
                return(null);
            }
        }
        public static DataListModel <Production_Model> GetListNew(string StartTime, string EndTime, int clnameid, string clname, int page, int pagesize)
        {
            List <Production_Model>          modelList  = new List <Production_Model>();
            List <Production_Model>          footerList = new List <Production_Model>();
            DataListModel <Production_Model> modeldata  = new DataListModel <Production_Model>();
            int returnValue = 0;
            int total       = 0;
            int StartIndex  = (page - 1) * pagesize + 1;
            int EndIndex    = page * pagesize;

            SqlParameter[] sqlPara = new SqlParameter[6];
            sqlPara[0] = new SqlParameter("@class_id", clnameid);
            sqlPara[1] = new SqlParameter("@class_name", clname);
            sqlPara[2] = new SqlParameter("@start_time", StartTime);
            sqlPara[3] = new SqlParameter("@end_time", EndTime);
            sqlPara[4] = new SqlParameter("@start_index", StartIndex);
            sqlPara[5] = new SqlParameter("@end_index", EndIndex);
            DataSet ds = SqlHelper.RunProcedureTables(SqlHelper.SqlConnString, "Proc_Rpt_ProductHourly", sqlPara, new string[] { "data", "footer", "count" });

            if (DataHelper.HasData(ds))
            {
                DataTable dt1 = ds.Tables["count"];
                total = NumericParse.StringToInt(DataHelper.GetCellDataToStr(dt1.Rows[0], "total"));
                DataTable dt2    = ds.Tables["data"];
                DataTable footer = ds.Tables["footer"];
                foreach (DataRow row in dt2.Rows)
                {
                    Production_Model model = new Production_Model();
                    model.id               = NumericParse.StringToInt(DataHelper.GetCellDataToStr(row, "id"));
                    model.product_date     = DataHelper.GetCellDataToStr(row, "product_date").Substring(0, 10);
                    model.cl_name          = DataHelper.GetCellDataToStr(row, "cl_name");
                    model.hourid           = DataHelper.GetCellDataToStr(row, "hourid");
                    model.customer_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "customer_num"));
                    model.real_num         = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_num"));
                    model.real_customer    = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_customer"));
                    model.plan_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "plan_pro_num"));
                    model.real_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_pro_num"));
                    model.real_plan        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_plan"));
                    model.real_biplan      = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_biplan"));
                    model.real_biplan      = NumericParse.CutDecimalWithN(model.real_biplan, 3);
                    model.line1_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_finish_num"));
                    model.line1_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_repair_num"));
                    model.line1_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_FTT"));
                    model.line1_FTT        = NumericParse.CutDecimalWithN(model.line1_FTT, 3);
                    model.line2_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_finish_num"));
                    model.line2_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_repair_num"));
                    model.line2_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_FTT"));
                    model.line2_FTT        = NumericParse.CutDecimalWithN(model.line2_FTT, 3);
                    model.line3_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_finish_num"));
                    model.line3_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_repair_num"));
                    model.line3_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_FTT"));
                    model.line3_FTT        = NumericParse.CutDecimalWithN(model.line3_FTT, 3);
                    model.line4_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_finish_num"));
                    model.line4_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_repair_num"));
                    model.line4_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_FTT"));
                    model.line4_FTT        = NumericParse.CutDecimalWithN(model.line4_FTT, 3);
                    model.line5_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_finish_num"));
                    model.line5_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_repair_num"));
                    model.line5_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_FTT"));
                    model.line5_FTT        = NumericParse.CutDecimalWithN(model.line5_FTT, 3);
                    model.line6_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_finish_num"));
                    model.line6_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_repair_num"));
                    model.line6_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_FTT"));
                    model.line6_FTT        = NumericParse.CutDecimalWithN(model.line6_FTT, 3);



                    modelList.Add(model);
                }
                foreach (DataRow row in footer.Rows)
                {
                    Production_Model model = new Production_Model();
                    model.id               = NumericParse.StringToInt(DataHelper.GetCellDataToStr(row, "id"));
                    model.product_date     = DataHelper.GetCellDataToStr(row, "product_date");
                    model.cl_name          = DataHelper.GetCellDataToStr(row, "cl_name");
                    model.hourid           = DataHelper.GetCellDataToStr(row, "hourid");
                    model.customer_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "customer_num"));
                    model.real_num         = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_num"));
                    model.real_customer    = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_customer"));
                    model.plan_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "plan_pro_num"));
                    model.real_pro_num     = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_pro_num"));
                    model.real_plan        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_plan"));
                    model.real_biplan      = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "real_biplan"));
                    model.line1_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_finish_num"));
                    model.line1_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_repair_num"));
                    model.line1_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line1_FTT"));
                    model.line2_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_finish_num"));
                    model.line2_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_repair_num"));
                    model.line2_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line2_FTT"));
                    model.line3_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_finish_num"));
                    model.line3_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_repair_num"));
                    model.line3_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line3_FTT"));
                    model.line4_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_finish_num"));
                    model.line4_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_repair_num"));
                    model.line4_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line4_FTT"));
                    model.line5_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_finish_num"));
                    model.line5_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_repair_num"));
                    model.line5_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line5_FTT"));
                    model.line6_finish_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_finish_num"));
                    model.line6_repair_num = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_repair_num"));
                    model.line6_FTT        = NumericParse.StringToDecimal(DataHelper.GetCellDataToStr(row, "line6_FTT"));



                    footerList.Add(model);
                }
                DataListModel <Production_Model> allmodel = new DataListModel <Production_Model>();
                allmodel.total  = total.ToString();
                allmodel.rows   = modelList;
                allmodel.footer = footerList;
                return(allmodel);
            }
            else
            {
                total = 0;
                return(null);
            }
        }