You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

650 lines
43 KiB

using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using OT.IDAL;
using DBUtility;
using System.Collections.Generic;//Please add references
namespace OT.SQLServerDAL
{
/// <summary>
/// 数据访问类:OTB_SYS_Departments
/// </summary>
public partial class OTB_SYS_Departments : IOTB_SYS_Departments
{
public OTB_SYS_Departments()
{ }
#region Method
/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(string DepartmentID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from OTB_SYS_Departments");
strSql.Append(" where DepartmentID=@DepartmentID ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.VarChar,10) };
parameters[0].Value = DepartmentID;
return DbHelperSQL.Exists(strSql.ToString(), parameters);
}
/// <summary>
/// 增加一条数据
/// </summary>
public bool Add(OT.Model.OTB_SYS_Departments model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into OTB_SYS_Departments(");
strSql.Append("DepartmentID,DepartmentName,DepartmentShortName,ChiefOfDepartmentID,LevelOfDepartment,NameOfLevel,ParentDepartmentID,OrderByValue,Effective,Memo,CreateUser,CreateDate,ModifyUser,ModifyDate,DelStatus)");
strSql.Append(" values (");
strSql.Append("@DepartmentID,@DepartmentName,@DepartmentShortName,@ChiefOfDepartmentID,@LevelOfDepartment,@NameOfLevel,@ParentDepartmentID,@OrderByValue,@Effective,@Memo,@CreateUser,getdate(),@CreateUser,getdate(),'N')");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.VarChar,10),
new SqlParameter("@DepartmentName", SqlDbType.NVarChar,200),
new SqlParameter("@DepartmentShortName", SqlDbType.NVarChar,100),
new SqlParameter("@ChiefOfDepartmentID", SqlDbType.VarChar,50),
new SqlParameter("@LevelOfDepartment", SqlDbType.Int,4),
new SqlParameter("@NameOfLevel", SqlDbType.NVarChar,10),
new SqlParameter("@ParentDepartmentID", SqlDbType.VarChar,10),
new SqlParameter("@OrderByValue", SqlDbType.Int,4),
new SqlParameter("@Effective", SqlDbType.Char,1),
new SqlParameter("@Memo", SqlDbType.NVarChar),
new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
new SqlParameter("@CreateDate", SqlDbType.DateTime),
new SqlParameter("@ModifyUser", SqlDbType.VarChar,50),
new SqlParameter("@ModifyDate", SqlDbType.DateTime)};
parameters[0].Value = model.DepartmentID;
parameters[1].Value = model.DepartmentName;
parameters[2].Value = model.DepartmentShortName;
parameters[3].Value = model.ChiefOfDepartmentID;
parameters[4].Value = model.LevelOfDepartment;
parameters[5].Value = model.NameOfLevel;
parameters[6].Value = model.ParentDepartmentID;
parameters[7].Value = model.OrderByValue;
parameters[8].Value = model.Effective;
parameters[9].Value = model.Memo;
parameters[10].Value = model.CreateUser;
parameters[11].Value = model.CreateDate;
parameters[12].Value = model.ModifyUser;
parameters[13].Value = model.ModifyDate;
List<CommandInfo> lstCommandInfo = new List<CommandInfo>(); //定義事物執行的所有SQL
StringBuilder strSql1 = new StringBuilder();
strSql1.Append(" DECLARE @strSQL NVARCHAR(1000) ");
strSql1.Append(" BEGIN ");
strSql1.Append(" PRINT @NewOrderByValue ");
strSql1.Append(" PRINT @OldOrderByValue ");
strSql1.Append(" IF CONVERT(INT, @NewOrderByValue) > CONVERT(INT,@OldOrderByValue) ");
strSql1.Append(" BEGIN ");
strSql1.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql1.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) - 1 ");
strSql1.Append(" WHERE '+@FeildName+' >= '+@OldOrderByValue + ' AND '+@FeildName+'<='+@NewOrderByValue+' ' ");
strSql1.Append(" IF @Where <>'' ");
strSql1.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql1.Append(" print @strSQL ");
strSql1.Append(" exec sp_executesql @strSQL ");
strSql1.Append(" END ");
strSql1.Append(" ELSE ");
strSql1.Append(" BEGIN ");
strSql1.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql1.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) + 1 ");
strSql1.Append(" WHERE '+@FeildName+' <= '+@OldOrderByValue + ' AND '+@FeildName+'>='+@NewOrderByValue+' ' ");
strSql1.Append(" IF @Where <>'' ");
strSql1.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql1.Append(" print @strSQL ");
strSql1.Append(" exec sp_executesql @strSQL ");
strSql1.Append(" END ");
strSql1.Append(" END ");
SqlParameter[] UpdataRow = {
new SqlParameter("@OldOrderByValue",SqlDbType.NVarChar,10),
new SqlParameter("@NewOrderByValue",SqlDbType.NVarChar,10),
new SqlParameter("@FeildName",SqlDbType.NVarChar,50),
new SqlParameter("@TableName",SqlDbType.NVarChar,50),
new SqlParameter("@Where",SqlDbType.NVarChar,500)
};
//設定參數值
UpdataRow[0].Value = model.OldOrderByValue;
UpdataRow[1].Value = model.OrderByValue;
UpdataRow[2].Value = "OrderByValue";
UpdataRow[3].Value = "OTB_SYS_Departments";
UpdataRow[4].Value = "ParentDepartmentID = '" + model.ParentDepartmentID + "' ";
//加入資料排序變動的SQL語法
CommandInfo o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
o_CommandInfo.CommandText = strSql1.ToString();
o_CommandInfo.Parameters = UpdataRow;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表新增,雖然參數名稱相同,但是經過new以後就是新的對象
o_CommandInfo.CommandText = strSql.ToString();
o_CommandInfo.Parameters = parameters;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
if (DbHelperSQL.ExecuteSqlTran(lstCommandInfo) > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(OT.Model.OTB_SYS_Departments model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update OTB_SYS_Departments set ");
strSql.Append("DepartmentName=@DepartmentName,");
strSql.Append("DepartmentShortName=@DepartmentShortName,");
strSql.Append("ChiefOfDepartmentID=@ChiefOfDepartmentID,");
strSql.Append("LevelOfDepartment=@LevelOfDepartment,");
strSql.Append("NameOfLevel=@NameOfLevel,");
strSql.Append("ParentDepartmentID=@ParentDepartmentID,");
strSql.Append("OrderByValue=@OrderByValue,");
strSql.Append("Effective=@Effective,");
strSql.Append("Memo=@Memo,");
strSql.Append("ModifyUser=@ModifyUser,");
strSql.Append("ModifyDate=getdate()");
strSql.Append(" where DepartmentID=@DepartmentID ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentName", SqlDbType.NVarChar,200),
new SqlParameter("@DepartmentShortName", SqlDbType.NVarChar,100),
new SqlParameter("@ChiefOfDepartmentID", SqlDbType.VarChar,50),
new SqlParameter("@LevelOfDepartment", SqlDbType.Int,4),
new SqlParameter("@NameOfLevel", SqlDbType.NVarChar,10),
new SqlParameter("@ParentDepartmentID", SqlDbType.VarChar,10),
new SqlParameter("@OrderByValue", SqlDbType.Int,4),
new SqlParameter("@Effective", SqlDbType.Char,1),
new SqlParameter("@Memo", SqlDbType.NVarChar),
new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
new SqlParameter("@CreateDate", SqlDbType.DateTime),
new SqlParameter("@ModifyUser", SqlDbType.VarChar,50),
new SqlParameter("@ModifyDate", SqlDbType.DateTime),
new SqlParameter("@DepartmentID", SqlDbType.VarChar,10)};
parameters[0].Value = model.DepartmentName;
parameters[1].Value = model.DepartmentShortName;
parameters[2].Value = model.ChiefOfDepartmentID;
parameters[3].Value = model.LevelOfDepartment;
parameters[4].Value = model.NameOfLevel;
parameters[5].Value = model.ParentDepartmentID;
parameters[6].Value = model.OrderByValue;
parameters[7].Value = model.Effective;
parameters[8].Value = model.Memo;
parameters[9].Value = model.CreateUser;
parameters[10].Value = model.CreateDate;
parameters[11].Value = model.ModifyUser;
parameters[12].Value = model.ModifyDate;
parameters[13].Value = model.DepartmentID;
List<CommandInfo> lstCommandInfo = new List<CommandInfo>(); //定義事物執行的所有SQL
StringBuilder strSql2 = new StringBuilder();
strSql2.Append(" DECLARE @strSQL NVARCHAR(1000) ");
strSql2.Append(" IF CONVERT(INT, @NewOrderByValue) > CONVERT(INT,@OldOrderByValue) ");
strSql2.Append(" BEGIN "); //由小變大,OLD<-1<=NEW
strSql2.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql2.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) - 1 ");
strSql2.Append(" WHERE '+@FeildName+' >= '+@OldOrderByValue + ' AND '+@FeildName+'<='+@NewOrderByValue+' ' ");
strSql2.Append(" IF @Where <>'' ");
strSql2.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql2.Append(" print @strSQL ");
strSql2.Append(" exec sp_executesql @strSQL ");
strSql2.Append(" END ");
strSql2.Append(" ELSE ");
strSql2.Append(" BEGIN "); //由大變小,@NewOrderByValue<=+1<@OldOrderByValue
strSql2.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql2.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) + 1 ");
strSql2.Append(" WHERE '+@FeildName+' <= '+@OldOrderByValue + ' AND '+@FeildName+'>='+@NewOrderByValue+' ' ");
strSql2.Append(" IF @Where <>'' ");
strSql2.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql2.Append(" print @strSQL ");
strSql2.Append(" exec sp_executesql @strSQL ");
strSql2.Append(" END ");
CommandInfo o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
if (model.ParentDepartmentID == model.ParentDepartmentID)
{
SqlParameter[] UpdataRow = {
new SqlParameter("@OldOrderByValue",SqlDbType.NVarChar,10),
new SqlParameter("@NewOrderByValue",SqlDbType.NVarChar,10),
new SqlParameter("@FeildName",SqlDbType.NVarChar,50),
new SqlParameter("@TableName",SqlDbType.NVarChar,50),
new SqlParameter("@Where",SqlDbType.NVarChar,500)
};
//設定參數值
UpdataRow[0].Value = model.OldOrderByValue;
UpdataRow[1].Value = model.OrderByValue;
UpdataRow[2].Value = "OrderByValue";
UpdataRow[3].Value = "OTB_SYS_Departments";
UpdataRow[4].Value = "ParentDepartmentID = '" + model.ParentDepartmentID + "' ";
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
o_CommandInfo.CommandText = strSql2.ToString();
o_CommandInfo.Parameters = UpdataRow;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
}
else
{
//有異動模組
//修改新模組的排序
SqlParameter[] parametersChangeOrder = {
new SqlParameter("@OldOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@NewOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@FeildName", SqlDbType.NVarChar,50),
new SqlParameter("@TableName", SqlDbType.NVarChar,50),
new SqlParameter("@Where", SqlDbType.NVarChar,500)};
parametersChangeOrder[0].Value = model.NewModuleMaxNo;
parametersChangeOrder[1].Value = model.OrderByValue;
parametersChangeOrder[2].Value = "OrderByValue";
parametersChangeOrder[3].Value = "OTB_SYS_Departments";
parametersChangeOrder[4].Value = "ParentDepartmentID = '" + model.ParentDepartmentID + "'";
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
o_CommandInfo.CommandText = strSql2.ToString();
o_CommandInfo.Parameters = parametersChangeOrder;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
//修改舊模組的排序
SqlParameter[] parametersChangeOrderOld = {
new SqlParameter("@OldOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@NewOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@FeildName", SqlDbType.NVarChar,50),
new SqlParameter("@TableName", SqlDbType.NVarChar,50),
new SqlParameter("@Where", SqlDbType.NVarChar,500)};
parametersChangeOrderOld[0].Value = model.OldOrderByValue;
parametersChangeOrderOld[1].Value = model.OldModuleMaxNo;
parametersChangeOrderOld[2].Value = "OrderByValue";
parametersChangeOrderOld[3].Value = "OTB_SYS_Departments";
parametersChangeOrderOld[4].Value = "ParentDepartmentID = '" + model.ModuleIDOld + "' ";
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
o_CommandInfo.CommandText = strSql2.ToString();
o_CommandInfo.Parameters = parametersChangeOrderOld;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
}
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表新增,雖然參數名稱相同,但是經過new以後就是新的對象
o_CommandInfo.CommandText = strSql.ToString();
o_CommandInfo.Parameters = parameters;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
if (DbHelperSQL.ExecuteSqlTran(lstCommandInfo) > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(string PID, string DepartmentID, string OldOrderByValue, string OrderByValue)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" UPDATE dbo.OTB_SYS_Departments ");
strSql.Append(" SET [DelStatus] = 'Y' ");
strSql.Append(" WHERE DepartmentID=@DepartmentID ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.VarChar,10) };
parameters[0].Value = DepartmentID;
List<CommandInfo> lstCommandInfo = new List<CommandInfo>(); //定義事物執行的所有SQL
StringBuilder strSql2 = new StringBuilder();
strSql2.Append(" DECLARE @strSQL NVARCHAR(1000) ");
strSql2.Append(" IF CONVERT(INT, @NewOrderByValue) > CONVERT(INT,@OldOrderByValue) ");
strSql2.Append(" BEGIN "); //由小變大,OLD<-1<=NEW
strSql2.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql2.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) - 1 ");
strSql2.Append(" WHERE '+@FeildName+' >= '+@OldOrderByValue + ' AND '+@FeildName+'<='+@NewOrderByValue+' ' ");
strSql2.Append(" IF @Where <>'' ");
strSql2.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql2.Append(" print @strSQL ");
strSql2.Append(" exec sp_executesql @strSQL ");
strSql2.Append(" END ");
strSql2.Append(" ELSE ");
strSql2.Append(" BEGIN "); //由大變小,@NewOrderByValue<=+1<@OldOrderByValue
strSql2.Append(" SET @strSQL=N'UPDATE '+@TableName+' ");
strSql2.Append(" SET '+@FeildName+' = ISNULL('+@FeildName+',0) + 1 ");
strSql2.Append(" WHERE '+@FeildName+' <= '+@OldOrderByValue + ' AND '+@FeildName+'>='+@NewOrderByValue+' ' ");
strSql2.Append(" IF @Where <>'' ");
strSql2.Append(" SET @strSQL =@strSQL + ' AND ' + @Where ");
strSql2.Append(" print @strSQL ");
strSql2.Append(" exec sp_executesql @strSQL ");
strSql2.Append(" END ");
SqlParameter[] parametersChangeOrder = {
new SqlParameter("@OldOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@NewOrderByValue", SqlDbType.NVarChar,10),
new SqlParameter("@FeildName", SqlDbType.NVarChar,50),
new SqlParameter("@TableName", SqlDbType.NVarChar,50),
new SqlParameter("@Where", SqlDbType.NVarChar,500)};
parametersChangeOrder[0].Value = OldOrderByValue;
parametersChangeOrder[1].Value = OrderByValue;
parametersChangeOrder[2].Value = "OrderByValue";
parametersChangeOrder[3].Value = "OTB_SYS_Departments";
parametersChangeOrder[4].Value = "ISNULL(DelStatus,'N') = 'N' and ParentDepartmentID=" + "'" + PID + "'";
CommandInfo o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
o_CommandInfo.CommandText = strSql2.ToString();
o_CommandInfo.Parameters = parametersChangeOrder;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表新增,雖然參數名稱相同,但是經過new以後就是新的對象
o_CommandInfo.CommandText = strSql.ToString();
o_CommandInfo.Parameters = parameters;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
if (DbHelperSQL.ExecuteSqlTran(lstCommandInfo) > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 批量删除数据
/// </summary>
public bool DeleteList(string DepartmentIDlist)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from OTB_SYS_Departments ");
strSql.Append(" where DepartmentID in (" + DepartmentIDlist + ") ");
int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 得到一个对象实体
/// </summary>
public OT.Model.OTB_SYS_Departments GetModel(string DepartmentID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 DepartmentID,DepartmentName,DepartmentShortName,ChiefOfDepartmentID,LevelOfDepartment,NameOfLevel,ParentDepartmentID,OrderByValue,Effective,Memo,CreateUser,CreateDate,ModifyUser,ModifyDate from OTB_SYS_Departments ");
strSql.Append(" where DepartmentID=@DepartmentID ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.VarChar,10) };
parameters[0].Value = DepartmentID;
OT.Model.OTB_SYS_Departments model = new OT.Model.OTB_SYS_Departments();
DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["DepartmentID"] != null && ds.Tables[0].Rows[0]["DepartmentID"].ToString() != "")
{
model.DepartmentID = ds.Tables[0].Rows[0]["DepartmentID"].ToString();
}
if (ds.Tables[0].Rows[0]["DepartmentName"] != null && ds.Tables[0].Rows[0]["DepartmentName"].ToString() != "")
{
model.DepartmentName = ds.Tables[0].Rows[0]["DepartmentName"].ToString();
}
if (ds.Tables[0].Rows[0]["DepartmentShortName"] != null && ds.Tables[0].Rows[0]["DepartmentShortName"].ToString() != "")
{
model.DepartmentShortName = ds.Tables[0].Rows[0]["DepartmentShortName"].ToString();
}
if (ds.Tables[0].Rows[0]["ChiefOfDepartmentID"] != null && ds.Tables[0].Rows[0]["ChiefOfDepartmentID"].ToString() != "")
{
model.ChiefOfDepartmentID = ds.Tables[0].Rows[0]["ChiefOfDepartmentID"].ToString();
}
if (ds.Tables[0].Rows[0]["LevelOfDepartment"] != null && ds.Tables[0].Rows[0]["LevelOfDepartment"].ToString() != "")
{
model.LevelOfDepartment = int.Parse(ds.Tables[0].Rows[0]["LevelOfDepartment"].ToString());
}
if (ds.Tables[0].Rows[0]["NameOfLevel"] != null && ds.Tables[0].Rows[0]["NameOfLevel"].ToString() != "")
{
model.NameOfLevel = ds.Tables[0].Rows[0]["NameOfLevel"].ToString();
}
if (ds.Tables[0].Rows[0]["ParentDepartmentID"] != null && ds.Tables[0].Rows[0]["ParentDepartmentID"].ToString() != "")
{
model.ParentDepartmentID = ds.Tables[0].Rows[0]["ParentDepartmentID"].ToString();
}
if (ds.Tables[0].Rows[0]["OrderByValue"] != null && ds.Tables[0].Rows[0]["OrderByValue"].ToString() != "")
{
model.OrderByValue = int.Parse(ds.Tables[0].Rows[0]["OrderByValue"].ToString());
}
if (ds.Tables[0].Rows[0]["Effective"] != null && ds.Tables[0].Rows[0]["Effective"].ToString() != "")
{
model.Effective = ds.Tables[0].Rows[0]["Effective"].ToString();
}
if (ds.Tables[0].Rows[0]["Memo"] != null && ds.Tables[0].Rows[0]["Memo"].ToString() != "")
{
model.Memo = ds.Tables[0].Rows[0]["Memo"].ToString();
}
if (ds.Tables[0].Rows[0]["CreateUser"] != null && ds.Tables[0].Rows[0]["CreateUser"].ToString() != "")
{
model.CreateUser = ds.Tables[0].Rows[0]["CreateUser"].ToString();
}
if (ds.Tables[0].Rows[0]["CreateDate"] != null && ds.Tables[0].Rows[0]["CreateDate"].ToString() != "")
{
model.CreateDate = DateTime.Parse(ds.Tables[0].Rows[0]["CreateDate"].ToString());
}
if (ds.Tables[0].Rows[0]["ModifyUser"] != null && ds.Tables[0].Rows[0]["ModifyUser"].ToString() != "")
{
model.ModifyUser = ds.Tables[0].Rows[0]["ModifyUser"].ToString();
}
if (ds.Tables[0].Rows[0]["ModifyDate"] != null && ds.Tables[0].Rows[0]["ModifyDate"].ToString() != "")
{
model.ModifyDate = DateTime.Parse(ds.Tables[0].Rows[0]["ModifyDate"].ToString());
}
return model;
}
else
{
return null;
}
}
/// <summary>
/// 獲得資料列表
/// </summary>
public DataSet GetList(int StartRecordIndex, int EndRecordIndex, string DepartmentID, string DepartmentName, string Effective, string SortExpression)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" SELECT ");
strSql.Append(" RowId ");
strSql.Append(" ,DepartmentID ");
strSql.Append(" ,DepartmentName ");
strSql.Append(" ,DepartmentShortName ");
strSql.Append(" ,ChiefOfDepartmentID ");
strSql.Append(" ,Effective ");
strSql.Append(" ,OrderByValue ");
strSql.Append(" ,ParentDepartmentID ");
strSql.Append(" ,(SELECT COUNT(0) FROM [OTB_SYS_Departments] WHERE ParentDepartmentID=AA.ParentDepartmentID ) AS ClassCount ");
strSql.Append(" FROM ");
strSql.Append(" ( ");
strSql.Append(" SELECT ");
strSql.Append(" CASE @SortExpression ");
strSql.Append(" WHEN N'DepartmentID' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY a.DepartmentID)) ");
strSql.Append(" WHEN N'DepartmentID DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY a.DepartmentID DESC)) ");
strSql.Append(" WHEN N'DepartmentName' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY DepartmentName)) ");
strSql.Append(" WHEN N'DepartmentName DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY DepartmentName DESC)) ");
strSql.Append(" WHEN N'DepartmentShortName' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY DepartmentShortName)) ");
strSql.Append(" WHEN N'DepartmentShortName DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY DepartmentShortName DESC)) ");
strSql.Append(" WHEN N'ChiefOfDepartmentID' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY MS.MemberName)) ");
strSql.Append(" WHEN N'ChiefOfDepartmentID DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY MS.MemberName DESC)) ");
strSql.Append(" WHEN N'Effective' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY a.Effective )) ");
strSql.Append(" WHEN N'Effective DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY a.Effective DESC)) ");
strSql.Append(" WHEN N'OrderByValue' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY OrderByValue)) ");
strSql.Append(" WHEN N'OrderByValue DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY OrderByValue DESC)) ");
strSql.Append(" ELSE ");
strSql.Append(" (ROW_NUMBER() OVER(order BY ParentDepartmentID,OrderByValue)) ");
strSql.Append(" END AS RowId ");
strSql.Append(" ,a.DepartmentID ");
strSql.Append(" ,DepartmentName ");
strSql.Append(" ,DepartmentShortName ");
strSql.Append(" ,MS.MemberName as ChiefOfDepartmentID ");
strSql.Append(" ,a.Effective ");
strSql.Append(" ,OrderByValue ");
strSql.Append(" ,a.ParentDepartmentID ");
strSql.Append(" FROM [OTB_SYS_Departments] AS a LEFT JOIN dbo.OTB_SYS_Members AS MS ON a.ChiefOfDepartmentID = MS.MemberID ");
strSql.Append(" WHERE ");
strSql.Append(" (a.DepartmentID LIKE @DepartmentID OR @DepartmentID IS NULL OR @DepartmentID='%%') ");
strSql.Append(" AND (DepartmentName LIKE @DepartmentName OR @DepartmentName IS NULL OR @DepartmentName='%%') ");
strSql.Append(" AND (a.Effective = @Effective OR @Effective IS NULL OR @Effective='') ");
strSql.Append(" AND DelStatus='N' ");
strSql.Append(" ) AS AA ");
strSql.Append(" WHERE AA.RowId>=@StartRecordIndex AND AA.RowId<=@EndRecordIndex ");
strSql.Append(" ORDER BY RowId ");
SqlParameter[] parameters = {
new SqlParameter("@StartRecordIndex", SqlDbType.Int)
,new SqlParameter("@EndRecordIndex", SqlDbType.Int)
,new SqlParameter("@DepartmentID", SqlDbType.NVarChar,10)
,new SqlParameter("@DepartmentName", SqlDbType.NVarChar,200)
,new SqlParameter("@Effective", SqlDbType.Char,1)
,new SqlParameter("@SortExpression", SqlDbType.NVarChar,500)
};
parameters[0].Value = StartRecordIndex;
parameters[1].Value = EndRecordIndex;
parameters[2].Value = "%" + DepartmentID + "%";
parameters[3].Value = "%" + DepartmentName + "%";
parameters[4].Value = Effective;
parameters[5].Value = SortExpression;
return DbHelperSQL.Query(strSql.ToString(), parameters);
}
/// <summary>
/// 獲得資料總筆數
/// </summary>
public int GetListCount(string DepartmentID, string DepartmentName, string Effective)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" SELECT COUNT(0) FROM dbo.OTB_SYS_Departments AS tb LEFT JOIN dbo.OTB_SYS_Members AS MS ON tb.ChiefOfDepartmentID = MS.MemberID ");
strSql.Append(" WHERE ");
strSql.Append(" (tb.DepartmentID LIKE @DepartmentID OR @DepartmentID='%%') ");
strSql.Append(" AND (tb.DepartmentName LIKE @DepartmentName OR @DepartmentName='%%' ) ");
strSql.Append(" AND (tb.Effective = @Effective OR @Effective='' OR @Effective IS NULL) ");
strSql.Append(" AND DelStatus='N' ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.NVarChar,10)
,new SqlParameter("@DepartmentName", SqlDbType.NVarChar,50)
,new SqlParameter("@Effective", SqlDbType.Char,1)
};
parameters[0].Value = "%" + DepartmentID + "%";
parameters[1].Value = "%" + DepartmentName + "%";
parameters[2].Value = Effective;
return (int)DbHelperSQL.GetSingle(strSql.ToString(), parameters);
}
/// <summary>
/// 獲得資料列表
/// </summary>
public DataSet GetParentID(string DepartmentID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" WITH ViewList ( DepartmentID, ParentDepartmentID, Level, AccountNameSort, DelStatus, OrderByValue ) ");
strSql.Append(" AS ( SELECT DepartmentID , ");
strSql.Append(" ParentDepartmentID , ");
strSql.Append(" 0 , ");
strSql.Append(" CONVERT(NVARCHAR(200), DepartmentName) , ");
strSql.Append(" DelStatus , ");
strSql.Append(" CAST(OrderByValue AS VARCHAR(MAX)) AS OrderByValue ");
strSql.Append(" FROM OTB_SYS_Departments ");
strSql.Append(" WHERE ( ParentDepartmentID IS NULL ");
strSql.Append(" OR ParentDepartmentID = '' ");
strSql.Append(" ) ");
strSql.Append(" AND DelStatus = 'N' ");
strSql.Append(" ");
strSql.Append(" AND Effective = 'Y' ");
strSql.Append(" UNION ALL ");
strSql.Append(" SELECT P.DepartmentID , ");
strSql.Append(" ");
strSql.Append(" P.ParentDepartmentID , ");
strSql.Append(" B.Level + 1 , ");
strSql.Append(" CONVERT(NVARCHAR(200), B.AccountNameSort + '-' ");
strSql.Append(" + P.DepartmentName) , ");
strSql.Append(" P.DelStatus , ");
strSql.Append(" CAST(CAST(B.OrderByValue AS VARCHAR(8)) ");
strSql.Append(" + CAST(P.OrderByValue AS VARCHAR(8)) AS VARCHAR(MAX)) AS OrderByValue ");
strSql.Append(" FROM OTB_SYS_Departments P , ");
strSql.Append(" ViewList B ");
strSql.Append(" WHERE P.ParentDepartmentID = B.DepartmentID ");
strSql.Append(" AND B.DelStatus = 'N' ");
strSql.Append(" AND Effective = 'Y' ");
strSql.Append(" AND P.DelStatus = 'N' ");
strSql.Append(" ");
strSql.Append(" AND p.ParentDepartmentID <> p.DepartmentID ");
strSql.Append(" ), ");
strSql.Append(" ViewList1 ( DepartmentID ) ");
strSql.Append(" AS ( SELECT DepartmentID ");
strSql.Append(" FROM OTB_SYS_Departments ");
strSql.Append(" WHERE DepartmentID = @DepartmentID ");
strSql.Append(" ");
strSql.Append(" UNION ALL ");
strSql.Append(" SELECT P.DepartmentID ");
strSql.Append(" FROM OTB_SYS_Departments P , ");
strSql.Append(" ViewList1 B ");
strSql.Append(" WHERE P.ParentDepartmentID = B.DepartmentID ");
strSql.Append(" AND p.ParentDepartmentID <> p.DepartmentID ");
strSql.Append(" ) ");
strSql.Append(" SELECT * ");
strSql.Append(" FROM ViewList ");
strSql.Append(" WHERE DepartmentID NOT IN ( SELECT DepartmentID ");
strSql.Append(" FROM ViewList1 ) ");
strSql.Append(" ORDER BY OrderByValue ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.NVarChar,10)
};
parameters[0].Value = DepartmentID;
return DbHelperSQL.Query(strSql.ToString(), parameters);
}
public int GetDeptCountByParent(string DepartmentID, string ParentDepartmentID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" SELECT COUNT(0)FROM dbo.OTB_SYS_Departments ");
strSql.Append(" WHERE DepartmentID<>@DepartmentID ");
strSql.Append(" AND DelStatus='N' ");
strSql.Append(" AND (ParentDepartmentID = @ParentDepartmentID OR @ParentDepartmentID='') ");
SqlParameter[] parameters = {
new SqlParameter("@DepartmentID", SqlDbType.NVarChar,10)
,new SqlParameter("@ParentDepartmentID", SqlDbType.NVarChar,10)
};
parameters[0].Value = DepartmentID;
parameters[1].Value = ParentDepartmentID;
return (int)DbHelperSQL.GetSingle(strSql.ToString(), parameters);
}
#endregion Method
}
}