自定义请假员工工作流

上传人:san****019 文档编号:21199142 上传时间:2021-04-25 格式:PPT 页数:27 大小:281.61KB
返回 下载 相关 举报
自定义请假员工工作流_第1页
第1页 / 共27页
自定义请假员工工作流_第2页
第2页 / 共27页
自定义请假员工工作流_第3页
第3页 / 共27页
点击查看更多>>
资源描述
第11章 自定义员工请 假审批工作流 大连理工大学电子音像出版社出版 第11章 自定义员工请假审批工作流 目 的 和 要 求 :掌握视图的定义与使用掌握触发器的定义与使用掌握 ADO.NET事务的定义与使用重 点 和 难 点 :触发器的定义与使用 ADO.NET事务的定义与使用 3 模块业务描述 第一级审批权限: 如果请假10天以上, 由员工提交请假申报,经教研室主任批准后,分别经系主任、副院长、院长逐级审批后,最后由董事长批准终止流程。第二级审批权限:如果请假7-10天, 由员工提交请假申报,经教研室主任批准后,分别由系主任、副院长逐级审批, 最后由院长审批终止流程。第三级审批权限:如果请假3-7天, 由员工提交请假申报,经教研室主任批准后,再系主任审批,最后由副院长审批终止流程。第四级审批权限: 如果请假1-3天, 由员工提交请假申报,教研室主任批准,呈送经系主任审批终止流程。第五级审批权限: 如果请假1天,由员工提交请假申报,教研室主任批准终止流程。 4 模块 UML图设计 5 模块界面设计 6 基础知识 视图定义 视图是一张虚拟表,它数据来源于基本表。优点便于数据的操作,能将几张表的中集中起来,可以简化操作 示例一:CREATE VIEW view_name AS select_statement二例二:视图示例一: CREATE VIEW SELECTEMPDEPASselect EmployeeID,EmployeeName,DepartmentName from dbo.Employee E,dbo.Department D where D.DepID=E.DepartmentID 7 触发器定义 触发器是一种特殊的存储过程,它不能显示地被调用,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。创建触发器通常有两种方式,一种是使用企业管理器创建触发器,另一种是使用T-SQL代码创建触发器 8 语法格式语法格式为:CREATE TRIGGER 触发器名称ON 表名FOR INSERT、UPDATE 或 DELETEAST-SQL 语句 9 触发器示例一 CREATE TRIGGER dbo.InsertLR ON dbo.LeaveRecord FOR INSERTAS BEGINSET NOCOUNT ON;declare RecordID intdeclare EmpID int select RecordID=RecordID,EmpID=EmpID from insertedINSERT INTO dbo.LEAVE_CHECK(leave_bill_id,leave_proposerid,check_employee_level,check_type)values(RecordID,EmpID,5,1)END 10 ADO.NET事务 事务专门用于操作数据库时,保持数据一致性,如:学生表与班级表,每增加一名学生,便要在班级表的总人数列上增加一人。如果学生有一名退学,便要在班级表总人数列中减去一人。 为了保持两张表数据的一致性。可以使用事务对其进行处理。使用事务处理要用到名称空间。 11 SqlTransaction mytrans; / mytrans为事务类对象 SqlCommand comm = conn.CreateCommand(); mytrans = conn.BeginTransaction();/连接类对象的BeginTransaction()方法 comm.Transaction = mytrans;/ 命令类的Transaction属性 12 UML对象时序图讲解 13 数据库共用类 :方法一. ExecuteNonQuery public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString) PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; 14 方法二. ExecuteNonQuerypublic static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; 15 方法三. PrepareCommand private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter cmdParms) if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); 16 方法四. ExecuteScalar public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString) PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; 17 方法五. ExecuteReader public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; catch conn.Close(); throw; 18 数据库操作类 :方法一. GetLeave public int GetLeave(int Inputday) SqlParameter param = new SqlParameter(inputDay, SqlDbType.Int) ; param0.Value = Inputday; string sqlSelect = selConfigLeave; int row=Convert.ToInt32(SqlHelper.ExecuteScalar(connectionstr,CommandType.StoredProcedure,sqlSelect,param); return row; 19 方法二. GetLC。 public int GetLC(int LC) SqlParameter param = new SqlParameter(LC, SqlDbType.Int) ; param0.Value = LC; string sqlSelect = select check_employee_level from dbo.LEAVE_CHECK where leave_bill_id=LC; int row = Convert.ToInt32(SqlHelper.ExecuteScalar(connectionstr, CommandType.Text, sqlSelect, param); return row; 20 方法三. updateApprove public int updateApprove(int leaveid, int check_type) SqlParameter param = new SqlParameter(leaveid, SqlDbType.Int), new SqlParameter(check_type, SqlDbType.Int) ; param0.Value = leaveid; param1.Value = check_type; string sqlUpdate = updateLC; return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.StoredProcedure, sqlUpdate, param); 21 方法四. InsertLeaveRecord public int InsertLeaveRecord(LeaveRecordInfo LRInfo) SqlParameter param = new SqlParameter(EmpID, SqlDbType.Int), new SqlParameter(LeaveTypeID, SqlDbType.Int), new SqlParameter(BeginDate, SqlDbType.DateTime), new SqlParameter(EndDate, SqlDbType.DateTime); param0.Value = LRInfo.EmpID; param1.Value = LRInfo.LeaveTypeID; param2.Value = LRInfo.BeginDate; param3.Value = LRInfo.EndDate; string sqlInsert = insert into dbo.LeaveRecord(EmpID,LeaveTypeID,BeginDate,EndDate,LeaveState)values (EmpID,LeaveTypeID,BeginDate,EndDate,1); return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.Text, sqlInsert, param); 22 方法五. GetEmpName public List GetEmpName() List ListEmp = new List(); EmployeeInfo emp = null; string sqlSelect = select EmpID, EmployeeName from dbo.Employee; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() emp = new EmployeeInfo(dr.GetInt32(0), dr.GetString(1); ListEmp.Add(emp); return ListEmp; 23 六.GetLeaveType public List GetLeaveType() List ListTY = new List(); LeaveTypeInfo LYInfo = null; string sqlSelect = SELECT LeaveTypeID,LeaveType FROM dbo.LeaveType; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() LYInfo = new LeaveTypeInfo(dr.GetInt32(0), dr.GetString(1); ListTY.Add(LYInfo); return ListTY; 24 方法七. GetGETLeaveALL public DataTable GetGETLeaveALL(int Empid) DataTable dt = new DataTable(); SqlParameter param = new SqlParameter(empid, SqlDbType.Int) ; param0.Value = Empid; string sqlselect = GetLeave; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.StoredProcedure, sqlselect, param); dt.Load(dr, LoadOption.OverwriteChanges); return dt; 25 方法八. UserCheck。 public bool UserCheck(string username, string userpassword, ref int iEmpID, ref int DutyID) string sqlselect=Pr_GetLogin; SqlParameter param = new SqlParameter(EmpName, SqlDbType.VarChar, 20), new SqlParameter(Password, SqlDbType.VarChar, 50) ; param0.Value=username; param1.Value=userpassword; SqlDataReader dr=SqlHelper.ExecuteReader(connectionstr,CommandType.StoredProcedure,sqlselect,param); if (dr.Read() iEmpID = Convert.ToInt32(drEmpID.ToString(); DutyID = Convert.ToInt32(drDutyID.ToString(); return true; else return false; 26 练习题编程实现以下业务需求: 1、公司购物要实现逐级审批制度,根据购物金额大小由低向高逐级审批。购物金额在500元以内,由项目经理审批;购物金额在501元至1000元之间由部长审批; 购物金额在1001元至5000元由总经理审批;购物金额在5001元以上由董事长审批。 27 2、学院规定了对违纪学生的处分条例,对违纪学生组织实施处分要求由低向高逐级申报。学生旷课50节以内,由系部给予违纪学生警告处分;旷课51节至150节,由院学生给予违纪学生记过处分;旷课达151节以上由学院院长给予违纪学生停学一年处分。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!