您的位置:首页 > 编程语言 > Java开发

JavaEE项目实战(OA系统)之二十_流程审批之三

2016-09-24 14:10 573 查看
  JavaEE项目实战(OA系统)之二十_流程审批之三

  OA系统中有些查询是比较复杂的,需要花一些心思去思考。

  在这一节中,我们将给出一些测试数据,然后要求大家来编写相应的SQL语句。

  一、测试数据

  1. 部门表(tbl_dept):



  2. 员工表(tbl_user):



  我们特意设计了这样的员工数据:

  编号为4的部门(总经理办公室)中有4个员工,1号2号员工(张三和李四)是普通员工,3号员工(王五)是部门经理,4号员工(赵六)是总经理。

  另有一个员工“小二”跟他们不是一个部门。

  这样测试时,可以让张三、李四、小二各写一个请假单,看王五这个部门经理是否只会审批本部门的请假单。

  3. 流程表(tbl_flow):



  表中有两套流程:请假流程和报销流程。其中flow_id和flow_no作用不一样,flow_id作为主键,由序列生成,而flow_no作为流程号,是由公司规定的。我们使用后者作为主要关联字段。后面的示例中,请假表的流程号就是5了。

  4. 流程节点表(tbl_flow_node):



  表中暂时只加了请假流程的节点,节点有3个,从编写请假单到部门经理审批,再到总经理审批。这里的flow_node_role是流程节点角色,例如部门经理、总经理等。

  5. 流程线表(tbl_flow_line):



  流程线是两个节点之间的连线。图论中有点有线。每根线都有前节点和后节点。

  要知道流程的下一步该怎么走,就要查这张表。

  如果一个节点有两个分支,就有两条记录,这种情况下界面上需要提示用户选择流程分支。

  本案例为线性流程,没有分支。

  6. 流程角色-员工表(tbl_flow_role_user):



  这个表指定哪些人是部门经理,哪些人是总经理。

  另有两张表内容为空,暂无数据,后面要求写入数据。

  7. 请假表(tbl_leave):

字段名数据类型备注
leave_idintid,主键
user_idint请假人的员工id
user_namevarchar2(100)请假人姓名
leave_typevarchar2(100)请假类型(病假、事假等)
leave_reasonvarchar2(500)请假事由
start_datedate假期开始日期
end_datedate假期结束日期
add_datedate提交请假单日期
flow_noint流程号
current_noint当前节点(流程走到哪步)
stateint状态,0草稿1审批中2审批结束
  8. 请假审批表(tbl_leave_audit):

字段名数据类型备注
audit_idintid,主键
leave_idint请假单id
flow_node_idint流程节点id
user_idint审批人的员工id
user_namevarchar2(100)审批人姓名
audit_infovarchar2(100)审批内容
audit_datedate审批日期
  审批表用于保存每个审批阶段的审批记录。

  根据以上数据,下面,我们尝试完成下述任务:

  1. 员工张三填写一个请假单,请编写sql语句,向请假表中插入数据。

  2. 部门经理王五审核员工张三的请假单,审批通过,请编写相应的sql语句。

  3. 部门经理王五审核员工张三的请假单,审批不通过,请编写相应的sql语句。

  4. 总经理赵六审核员工张三的请假单,审批通过,请编写相应的sql语句。

  5. 总经理赵六审核员工张三的请假单,审批不通过,请编写相应的sql语句。

  6. 部门经理登录系统,要显示待审批事项的列表,请编写相应的sql语句。

  提示:如查询过于复杂,可创建视图简化查询。

  在下一节中公布答案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oa系统 工作流 sql