/**  版本信息模板在安装目录下,可自行修改。
* electricity_data.cs
*
* 功 能: N/A
* 类 名: electricity_data
*
* Ver    变更日期             负责人  变更内容
* ───────────────────────────────────
* V0.01  2024/1/31 10:29:15   N/A    初版
*
* Copyright (c) 2012 Maticsoft Corporation. All rights reserved.
*┌──────────────────────────────────┐
*│ 此技术信息为本公司机密信息,未经本公司书面同意禁止向第三方披露. │
*│ 版权所有:动软卓越(北京)科技有限公司              │
*└──────────────────────────────────┘
*/
using System;
using System.Data;
using System.Text;
using MySql.Data.MySqlClient;
using Maticsoft.DBUtility;//Please add references
using System.Collections.Generic;

namespace DataService.DAL
{
	/// <summary>
	/// 数据访问类:electricity_data
	/// </summary>
	public partial class electricity_data
	{
		public electricity_data()
		{}
		#region  BasicMethod

		/// <summary>
		/// 是否存在该记录
		/// </summary>
		public bool Exists(string ElectricityId)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select count(1) from electricity_data");
			strSql.Append(" where ElectricityId=@ElectricityId ");
			MySqlParameter[] parameters = {
					new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255)			};
			parameters[0].Value = ElectricityId;

