using System; using System.Data; using System.Data.SqlClient; using DSWeb.Models; using WebSqlHelper; namespace DSWeb.EntityDA { public class WorkFlowDA { private const string PARM_WORKFLOW_GID = "@gid"; private const string PARM_WORKFLOW_NAME = "@name"; private const string PARM_WORKFLOW_DESCRIPTION = "@description"; private const string PARM_WORKFLOW_MODULE_ID = "@module_id"; private const string PARM_WORKFLOW_TYPE = "@type"; private const string PARM_WORKFLOW_CREATE_USER = "@create_user"; private const string PARM_WORKFLOW_CREATE_TIME = "@create_time"; private const string PARM_WORKFLOW_MODIFIED_USER = "@modified_user"; private const string PARM_WORKFLOW_MODIFIED_TIME = "@modified_time"; private const string PARM_WORKFLOW_STATE = "@state"; private const string PARM_WORKFLOW_SORT = "@sort"; private const string PARM_WORKFLOW_COMPANY_ID = "@company_id"; //private const string PARM_WORKFLOW_REMARK = "@remark"; private const string SQL_SELECT_WORKFLOW_BY_GID = "SELECT GID, NAME, DESCRIPTION, MODULEID, TYPE, CREATEUSER, CREATETIME, MODIFIEDUSER, MODIFIEDTIME, STATE, SORT, ISDELETE,COMPANYID FROM workflow WHERE GID = @gid"; private const string SQL_SELECT_WORKFLOW_BY_MODULEID = "SELECT GID, NAME, DESCRIPTION, MODULEID, TYPE, CREATEUSER, CREATETIME, MODIFIEDUSER, MODIFIEDTIME, STATE, SORT, ISDELETE FROM workflow WHERE MODULEID = @module_id"; private const string SQL_SELECT_WORKFLOW_BY_TYPE_AND_COMPANYID = "SELECT GID, NAME, DESCRIPTION, MODULEID, TYPE, CREATEUSER, CREATETIME, MODIFIEDUSER, MODIFIEDTIME, STATE, SORT, ISDELETE,COMPANYID FROM workflow WHERE TYPE = @type AND ISNULL(COMPANYID,'') = @company_id "; private const string SQL_INSERT_WORKFLOW = " INSERT workflow(GID, NAME, DESCRIPTION, MODULEID, TYPE, CREATEUSER, CREATETIME,STATE, SORT, ISDELETE,COMPANYID) " + " VALUES(@gid,@name,@description,@module_id,@type,@create_user,GETDATE(),@state,@sort,0,@company_id) "; private const string SQL_UPDATE_WORKFLOW = " UPDATE workflow SET NAME = @name,DESCRIPTION = @description,MODULEID = @module_id,TYPE = @type,MODIFIEDUSER = @modified_user," + " MODIFIEDTIME = GETDATE(),STATE = @state,SORT = @sort,COMPANYID = @company_id WHERE GID = @gid "; private const string SQL_SELECT_WORKFLOW_COMPANYID_AND_TYPE = " SELECT COUNT(*) FROM workflow WHERE TYPE = @type AND COMPANYID = @company_id AND ISNULL(ISDELETE,0) <> 1 "; private const string SQL_SELECT_WORKFLOW_COMPANYID_AND_TYPE_GID = " SELECT COUNT(*) FROM workflow WHERE TYPE = @type AND COMPANYID = @company_id AND GID <> @gid AND ISNULL(ISDELETE,0) <> 1 "; private const string SQL_Delete_WORKFLOW_By_GID = "delete from workflow where gid=@gid"; private const string SQL_Update_WORKFLOW_SetDelete_By_GID = "update workflow set isdelete=1 where gid=@gid"; #region 更新工作流信息 /// /// 更新工作流信息 /// /// 工作流实体类 /// 值1表示更新成功 值不等于1表示更新失败 public int DeleteWorkFlowByID(string tempWorkFlowID,int iType ) { int iResult = 0; using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction)) { SqlParameter[] updateParms = new SqlParameter[] { new SqlParameter(PARM_WORKFLOW_GID,SqlDbType.VarChar,36) }; updateParms[0].Value = tempWorkFlowID; try { if (iType == 0) { //工作流已经生效,可以设置isdelete=1 iResult = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, SQL_Update_WORKFLOW_SetDelete_By_GID, updateParms); } else if (iType == 1) { //工作流没有生效,可直接删除 iResult = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, SQL_Delete_WORKFLOW_By_GID, updateParms); } } catch (Exception error) { iResult = -1;//插入操作异常 throw error; } } return iResult; } #endregion #region 更新工作流信息 /// /// 更新工作流信息 /// /// 工作流实体类 /// 值1表示更新成功 值不等于1表示更新失败 public int UpdateWorkFlow(WorkFlowEntity tempWorkFlowEntity) { int iResult = 0; using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction)) { SqlParameter[] updateParms = new SqlParameter[] { new SqlParameter(PARM_WORKFLOW_GID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_NAME,SqlDbType.VarChar,50), new SqlParameter(PARM_WORKFLOW_DESCRIPTION,SqlDbType.VarChar,50), new SqlParameter(PARM_WORKFLOW_MODULE_ID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_TYPE,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_MODIFIED_USER,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_STATE,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_SORT,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_COMPANY_ID,SqlDbType.VarChar,36) }; updateParms[0].Value = tempWorkFlowEntity.GID; updateParms[1].Value = tempWorkFlowEntity.Name; updateParms[2].Value = tempWorkFlowEntity.Description; updateParms[3].Value = tempWorkFlowEntity.ModuleID; updateParms[4].Value = tempWorkFlowEntity.Type; updateParms[5].Value = tempWorkFlowEntity.ModifiedUser; updateParms[6].Value = tempWorkFlowEntity.State; updateParms[7].Value = tempWorkFlowEntity.Sort; updateParms[8].Value = tempWorkFlowEntity.CompanyID; try { iResult = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, SQL_UPDATE_WORKFLOW, updateParms); } catch (Exception error) { iResult = -1;//插入操作异常 throw error; } } return iResult; } #endregion #region 插入新的工作流信息 /// /// 插入新的工作流信息 /// /// 工作流实体类 /// 值1表示插入成功 值不等于1表示插入异常 public int InsertWorkFlow(WorkFlowEntity tempWorkFlowEntity) { int iResult = 0; using(SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction)) { SqlParameter[] insertParms = new SqlParameter[]{ new SqlParameter(PARM_WORKFLOW_GID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_NAME,SqlDbType.VarChar,50), new SqlParameter(PARM_WORKFLOW_DESCRIPTION,SqlDbType.VarChar,50), new SqlParameter(PARM_WORKFLOW_MODULE_ID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_TYPE,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_CREATE_USER,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_STATE,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_SORT,SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_COMPANY_ID,SqlDbType.VarChar,36) }; insertParms[0].Value = tempWorkFlowEntity.GID; insertParms[1].Value = tempWorkFlowEntity.Name; insertParms[2].Value = tempWorkFlowEntity.Description; insertParms[3].Value = tempWorkFlowEntity.ModuleID; insertParms[4].Value = tempWorkFlowEntity.Type; insertParms[5].Value = tempWorkFlowEntity.CreateUser; insertParms[6].Value = tempWorkFlowEntity.State; insertParms[7].Value = tempWorkFlowEntity.Sort; insertParms[8].Value = tempWorkFlowEntity.CompanyID; try { iResult = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, SQL_INSERT_WORKFLOW, insertParms); } catch (Exception error) { iResult = -1;//插入操作异常 throw error; } } return iResult; } #endregion #region 验证同一分公司下是否存在相同类型的工作流 /// /// 验证同一分公司下是否存在相同类型的工作流 /// /// 分公司GID /// 工作流类型 /// 验证操作类型 值1表示插入验证 值2表示更新验证 /// 工作流GID /// 值1表示同一分公司下已经指定了此类型的工作流 值等于0表示同一分公司下不存在相同的工作流 public int ExistSameWorkFlowInCompanyAndType(string tempCompanyID,int tempType,int tempOperateType,string tempWorkFlowID) { int iResult = 0; using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction)) { try { //值1表示做插入前验证,同一分公司下只能存在一种类型的工作流,不可重复创建 if (tempOperateType == 1) { SqlParameter[] insertParms = new SqlParameter[] { new SqlParameter(PARM_WORKFLOW_COMPANY_ID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_TYPE,SqlDbType.Int) }; insertParms[0].Value = tempCompanyID; insertParms[1].Value = tempType; iResult = (int)SqlHelper.ExecuteScalar(conn, CommandType.Text, SQL_SELECT_WORKFLOW_COMPANYID_AND_TYPE, insertParms); } else { SqlParameter[] updateParms = new SqlParameter[] { new SqlParameter(PARM_WORKFLOW_GID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_COMPANY_ID,SqlDbType.VarChar,36), new SqlParameter(PARM_WORKFLOW_TYPE,SqlDbType.Int) }; updateParms[0].Value = tempWorkFlowID; updateParms[1].Value = tempCompanyID; updateParms[2].Value = tempType; iResult = (int)SqlHelper.ExecuteScalar(conn, CommandType.Text, SQL_SELECT_WORKFLOW_COMPANYID_AND_TYPE_GID, updateParms); } } catch (Exception error) { throw error; } } return iResult; } #endregion #region 根据工作流类型获取工作流信息 /// /// 根据工作流类型获取工作流信息 /// /// 工作流类型 /// 分公司GID /// 返回工作流实体类 public WorkFlowEntity GetSingleWorkFlowByTypeNo(int tempTypeNo,string tempCompanyID) { //初始化返回变量 WorkFlowEntity workFlowEntity = null; //初始化参数并赋值 SqlParameter[] parms = new SqlParameter[] { new SqlParameter(PARM_WORKFLOW_TYPE, SqlDbType.Int), new SqlParameter(PARM_WORKFLOW_COMPANY_ID,SqlDbType.VarChar,36) }; parms[0].Value = tempTypeNo; parms[1].Value = tempCompanyID; using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_BY_TYPE_AND_COMPANYID, parms)) { try { workFlowEntity = new WorkFlowEntity(); //读取字段值 while (sqlRead.Read()) { if (!sqlRead.IsDBNull(0)) { workFlowEntity.GID = sqlRead.GetString(0); } if (!sqlRead.IsDBNull(1)) { workFlowEntity.Name = sqlRead.GetString(1); } if (!sqlRead.IsDBNull(2)) { workFlowEntity.Description = sqlRead.GetString(2); } if (!sqlRead.IsDBNull(3)) { workFlowEntity.ModuleID = sqlRead.GetString(3); } if (!sqlRead.IsDBNull(4)) { workFlowEntity.Type = sqlRead.GetInt32(4); } if (!sqlRead.IsDBNull(5)) { workFlowEntity.CreateUser = sqlRead.GetString(5); } if (!sqlRead.IsDBNull(6)) { workFlowEntity.CreateTime = sqlRead.GetDateTime(6); } if (!sqlRead.IsDBNull(7)) { workFlowEntity.ModifiedUser = sqlRead.GetString(7); } if (!sqlRead.IsDBNull(8)) { workFlowEntity.ModifiedTime = sqlRead.GetDateTime(8); } if (!sqlRead.IsDBNull(9)) { workFlowEntity.State = sqlRead.GetInt32(9); } if (!sqlRead.IsDBNull(10)) { workFlowEntity.Sort = sqlRead.GetInt32(10); } if (!sqlRead.IsDBNull(11)) { workFlowEntity.IsDelete = sqlRead.GetBoolean(11); } if (!sqlRead.IsDBNull(12)) { workFlowEntity.CompanyID = sqlRead.GetString(12); } } } catch (Exception exceError) { //抛出异常 throw exceError; } } return workFlowEntity; } #endregion public WorkFlowEntity GetSingleWorkFlow(string tempWorkFlowGID) { //初始化返回变量 WorkFlowEntity workFlowEntity = null; //初始化参数并赋值 SqlParameter parm = new SqlParameter(PARM_WORKFLOW_GID, SqlDbType.VarChar, 36); parm.Value = tempWorkFlowGID; using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_BY_GID, parm)) { try { workFlowEntity = new WorkFlowEntity(); //读取字段值 while (sqlRead.Read()) { if (!sqlRead.IsDBNull(0)) { workFlowEntity.GID = sqlRead.GetString(0); } if (!sqlRead.IsDBNull(1)) { workFlowEntity.Name = sqlRead.GetString(1); } if (!sqlRead.IsDBNull(2)) { workFlowEntity.Description = sqlRead.GetString(2); } if (!sqlRead.IsDBNull(3)) { workFlowEntity.ModuleID = sqlRead.GetString(3); } if (!sqlRead.IsDBNull(4)) { workFlowEntity.Type = sqlRead.GetInt32(4); } if (!sqlRead.IsDBNull(5)) { workFlowEntity.CreateUser = sqlRead.GetString(5); } if (!sqlRead.IsDBNull(6)) { workFlowEntity.CreateTime = sqlRead.GetDateTime(6); } if (!sqlRead.IsDBNull(7)) { workFlowEntity.ModifiedUser = sqlRead.GetString(7); } if (!sqlRead.IsDBNull(8)) { workFlowEntity.ModifiedTime = sqlRead.GetDateTime(8); } if (!sqlRead.IsDBNull(9)) { workFlowEntity.State = sqlRead.GetInt32(9); } if (!sqlRead.IsDBNull(10)) { workFlowEntity.Sort = sqlRead.GetInt32(10); } if (!sqlRead.IsDBNull(11)) { workFlowEntity.IsDelete = sqlRead.GetBoolean(11); } if (!sqlRead.IsDBNull(12)) { workFlowEntity.CompanyID = sqlRead.GetString(12); } } } catch (Exception exceError) { //抛出异常 throw exceError; } } return workFlowEntity; } #region 通过SQL语句获取数据 /// /// 通过SQL语句获取数据 /// /// 要执行查询的SQL语句 /// 返回DataSet数据 public DataSet GetDataSetBySql(string strSql) { DataSet dataSet = new DataSet(); dataSet = SqlHelper.ExecuteDataset(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, strSql); return dataSet; } #endregion #region 根据MODULEID获取工作流信息 /// /// 根据MODULEID获取工作流信息 /// /// /// public WorkFlowEntity GetSingleWorkFlowByModuleID(string tempModuleID) { //初始化返回变量 WorkFlowEntity workFlowEntity = null; //初始化参数并赋值 SqlParameter parm = new SqlParameter(PARM_WORKFLOW_MODULE_ID, SqlDbType.VarChar, 36); parm.Value = tempModuleID; using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_WORKFLOW_BY_MODULEID, parm)) { try { workFlowEntity = new WorkFlowEntity(); //读取字段值 while (sqlRead.Read()) { if (!sqlRead.IsDBNull(0)) { workFlowEntity.GID = sqlRead.GetString(0); } if (!sqlRead.IsDBNull(1)) { workFlowEntity.Name = sqlRead.GetString(1); } if (!sqlRead.IsDBNull(2)) { workFlowEntity.Description = sqlRead.GetString(2); } if (!sqlRead.IsDBNull(3)) { workFlowEntity.ModuleID = sqlRead.GetString(3); } if (!sqlRead.IsDBNull(4)) { workFlowEntity.Type = sqlRead.GetInt32(4); } if (!sqlRead.IsDBNull(5)) { workFlowEntity.CreateUser = sqlRead.GetString(5); } if (!sqlRead.IsDBNull(6)) { workFlowEntity.CreateTime = sqlRead.GetDateTime(6); } if (!sqlRead.IsDBNull(7)) { workFlowEntity.ModifiedUser = sqlRead.GetString(7); } if (!sqlRead.IsDBNull(8)) { workFlowEntity.ModifiedTime = sqlRead.GetDateTime(8); } if (!sqlRead.IsDBNull(9)) { workFlowEntity.State = sqlRead.GetInt32(9); } if (!sqlRead.IsDBNull(10)) { workFlowEntity.Sort = sqlRead.GetInt32(10); } if (!sqlRead.IsDBNull(11)) { workFlowEntity.IsDelete = sqlRead.GetBoolean(11); } } } catch (Exception exceError) { //抛出异常 throw exceError; } } return workFlowEntity; } #endregion #region 查看是否有相同的工作流信息 /// /// 查看是否有相同的工作流信息 /// /// WorkFlowCheckValueType 类型 可以检索NAME和DESCRIPTION /// 检索值 /// 工作流GID /// True表示有相同值 False表示没有相同值 public bool IsExistSameValueWorkFlow(WorkFlowCheckValueType tempType,string tempCheckValue,string tempWorkFlowID) { bool IsExist = false; string strCheckName = ""; switch (tempType) { case WorkFlowCheckValueType.NAME: strCheckName = "NAME"; break; case WorkFlowCheckValueType.DESCRIPTION: strCheckName = "DESCRIPTION"; break; } string strSql = String.Format("SELECT COUNT(*) FROM workflow WHERE {0} =@WKNAME {1}", strCheckName, (tempWorkFlowID.Trim().Equals("") ? "" : " AND GID <> '" + tempWorkFlowID + "' ")); SqlParameter parm = new SqlParameter("@WKNAME", SqlDbType.VarChar, 36); parm.Value = tempCheckValue; using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, strSql, parm)) { try { if (sqlRead.Read()) { if (!sqlRead.IsDBNull(0)) { if (sqlRead.GetInt32(0) > 0) { IsExist = true;//如果存在相同的值则返回true表示工作流表中已经有了相关信息 } } } } catch (Exception exceError) { //抛出异常 throw exceError; } } return IsExist; } #endregion } public enum WorkFlowCheckValueType { NAME = 0, DESCRIPTION = 1 } }