OA系统二十四:请假审批五:【点击“审批”后的审批弹出框】的后台逻辑;(审批结果提交的Dao层和Service层逻辑)

 本篇博客的主要内容是:【请假审批内嵌页面】,【审批弹出框】的点击“确认提交”后,后台的逻辑:主要是Dao层和Service层这些后台逻辑;

 说明:

(1)目前来看,为了实现某个功能,【一个比较好的编程逻辑和实现流程】比【实际敲代码去实现】重要的多得多!!!) 

(2.1)底层的SQL语句,updata和insert语句的参数,一般是一个实体类对象,注意一下这个习惯(或者说是普遍采用的策略);

(2.2)而且,一般为了更新某些数据,一般的策略先查询出要更改数据,用一个实体类对象去承载;然后,修改这个实体类对象,然后再调用update方法(updata的参数就是这个修改后的实体类对象),已达到更新这些数据的目的;

(2.3)2.2中的例子可以看出,我们尽量在Mapper xml中编写那些具有通用性的SQL,或者说是可以完成某个“普遍性”功能的SQL语句;这样一来,当我们需要完成某个具体的业务逻辑的时候,就可以调用这些【具有“通用性、普遍性”功能的SQL语句】,来完成我们具体的某个业务逻辑!这一条思想非常重要!!!

目录

一:【审批】流程和逻辑分析

(1)如果请假时间 >= 72小时:需要【部门经理审批】和【总经理审批】

(2)如果请假时间 < 72小时:需要【部门经理审批】和【总经理审批】

二:通过【一:【审批】流程和逻辑分析】中的分析,构思具体编码的的实现分支和结构

三:具体的实现 

 1.第一个步骤:无论审批结果是同意还是驳回,当前任务状态变更为complete;

(1.1)首先,在process_flow.xml中编写SQL语句

(1.2)然后,在ProcessFlowDao中,编写上述在process_flow.xml中声明的两个SQL语句的方法声明

(1.3)然后,在LeaveFormService中,编写实现【把当前任务状态变更为complete;】的业务逻辑

 2.第二个步骤:如果当前任务是最后一个节点,代表流程结束,更新leave_form表中的请假单状态为对应的approved或者refused

(1)首先,在leave_form.xml中增加两个SQL语句;

(2)然后,就在LeaveFormDao中编写方法的定义

(3)然后,就在LeaveFormService中,调用Dao层方法,实现本步骤的逻辑

3.第三个步骤:如果当前任务不是最后一个节点,如果审批通过,那么下一个节点的状态从ready改为process

4.第四个步骤:如果当前任务不是最后一个节点,如果审批驳回,则后续所有任务的状态变为cancel,同时更新leave_form表中的请假单状态为refused

5.最后的一个设置,因为整个操作不需要返回值,所以return null;

四:测试

(1)测试数据

(2)编写测试用例

(3)实际运行测试用例 


一:【审批】流程和逻辑分析

(1)如果请假时间 >= 72小时:需要【部门经理审批】和【总经理审批】

如上,目前的审批环节是【部门经理审批】。

情况一:中间节点审批通过了:

● 如果部门经理审批通过:

然后,【总经理】审批了:总经理审批:总经理可能审批通过,也可能审批不通过

情况二:中间节点审批不通过: )

● 如果部门经理审批不通过:那么这个请假直接就无需总经理审批了,直接不同意了。

(2)如果请假时间 < 72小时:需要【部门经理审批】和【总经理审批】

情况三:当前节点是最后一个节点:

 即,【审批的流程和逻辑】可以抽取成三个不同的情况:【情况一:当前审批是中间节点,而且审批通过了】;【情况二:当前审批是中间节点,但是审批没通过】;【情况三:当前审批是最后一个的节点】;


二:通过【一:【审批】流程和逻辑分析】中的分析,构思具体编码的的实现分支和结构

通过【一:【审批】流程和逻辑分析】中的分析,在实际编码的时候,其实现逻辑可以梳理为:

1.无论审批结果是同意还是驳回,当前任务状态变更为complete;(即,只要当前环节审批了,无论同意还是驳回,当前审批环节审批后,当前环节的状态都需要改为complete)

2.如果当前任务是最后一个节点,代表流程结束,更新leave_form表中的请假单状态为对应的approved或者refused

3.如果当前任务不是最后一个节点,如果审批通过,那么下一个节点的状态从ready改为process

4.如果当前任务不是最后一个节点,如果审批驳回,则后续所有任务的状态变为cancel,同时更新leave_form表中的请假单状态为refused

(PS:这个【为了实现某个功能,构建更加良好的代码结构和逻辑的能力,需要慢慢提升啦;确实,目前来看,【为了实现某个功能,一个比较好的编程逻辑和实现流程】比【实际敲代码去实现】重要的多得多!!!) 


三:具体的实现 

 1.第一个步骤:无论审批结果是同意还是驳回,当前任务状态变更为complete;

(1.1)首先,在process_flow.xml中编写SQL语句

经过思考后,可以发现,为了实现本步骤的逻辑,需要两个底层的SQL操作:一个是查询当前表单的所有审批环节;二是,更改某一审批环节;

PS:上面的selectByFormId马虎写错了,多了一个c....所以,及时的单元测试非常重要!!) 

process_flow.xml:上述新增内容的代码

    <select id="selectByFormId" parameterType="Long" resultType="com.imooc.oa.entity.ProcessFlow">
        select * from adm_process_flow where form_id = #{value} order by order_no
    </select>

    <update id="update" parameterType="co
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值