			return DbHelperMySQL.Exists(strSql.ToString(),parameters);
		}


		/// <summary>
		/// 增加一条数据
		/// </summary>
		public bool Add(DataService.Model.electricity_data model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("insert into electricity_data(");
			strSql.Append("ElectricityId,DeviceName,EH,P,Kvar,Ia,Ib,Ic,Ua,Ub,Uc,ServiceRating,CreateTime,EntireTime,Reserve1,Reserve2,Reserve3,Reserve4,Reserve5)");
			strSql.Append(" values (");
			strSql.Append("@ElectricityId,@DeviceName,@EH,@P,@Kvar,@Ia,@Ib,@Ic,@Ua,@Ub,@Uc,@ServiceRating,@CreateTime,@EntireTime,@Reserve1,@Reserve2,@Reserve3,@Reserve4,@Reserve5)");
			MySqlParameter[] parameters = {
					new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255),
					new MySqlParameter("@DeviceName", MySqlDbType.VarChar,255),
					new MySqlParameter("@EH", MySqlDbType.Float,255),
					new MySqlParameter("@P", MySqlDbType.Float,255),
					new MySqlParameter("@Kvar", MySqlDbType.Float,255),
					new MySqlParameter("@Ia", MySqlDbType.Float,255),
					new MySqlParameter("@Ib", MySqlDbType.Float,255),
					new MySqlParameter("@Ic", MySqlDbType.Float,255),
					new MySqlParameter("@Ua", MySqlDbType.Float,255),
					new MySqlParameter("@Ub", MySqlDbType.Float,255),
					new MySqlParameter("@Uc", MySqlDbType.Float,255),
					new MySqlParameter("@ServiceRating", MySqlDbType.Float,255),
					new MySqlParameter("@CreateTime", MySqlDbType.DateTime),
					new MySqlParameter("@EntireTime", MySqlDbType.DateTime),
					new MySqlParameter("@Reserve1", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve2", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve3", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve4", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve5", MySqlDbType.VarChar,255)};
			parameters[0].Value = model.ElectricityId;
			parameters[1].Value = model.DeviceName;
			parameters[2].Value = model.EH;
			parameters[3].Value = model.P;
			parameters[4].Value = model.Kvar;
			parameters[5].Value = model.Ia;
			parameters[6].Value = model.Ib;
			parameters[7].Value = model.Ic;
			parameters[8].Value = model.Ua;
			parameters[9].Value = model.Ub;
			parameters[10].Value = model.Uc;
			parameters[11].Value = model.ServiceRating;
			parameters[12].Value = model.CreateTime;
			parameters[13].Value = model.EntireTime;
			parameters[14].Value = model.Reserve1;
			parameters[15].Value = model.Reserve2;
			parameters[16].Value = model.Reserve3;
			parameters[17].Value = model.Reserve4;
			parameters[18].Value = model.Reserve5;

			int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters);
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		/// <summary>
		/// 更新一条数据
		/// </summary>
		public bool Update(DataService.Model.electricity_data model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("update electricity_data set ");
			strSql.Append("DeviceName=@DeviceName,");
			strSql.Append("EH=@EH,");
			strSql.Append("P=@P,");
			strSql.Append("Kvar=@Kvar,");
			strSql.Append("Ia=@Ia,");
			strSql.Append("Ib=@Ib,");
			strSql.Append("Ic=@Ic,");
			strSql.Append("Ua=@Ua,");
			strSql.Append("Ub=@Ub,");
			strSql.Append("Uc=@Uc,");
			strSql.Append("ServiceRating=@ServiceRating,");
			strSql.Append("CreateTime=@CreateTime,");
			strSql.Append("EntireTime=@EntireTime,");
			strSql.Append("Reserve1=@Reserve1,");
			strSql.Append("Reserve2=@Reserve2,");
			strSql.Append("Reserve3=@Reserve3,");
			strSql.Append("Reserve4=@Reserve4,");
			strSql.Append("Reserve5=@Reserve5");
			strSql.Append(" where ElectricityId=@ElectricityId ");
			MySqlParameter[] parameters = {
					new MySqlParameter("@DeviceName", MySqlDbType.VarChar,255),
					new MySqlParameter("@EH", MySqlDbType.Float,255),
					new MySqlParameter("@P", MySqlDbType.Float,255),
					new MySqlParameter("@Kvar", MySqlDbType.Float,255),
					new MySqlParameter("@Ia", MySqlDbType.Float,255),
					new MySqlParameter("@Ib", MySqlDbType.Float,255),
					new MySqlParameter("@Ic", MySqlDbType.Float,255),
					new MySqlParameter("@Ua", MySqlDbType.Float,255),
					new MySqlParameter("@Ub", MySqlDbType.Float,255),
					new MySqlParameter("@Uc", MySqlDbType.Float,255),
					new MySqlParameter("@ServiceRating", MySqlDbType.Float,255),
					new MySqlParameter("@CreateTime", MySqlDbType.DateTime),
					new MySqlParameter("@EntireTime", MySqlDbType.DateTime),
					new MySqlParameter("@Reserve1", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve2", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve3", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve4", MySqlDbType.VarChar,255),
					new MySqlParameter("@Reserve5", MySqlDbType.VarChar,255),
					new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255)};
			parameters[0].Value = model.DeviceName;
			parameters[1].Value = model.EH;
			parameters[2].Value = model.P;
			parameters[3].Value = model.Kvar;
			parameters[4].Value = model.Ia;
			parameters[5].Value = model.Ib;
			parameters[6].Value = model.Ic;
			parameters[7].Value = model.Ua;
			parameters[8].Value = model.Ub;
			parameters[9].Value = model.Uc;
			parameters[10].Value = model.ServiceRating;
			parameters[11].Value = model.CreateTime;
			parameters[12].Value = model.EntireTime;
			parameters[13].Value = model.Reserve1;
			parameters[14].Value = model.Reserve2;
			parameters[15].Value = model.Reserve3;
			parameters[16].Value = model.Reserve4;
			parameters[17].Value = model.Reserve5;
			parameters[18].Value = model.ElectricityId;

			int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters);
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}

		/// <summary>
		/// 删除一条数据
		/// </summary>
		public bool Delete(string ElectricityId)
		{
			
			StringBuilder strSql=new StringBuilder();
			strSql.Append("delete from electricity_data ");
			strSql.Append(" where ElectricityId=@ElectricityId ");
			MySqlParameter[] parameters = {
					new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255)			};
			parameters[0].Value = ElectricityId;

			int rows=DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters);
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		/// <summary>
		/// 批量删除数据
		/// </summary>
		public bool DeleteList(string ElectricityIdlist )
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("delete from electricity_data ");
			strSql.Append(" where ElectricityId in ("+ElectricityIdlist + ")  ");
			int rows=DbHelperMySQL.ExecuteSql(strSql.ToString());
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}


		/// <summary>
		/// 得到一个对象实体
		/// </summary>
		public DataService.Model.electricity_data GetModel(string ElectricityId)
		{
			
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select ElectricityId,DeviceName,EH,P,Kvar,Ia,Ib,Ic,Ua,Ub,Uc,ServiceRating,CreateTime,EntireTime,Reserve1,Reserve2,Reserve3,Reserve4,Reserve5 from electricity_data ");
			strSql.Append(" where ElectricityId=@ElectricityId ");
			MySqlParameter[] parameters = {
					new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255)			};
			parameters[0].Value = ElectricityId;

			DataService.Model.electricity_data model=new DataService.Model.electricity_data();
			DataSet ds=DbHelperMySQL.Query(strSql.ToString(),parameters);
			if(ds.Tables[0].Rows.Count>0)
			{
				return DataRowToModel(ds.Tables[0].Rows[0]);
			}
			else
			{
				return null;
			}
		}


		/// <summary>
		/// 得到一个对象实体
		/// </summary>
		public DataService.Model.electricity_data DataRowToModel(DataRow row)
		{
			DataService.Model.electricity_data model=new DataService.Model.electricity_data();
			if (row != null)
			{
				if(row["ElectricityId"]!=null)
				{
					model.ElectricityId=row["ElectricityId"].ToString();
				}
				if(row["DeviceName"]!=null)
				{
					model.DeviceName=row["DeviceName"].ToString();
				}
				if(row["EH"]!=null && row["EH"].ToString()!="")
				{
					model.EH=decimal.Parse(row["EH"].ToString());
				}
				if(row["P"]!=null && row["P"].ToString()!="")
				{
					model.P=decimal.Parse(row["P"].ToString());
				}
				if(row["Kvar"]!=null && row["Kvar"].ToString()!="")
				{
					model.Kvar=decimal.Parse(row["Kvar"].ToString());
				}
				if(row["Ia"]!=null && row["Ia"].ToString()!="")
				{
					model.Ia=decimal.Parse(row["Ia"].ToString());
				}
				if(row["Ib"]!=null && row["Ib"].ToString()!="")
				{
					model.Ib=decimal.Parse(row["Ib"].ToString());
				}
				if(row["Ic"]!=null && row["Ic"].ToString()!="")
				{
					model.Ic=decimal.Parse(row["Ic"].ToString());
				}
				if(row["Ua"]!=null && row["Ua"].ToString()!="")
				{
					model.Ua=decimal.Parse(row["Ua"].ToString());
				}
				if(row["Ub"]!=null && row["Ub"].ToString()!="")
				{
					model.Ub=decimal.Parse(row["Ub"].ToString());
				}
				if(row["Uc"]!=null && row["Uc"].ToString()!="")
				{
					model.Uc=decimal.Parse(row["Uc"].ToString());
				}
				if(row["ServiceRating"]!=null && row["ServiceRating"].ToString()!="")
				{
					model.ServiceRating=decimal.Parse(row["ServiceRating"].ToString());
				}
				if(row["CreateTime"]!=null && row["CreateTime"].ToString()!="")
				{
					model.CreateTime=DateTime.Parse(row["CreateTime"].ToString());
				}
				if(row["EntireTime"]!=null && row["EntireTime"].ToString()!="")
				{
					model.EntireTime=DateTime.Parse(row["EntireTime"].ToString());
				}
				if(row["Reserve1"]!=null)
				{
					model.Reserve1=row["Reserve1"].ToString();
				}
				if(row["Reserve2"]!=null)
				{
					model.Reserve2=row["Reserve2"].ToString();
				}
				if(row["Reserve3"]!=null)
				{
					model.Reserve3=row["Reserve3"].ToString();
				}
				if(row["Reserve4"]!=null)
				{
					model.Reserve4=row["Reserve4"].ToString();
				}
				if(row["Reserve5"]!=null)
				{
					model.Reserve5=row["Reserve5"].ToString();
				}
			}
			return model;
		}

		/// <summary>
		/// 获得数据列表
		/// </summary>
		public DataSet GetList(string strWhere)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select ElectricityId,DeviceName,EH,P,Kvar,Ia,Ib,Ic,Ua,Ub,Uc,ServiceRating,CreateTime,EntireTime,Reserve1,Reserve2,Reserve3,Reserve4,Reserve5 ");
			strSql.Append(" FROM electricity_data ");
			if(strWhere.Trim()!="")
			{
				strSql.Append(" where "+strWhere);
			}
			return DbHelperMySQL.Query(strSql.ToString());
		}

		/// <summary>
		/// 获取记录总数
		/// </summary>
		public int GetRecordCount(string strWhere)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select count(1) FROM electricity_data ");
			if(strWhere.Trim()!="")
			{
				strSql.Append(" where "+strWhere);
			}
			object obj = DbHelperSQL.GetSingle(strSql.ToString());
			if (obj == null)
			{
				return 0;
			}
			else
			{
				return Convert.ToInt32(obj);
			}
		}
		/// <summary>
		/// 分页获取数据列表
		/// </summary>
		public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("SELECT * FROM ( ");
			strSql.Append(" SELECT ROW_NUMBER() OVER (");
			if (!string.IsNullOrEmpty(orderby.Trim()))
			{
				strSql.Append("order by T." + orderby );
			}
			else
			{
				strSql.Append("order by T.ElectricityId desc");
			}
			strSql.Append(")AS Row, T.*  from electricity_data T ");
			if (!string.IsNullOrEmpty(strWhere.Trim()))
			{
				strSql.Append(" WHERE " + strWhere);
			}
			strSql.Append(" ) TT");
			strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
			return DbHelperMySQL.Query(strSql.ToString());
		}

        /*
		/// <summary>
		/// 分页获取数据列表
		/// </summary>
		public DataSet GetList(int PageSize,int PageIndex,string strWhere)
		{
			MySqlParameter[] parameters = {
					new MySqlParameter("@tblName", MySqlDbType.VarChar, 255),
					new MySqlParameter("@fldName", MySqlDbType.VarChar, 255),
					new MySqlParameter("@PageSize", MySqlDbType.Int32),
					new MySqlParameter("@PageIndex", MySqlDbType.Int32),
					new MySqlParameter("@IsReCount", MySqlDbType.Bit),
					new MySqlParameter("@OrderType", MySqlDbType.Bit),
					new MySqlParameter("@strWhere", MySqlDbType.VarChar,1000),
					};
			parameters[0].Value = "electricity_data";
			parameters[1].Value = "ElectricityId";
			parameters[2].Value = PageSize;
			parameters[3].Value = PageIndex;
			parameters[4].Value = 0;
			parameters[5].Value = 0;
			parameters[6].Value = strWhere;	
			return DbHelperMySQL.RunProcedure("UP_GetRecordByPage",parameters,"ds");
		}*/

        #endregion  BasicMethod
        #region  ExtensionMethod
        /// <summary>
        /// 表是否存在
        /// </summary>
        /// <param name="dbName">数据库名</param>
        /// <param name="tableName">表名 格式:表名_yyyyMMdd</param>
        /// <returns></returns>
        public bool IsExistsTable(string dbName, string tableName)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append(string.Format("select count(1) from information_schema.tables where table_schema='{0}'  and table_name='{1}' ", dbName, tableName));
            return DbHelperMySQL.Exists(strSql.ToString());
        }

        /// <summary>
        /// 添加表
        /// </summary>
        /// <param name="date">日期 格式:yyyyMM</param>
        /// <returns></returns>
        public void CreateTable(string date)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("CREATE TABLE `electricity_data_" + date + "` (");
            strSql.Append("`ElectricityId` varchar(255) NOT NULL COMMENT '用电Id',");
            strSql.Append("`DeviceName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '设备名称',");
            strSql.Append("`EH` float(255,3) DEFAULT NULL COMMENT '用电量',");
            strSql.Append("`P` float(255,3) DEFAULT NULL COMMENT '实时负荷',");
            strSql.Append("`Kvar` float(255,3) DEFAULT NULL COMMENT '总无工功率',");
            strSql.Append("`Ia` float(255,3) DEFAULT NULL COMMENT 'A相电流',");
            strSql.Append("`Ib` float(255,3) DEFAULT NULL COMMENT 'B相电流',");
            strSql.Append("`Ic` float(255,3) DEFAULT NULL COMMENT 'C相电流',");
            strSql.Append("`Ua` float(255,3) DEFAULT NULL COMMENT 'A相电压',");
            strSql.Append("`Ub` float(255,3) DEFAULT NULL COMMENT 'B相电压',");
            strSql.Append("`Uc` float(255,3) DEFAULT NULL COMMENT 'C相电压',");
            strSql.Append("`ServiceRating` float(255,3) DEFAULT NULL COMMENT '运行功率',");
            strSql.Append("`CreateTime` datetime DEFAULT NULL COMMENT '添加时间',");
            strSql.Append("`EntireTime` datetime DEFAULT NULL COMMENT '整点时间',");
            strSql.Append("`Reserve1` varchar(255) DEFAULT NULL,");
            strSql.Append("`Reserve2` varchar(255) DEFAULT NULL,");
            strSql.Append("`Reserve3` varchar(255) DEFAULT NULL,");
            strSql.Append("`Reserve4` varchar(255) DEFAULT NULL,");
            strSql.Append("`Reserve5` varchar(255) DEFAULT NULL,");
            strSql.Append("PRIMARY KEY (`ElectricityId`)");
            strSql.Append(") ENGINE=InnoDB DEFAULT CHARSET=utf8;");
            DbHelperMySQL.ExecuteSql(strSql.ToString());
        }

        /// <summary>
        ///添加数据
        /// </summary>
        /// <param name="model"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public bool AddDate(DataService.Model.electricity_data model, string date)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into electricity_data_" + date + "(");
            strSql.Append("ElectricityId,DeviceName,EH,P,Kvar,Ia,Ib,Ic,Ua,Ub,Uc,ServiceRating,CreateTime,EntireTime,Reserve1,Reserve2,Reserve3,Reserve4,Reserve5)");
            strSql.Append(" values (");
            strSql.Append("@ElectricityId,@DeviceName,@EH,@P,@Kvar,@Ia,@Ib,@Ic,@Ua,@Ub,@Uc,@ServiceRating,@CreateTime,@EntireTime,@Reserve1,@Reserve2,@Reserve3,@Reserve4,@Reserve5)");
            MySqlParameter[] parameters = {
                    new MySqlParameter("@ElectricityId", MySqlDbType.VarChar,255),
                    new MySqlParameter("@DeviceName", MySqlDbType.VarChar,255),
                    new MySqlParameter("@EH", MySqlDbType.Float,255),
                    new MySqlParameter("@P", MySqlDbType.Float,255),
                    new MySqlParameter("@Kvar", MySqlDbType.Float,255),
                    new MySqlParameter("@Ia", MySqlDbType.Float,255),
                    new MySqlParameter("@Ib", MySqlDbType.Float,255),
                    new MySqlParameter("@Ic", MySqlDbType.Float,255),
                    new MySqlParameter("@Ua", MySqlDbType.Float,255),
                    new MySqlParameter("@Ub", MySqlDbType.Float,255),
                    new MySqlParameter("@Uc", MySqlDbType.Float,255),
                    new MySqlParameter("@ServiceRating", MySqlDbType.Float,255),
                    new MySqlParameter("@CreateTime", MySqlDbType.DateTime),
                    new MySqlParameter("@EntireTime", MySqlDbType.DateTime),
                    new MySqlParameter("@Reserve1", MySqlDbType.VarChar,255),
                    new MySqlParameter("@Reserve2", MySqlDbType.VarChar,255),
                    new MySqlParameter("@Reserve3", MySqlDbType.VarChar,255),
                    new MySqlParameter("@Reserve4", MySqlDbType.VarChar,255),
                    new MySqlParameter("@Reserve5", MySqlDbType.VarChar,255)};
            parameters[0].Value = model.ElectricityId;
            parameters[1].Value = model.DeviceName;
            parameters[2].Value = model.EH;
            parameters[3].Value = model.P;
            parameters[4].Value = model.Kvar;
            parameters[5].Value = model.Ia;
            parameters[6].Value = model.Ib;
            parameters[7].Value = model.Ic;
            parameters[8].Value = model.Ua;
            parameters[9].Value = model.Ub;
            parameters[10].Value = model.Uc;
            parameters[11].Value = model.ServiceRating;
            parameters[12].Value = model.CreateTime;
            parameters[13].Value = model.EntireTime;
            parameters[14].Value = model.Reserve1;
            parameters[15].Value = model.Reserve2;
            parameters[16].Value = model.Reserve3;
            parameters[17].Value = model.Reserve4;
            parameters[18].Value = model.Reserve5;

            int rows = DbHelperMySQL.ExecuteSql(strSql.ToString(), parameters);
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 获得数据列表
        /// </summary>
        public DataSet GetListDate(string strWhere, string date)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select ElectricityId,DeviceName,EH,P,Kvar,Ia,Ib,Ic,Ua,Ub,Uc,ServiceRating,CreateTime,EntireTime,Reserve1,Reserve2,Reserve3,Reserve4,Reserve5 ");
            strSql.Append(" FROM electricity_data_" + date);
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            return DbHelperMySQL.Query(strSql.ToString());
        }

        /// <summary>
		/// 获取数据
		/// </summary>
		/// <param name="source">数据来源</param>
		/// <param name="strWhere">条件</param>
		/// <param name="timeField">时间字段</param>
		/// <returns></returns>
		public DataSet GetList(string source, string strWhere, string timeField)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM (" + source + ") as T ");
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            if (!string.IsNullOrEmpty(timeField))
            {
                strSql.Append("ORDER BY " + timeField + " ");
            }
            return DbHelperMySQL.Query(strSql.ToString(), 300);
        }

        /// <summary>
		/// 获取数据
		/// </summary>
		/// <param name="source">数据来源</param>
		/// <param name="strWhere">条件</param>
		/// <param name="sum_name">求和字段</param>
		/// <returns></returns>
		public decimal GetSum(string source, string strWhere, string sum_name)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT sum(" + sum_name + ") FROM (" + source + ") as T ");
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            object obj = DbHelperSQL.GetSingle(strSql.ToString(), 300);
            if (obj == null)
            {
                return 0;
            }
            else
            {
                return Convert.ToDecimal(obj);
            }
        }

        #endregion  ExtensionMethod

    }
}