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.
 
 
 
 
 
 

453 lines
24 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_ArgumentClass
/// </summary>
public partial class OTB_SYS_ArgumentClass : IOTB_SYS_ArgumentClass
{
public OTB_SYS_ArgumentClass()
{ }
#region Method
/// <summary>
/// 是否存在該記錄
/// </summary>
public bool Exists(string ArgumentClassID)
{
int rowsAffected;
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from OTB_SYS_ArgumentClass");
strSql.Append(" where ArgumentClassID=@ArgumentClassID ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10) };
parameters[0].Value = ArgumentClassID;
return DbHelperSQL.Exists(strSql.ToString(), parameters);
}
/// <summary>
/// 增加一條資料
/// </summary>
public bool Add(OT.Model.OTB_SYS_ArgumentClass model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" INSERT INTO [OTB_SYS_ArgumentClass]( ");
strSql.Append(" [ArgumentClassID],[ArgumentClassName],[MaxNumberClass],[MaxNumberCatData],[OrderByValue],[Effective],[DelStatus],[Memo],[CreateUser],[CreateDate],[ModifyUser],[ModifyDate] ");
strSql.Append(" )VALUES( ");
strSql.Append(" @ArgumentClassID,@ArgumentClassName,@MaxNumberClass,@MaxNumberCatData,@OrderByValue,@Effective,@DelStatus,@Memo,@CreateUser,getdate(),@CreateUser,getdate() ) ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10),
new SqlParameter("@ArgumentClassName", SqlDbType.NVarChar,200),
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("@MaxNumberClass", SqlDbType.VarChar,50),
new SqlParameter("@MaxNumberCatData", SqlDbType.VarChar,50),
new SqlParameter("@DelStatus", SqlDbType.Char,1)};
parameters[0].Value = model.ArgumentClassID;
parameters[1].Value = model.ArgumentClassName;
parameters[2].Value = model.OrderByValue;
parameters[3].Value = model.Effective;
parameters[4].Value = model.Memo;
parameters[5].Value = model.CreateUser;
parameters[6].Value = model.CreateDate;
parameters[7].Value = model.ModifyUser;
parameters[8].Value = model.ModifyDate;
parameters[9].Value = "";
parameters[10].Value = "";
parameters[11].Value = "N";
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[] 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.OldOrderByValue;
parametersChangeOrder[1].Value = model.OrderByValue;
parametersChangeOrder[2].Value = "OrderByValue";
parametersChangeOrder[3].Value = "OTB_SYS_ArgumentClass";
parametersChangeOrder[4].Value = "DelStatus='N' ";
CommandInfo o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
//o_CommandInfo.CommandText = "OSP_Common_UpdateOrderByValue";
o_CommandInfo.CommandText = strSql1.ToString();
o_CommandInfo.Parameters = parametersChangeOrder;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表新增,雖然參數名稱相同,但是經過new以後就是新的對象
//o_CommandInfo.CommandText = "OSP_OTB_SYS_ArgumentClass_ADD";
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_ArgumentClass model)
{
int rowsAffected = 0;
StringBuilder strSql = new StringBuilder();
strSql.Append(" UPDATE [OTB_SYS_ArgumentClass] SET ");
strSql.Append(" [ArgumentClassName] = @ArgumentClassName,[OrderByValue] = @OrderByValue,[Effective] = @Effective,[Memo] = @Memo,[ModifyUser] = @ModifyUser,[ModifyDate] = GETDATE() ");
strSql.Append(" WHERE ArgumentClassID=@ArgumentClassID ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10),
new SqlParameter("@ArgumentClassName", SqlDbType.NVarChar,200),
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.ArgumentClassID;
parameters[1].Value = model.ArgumentClassName;
parameters[2].Value = model.OrderByValue;
parameters[3].Value = model.Effective;
parameters[4].Value = model.Memo;
parameters[5].Value = model.CreateUser;
parameters[6].Value = model.CreateDate;
parameters[7].Value = model.ModifyUser;
parameters[8].Value = model.ModifyDate;
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 = model.OldOrderByValue;
parametersChangeOrder[1].Value = model.OrderByValue;
parametersChangeOrder[2].Value = "OrderByValue";
parametersChangeOrder[3].Value = "OTB_SYS_ArgumentClass";
parametersChangeOrder[4].Value = "DelStatus='N' ";
CommandInfo o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表修改
//o_CommandInfo.CommandText = "OSP_Common_UpdateOrderByValue";
o_CommandInfo.CommandText = strSql2.ToString();
o_CommandInfo.Parameters = parametersChangeOrder;
lstCommandInfo.Add(o_CommandInfo); //添加當前的SQL
o_CommandInfo = new CommandInfo(); //定義每一個SQL,代表新增,雖然參數名稱相同,但是經過new以後就是新的對象
//o_CommandInfo.CommandText = "OSP_OTB_SYS_ArgumentClass_Update";
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 int Delete(string strArgumentClassID, string OrderByValue, string OrderByValueCount)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" DECLARE @rowsAff INT ");
strSql.Append(" DECLARE @TempID INT ");
strSql.Append(" DECLARE @OrderByValue INT ");
strSql.Append(" SET @rowsAff=0 ");
strSql.Append(" SELECT @OrderByValue = OrderByValue ");
strSql.Append(" FROM [OTB_SYS_ArgumentClass] ");
strSql.Append(" WHERE ArgumentClassID = '0001' ");
strSql.Append(" SELECT @TempID = COUNT(1) ");
strSql.Append(" FROM [OTB_SYS_Arguments] ");
strSql.Append(" WHERE ArgumentClassID = @ArgumentClassID ");
strSql.Append(" PRINT @TempID ");
strSql.Append(" IF @TempID > 0 ");
strSql.Append(" BEGIN ");
strSql.Append(" SELECT -1 ");
strSql.Append(" END ");
strSql.Append(" ELSE ");
strSql.Append(" BEGIN ");
strSql.Append(" UPDATE [OTB_SYS_ArgumentClass] ");
strSql.Append(" SET [DelStatus] = 'Y' ");
strSql.Append(" WHERE ArgumentClassID = @ArgumentClassID ");
strSql.Append(" SET @rowsAff+=@@rowcount ");
strSql.Append(" PRINT @rowsAff ");
strSql.Append(" UPDATE [OTB_SYS_Arguments] ");
strSql.Append(" SET [DelStatus] = 'Y' ");
strSql.Append(" WHERE ArgumentClassID = @ArgumentClassID ");
strSql.Append(" SET @rowsAff+=@@rowcount ");
strSql.Append(" PRINT @rowsAff ");
strSql.Append(" UPDATE [OTB_SYS_ArgumentClass] ");
strSql.Append(" SET OrderByValue = ISNULL(OrderByValue, 1) - 1 ");
strSql.Append(" WHERE OrderByValue > @OrderByValue ");
strSql.Append(" SET @rowsAff+=@@rowcount ");
strSql.Append(" PRINT @rowsAff ");
strSql.Append(" SELECT @rowsAff ");
strSql.Append(" END ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10)};
parameters[0].Value = strArgumentClassID;
int rowsAffected = 0;
DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[0].Rows.Count > 0)
{
rowsAffected = int.Parse(ds.Tables[0].Rows[0][0].ToString());
}
else
{
rowsAffected = 0;
}
return rowsAffected;
}
/// <summary>
/// 批量刪除資料
/// </summary>
public bool DeleteList(string ArgumentClassIDlist)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from SYS_ArgumentClass ");
strSql.Append(" where ArgumentClassID in (" + ArgumentClassIDlist + ") ");
int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 得到一個對象實體
/// </summary>
public OT.Model.OTB_SYS_ArgumentClass GetModel(string ArgumentClassID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 ArgumentClassID,ArgumentClassName,MaxNumberClass,MaxNumberCatData,OrderByValue,Effective,DelStatus,Memo,CreateUser,CreateDate,ModifyUser,ModifyDate from OTB_SYS_ArgumentClass ");
strSql.Append(" where ArgumentClassID=@ArgumentClassID ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10) };
parameters[0].Value = ArgumentClassID;
OT.Model.OTB_SYS_ArgumentClass model = new OT.Model.OTB_SYS_ArgumentClass();
DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[0].Rows.Count > 0)
{
return DataRowToModel(ds.Tables[0].Rows[0]);
}
else
{
return null;
}
}
/// <summary>
/// 得到一個對象實體
/// </summary>
public OT.Model.OTB_SYS_ArgumentClass DataRowToModel(DataRow row)
{
OT.Model.OTB_SYS_ArgumentClass model = new OT.Model.OTB_SYS_ArgumentClass();
if (row != null)
{
if (row["ArgumentClassID"] != null)
{
model.ArgumentClassID = row["ArgumentClassID"].ToString();
}
if (row["ArgumentClassName"] != null)
{
model.ArgumentClassName = row["ArgumentClassName"].ToString();
}
if (row["OrderByValue"] != null && row["OrderByValue"].ToString() != "")
{
model.OrderByValue = int.Parse(row["OrderByValue"].ToString());
}
if (row["Effective"] != null)
{
model.Effective = row["Effective"].ToString();
}
if (row["Memo"] != null)
{
model.Memo = row["Memo"].ToString();
}
if (row["CreateUser"] != null)
{
model.CreateUser = row["CreateUser"].ToString();
}
if (row["CreateDate"] != null && row["CreateDate"].ToString() != "")
{
model.CreateDate = DateTime.Parse(row["CreateDate"].ToString());
}
if (row["ModifyUser"] != null)
{
model.ModifyUser = row["ModifyUser"].ToString();
}
if (row["ModifyDate"] != null && row["ModifyDate"].ToString() != "")
{
model.ModifyDate = DateTime.Parse(row["ModifyDate"].ToString());
}
}
return model;
}
/// <summary>
/// 獲得資料列表
/// </summary>
public DataSet GetList(int StartRecordIndex, int EndRecordIndex, string ArgumentClassID, string ArgumentClassName, string Effective, string SortExpression)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" SELECT RowId,ArgumentClassID,ArgumentClassName,Effective,OrderByValue ");
strSql.Append(" ,(SELECT COUNT(0) FROM [OTB_SYS_ArgumentClass] WHERE [DelStatus] = 'N') AS ClassCount ");
strSql.Append(" FROM ");
strSql.Append(" ( ");
strSql.Append(" SELECT ");
strSql.Append(" CASE @SortExpression WHEN N'ArgumentClassID' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY ArgumentClassID)) ");
strSql.Append(" WHEN N'ArgumentClassID DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY ArgumentClassID DESC)) ");
strSql.Append(" WHEN N'ArgumentClassName' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY ArgumentClassName)) ");
strSql.Append(" WHEN N'ArgumentClassName DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY ArgumentClassName DESC)) ");
strSql.Append(" WHEN N'Effective' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY Effective)) ");
strSql.Append(" WHEN N'Effective DESC' THEN ");
strSql.Append(" (ROW_NUMBER() OVER(Order BY 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 OrderByValue)) ");
strSql.Append(" END AS RowId,ArgumentClassID,ArgumentClassName,Effective,OrderByValue ");
strSql.Append(" FROM [OTB_SYS_ArgumentClass] ");
strSql.Append(" WHERE (ArgumentClassID LIKE @ArgumentClassID OR @ArgumentClassID IS NULL OR @ArgumentClassID='' OR @ArgumentClassID = '%%') ");
strSql.Append(" AND (ArgumentClassName LIKE @ArgumentClassName OR @ArgumentClassName IS NULL OR @ArgumentClassName='' OR @ArgumentClassName='%%') ");
strSql.Append(" AND (Effective = @Effective OR @Effective IS NULL OR @Effective='') ");
strSql.Append(" AND [DelStatus] = 'N' ");
// strSql.Append(" AND ArgumentClassID <> '99999'"); //modfiy by Alina 20150728 可維護Text值,新增按鈕的值
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("@ArgumentClassID", SqlDbType.VarChar,10)
,new SqlParameter("@ArgumentClassName", 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 = "%" + ArgumentClassID + "%";
parameters[3].Value = "%" + ArgumentClassName + "%";
parameters[4].Value = Effective;
parameters[5].Value = SortExpression;
return DbHelperSQL.Query(strSql.ToString(), parameters);
}
/// <summary>
/// 獲得資料總筆數
/// </summary>
public int GetListCount(string ArgumentClassID, string ArgumentClassName, string Effective)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" SELECT ");
strSql.Append(" COUNT(0) ");
strSql.Append(" FROM [OTB_SYS_ArgumentClass] ");
strSql.Append(" WHERE (ArgumentClassID LIKE @ArgumentClassID OR @ArgumentClassID IS NULL OR @ArgumentClassID='' OR @ArgumentClassID = '%%') ");
strSql.Append(" AND (ArgumentClassName LIKE @ArgumentClassName OR @ArgumentClassName IS NULL OR @ArgumentClassName='' OR @ArgumentClassName='%%' ) ");
strSql.Append(" AND (Effective = @Effective OR @Effective IS NULL OR @Effective='') ");
strSql.Append(" AND [DelStatus] = 'N' ");
SqlParameter[] parameters = {
new SqlParameter("@ArgumentClassID", SqlDbType.VarChar,10)
,new SqlParameter("@ArgumentClassName", SqlDbType.NVarChar,200)
,new SqlParameter("@Effective", SqlDbType.Char,1)
};
parameters[0].Value = "%" + ArgumentClassID + "%";
parameters[1].Value = "%" + ArgumentClassName + "%";
parameters[2].Value = Effective;
return (int)DbHelperSQL.GetSingle(strSql.ToString(), parameters);
}
#endregion Method
}
}