JavaEE项目流程审批之三

 JavaEE项目实战 _流程审批之三

  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_id int id,主键
user_id int 请假人的员工id
user_name varchar2(100) 请假人姓名
leave_type varchar2(100) 请假类型(病假、事假等)
leave_reason varchar2(500) 请假事由
start_date date 假期开始日期
end_date date 假期结束日期
add_date date 提交请假单日期
flow_no int 流程号
current_no int 当前节点(流程走到哪步)
state int 状态,0草稿1审批中2审批结束

  8. 请假审批表(tbl_leave_audit):

字段名 数据类型 备注
audit_id int id,主键
leave_id int 请假单id
flow_node_id int 流程节点id
user_id int 审批人的员工id
user_name varchar2(100) 审批人姓名
audit_info varchar2(100) 审批内容
audit_date date 审批日期
  审批表用于保存每个审批阶段的审批记录。




  根据以上数据,下面,我们尝试完成下述任务:
  1. 员工张三填写一个请假单,请编写sql语句,向请假表中插入数据。
  2. 部门经理王五审核员工张三的请假单,审批通过,请编写相应的sql语句。
  3. 部门经理王五审核员工张三的请假单,审批不通过,请编写相应的sql语句。
  4. 总经理赵六审核员工张三的请假单,审批通过,请编写相应的sql语句。
  5. 总经理赵六审核员工张三的请假单,审批不通过,请编写相应的sql语句。
  6. 部门经理登录系统,要显示待审批事项的列表,请编写相应的sql语句。

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

猜你喜欢

转载自blog.csdn.net/rundy_deng/article/details/79422820