00:00
各位同学大家好,下面呢,咱们继续往下来实现啊,刚才呢,咱们把这个审批详情进行了显示,然后下面我们来实现审批通过,包括审批拒绝,那这个怎么做,我们来做一个分析啊,首先呢,我们找到这个审批详情的页面,咱在前端看一下啊,神秘页面是哪个呢?在我们这个页面中有一个叫点那么它打开,然后打开之后大家往上来看啊,在上面。在上面呢,有两个操作部分,就是在这个位置,一个叫审批拒绝,一个叫审批通过,因为咱们这个通过和拒绝,咱们就是改这个状态,一表示通过,负一表示拒绝,咱们看一下表里边啊,之前咱们介绍过,在表里边大家看这位置有这个叫状态,然后状态里边一。审批中二通过,负一拒绝,所以咱们给它改一下里边这个状态值啊,通过它我们进行这个实现。
01:02
这个啊是我们写的方法,然后方法往下来看啊,在下面的这个位置有咱们的具体方法,方法中你看啊,有一个对象叫op pro VO,所以咱一会儿在我们接口中通过一个对象得到里边的值,这个值里边你看啊,包含你这个流程,Idd还有状态,所以咱们现在来做这个审批的这个过程,那审批过程呢,咱们下面还是写一下接口,然最终进行测试。我现在啊,来到我们写这个审批的接口。然后审批里边首先啊,加一下这个接口的路径,这个路径我从这里边咱就直接复制一下啊,有这么一个固定的路径。然后大家来看啊,名象提在V里边有这么几个,第一个流程ID,第二个任外D,第三个状态,包括描述等等啊,这个我们得到,然后得到之后下面呢,咱们开始调用方法进行最终的实现,那这里边啊,我们来调一下这个方法,就是把它实现一下啊。
02:18
咱们写下。调用这个方法,这个方法呢,这个。在里边传入这个VO对象。最终吞一个,OK。Result也OK,所以现在啊,CTR部分完成,完成之后同样啊里面创建方法,然后实现方法,我把这个快速写出来,这个创建。在实现类中最终实现这个方法。这个方法呢,做的是审批啊,同样啊,咱们把这流程给大家也是做一个说明,然后咱们快速把这个方法集中完成。
03:02
那这个流程呢,到底怎么样,咱们详细写一下啊,首先我们的第一部分咱们怎么做呢?各位应该记得啊,咱们之前呢,在启动流程实例的时候呢,在里边应该放了一些叫流程变量,所以咱把这些值给它取到,虽然咱可能目前没有用到那么多,但咱给他也获取一下啊,就把这流程写到更完整点,所以我们的第一步操作怎么做,首先啊,咱们从这个approval里边。获取到这个任务ID,然后咱们根据任务ID获取一下我们之前启动流程实例中,我们设置出那些叫流程变量,把这些套,这是我们的第一步,然后这个之后我们的第二步操作怎么做呢?咱就判断我当前这个就是审批的一个状态。根据这一个状态值进行判断,那怎么判断呢?按照我们之前说到的啊,我这里写一下,咱来个2.1。
04:00
如果说啊,你的状态值。等于一,那咱就表示这个审批通过,审批通过我们调用里边那个task service中的方法complete传入你的任外地传入你的流程变量,最终把这个审批通过,这是2.1做的事情,然后再来写2.2,如果说啊,状态值等于负一,那怎么样,咱是不是就驳回这个流程,或者让这个流程就直接结束啊,这是驳回。就是流程,它就直接结束,这是我们写的第二步操作,然后这个之后呢,其实这过程已经完成了,但是咱们在表里边要记录一下它的相关的信息,所以第三步怎么做,咱就来记录一下这个审批的相关的这个过程的信息,而这个记入到哪里,咱们之前有这么一个表,咱们应该看到啊,咱看一下这个表叫。
05:02
Record,在这个表中记录他这个相关的这个过程的信息,比如说谁审批了,谁通过了,谁驳回了等等,在这个里边我们进行记录,这是咱们做的第三步操作,就咱一会儿进行实现,然后这个之后我们继续往下来做,下面做什么呢?那进入到我们的第四步,第四步呢,咱就查询一下我当前这个流程中的下一个审批人是谁,把这个查出来,就是这个代码之前写过啊,一会咱们可以再写一遍,查询下一个审批人。这个查的过程中,我们可以根据它那个就是流程ID得到流程对象,根据实例ID得到里面那个就是任务的那个列表,然后得到当前这个下一个审批人,如果查到之后,我们给他推送这个消息,就是用微信公众号的方式进行推送,后面咱会做到啊,然后这里边还有很多的细节,我强调啊,比如说我现在啊,我这个张三审批之后,下边就没有审批人了,那后一个是不是就查不到审批人了,如果查不到,那这里边我们就直接啊把那个表中数据进行更新,比如说咱们里边有这个表叫process,里边就是更新你这个相关的信息啊,比如目前是等待张三经理审批,后面是等待李四审批,包括最后流程结束,所以这就是查询下一个审批人,然后咱们去更新这个流程表中这个记录,就是我们这个表里的记录。
06:37
这个表里边的记录啊,这是我们做的第字步操作,所以以上啊就是咱们要完成的审批的一个基本过程,那下面呢,咱们把这个我们来写一下啊,首先我们看第一部分,先根据任务ID得到里面这个流程的变量,那我把这代码写一下啊,A pro点上get task ID就是我们的任务ID,然后根据它我们来获取一下啊,咱们调用这个方法叫task service里边有一个方法,这个方法我们来找一下啊,应该叫get这个啊,就是咱说那个流程变量那个单词啊,Valuable。
07:19
多一个S啊,然后在里边呢,加上我们的任务ID。最终呢,它返回的是一个map集合啊,这是我们的第一部分,得到里边这个流程变量,这咱就完成,然后完成之后呢,这里边啊,咱为了一会儿测试方便,我就把这map集合咱给它就遍历一下啊,一会咱输出一下,看一下这个值能不能取到啊,给它写的更完整点啊,那我给它便利一下啊,加上map点。Entry。然后里边加上他的泛型就是这个啊。然后给它起个名字叫entry,再加上这个variables,点上这个叫entry set,然后在里边我们就直接给它做个输出啊,第一个就是entry.get key。
08:11
然后第二个entry get value啊,现在啊,把这个给它遍利头一会儿咱们看着方便啊,然后这个之后往下来看啊,看我们的第二部分,第二部分呢,我们根据这个状态值进行判断,那这里边我写一下啊,根据它判断一下。咱们加上。我们加上这个pro。VO里边这个方法叫get thes,如果它的值等于一,表示目前咱就要审批通过,然后来一个else,如果它的值不是一,表示咱要进行这个驳回,也就是结束这个流程。所以目前啊,是里边的这么一个判断,那咱们写下这个方法啊,首先我们就是审批通过,那审批通过怎么来做呢?给大家讲这里啊,在这个过程中,我们可以就是调用task service里面这个方法叫complete,然后在里边传入你的那个就是任务的ID,通过它来完成任务,或者说审批这个任务,这是我们要做到的啊,这个过程中呢,如果说你这里边有一些流程变量,你在里可以做一些相关的设置啊,但咱目前应该没有这个啊,所以咱就不设置了,直接通过它完成任务,或者说啊,我这么做,我写一个结构,让大家可能更明确啊,因为咱们没有做这个设置啊,你可以在里面设置一下,比如加一个叫。
09:39
Valuable啊,咱就直接一个啊,一个叫哈希map,然后把这个valuable给它传进去,为了各位看的更明确,在这个时候能设试你的流程变量,我的目的在这里啊,就是这个给各位写的够完整点啊,然后之后我们看else里边,如果说它的值是负一,那咱就驳回结束这个流程,这个呢,咱一块儿写个方法结束,我就叫这个and。
10:06
Task。里边传入这个任务,外地啊这些方法一会儿再来完成,我在下面先把这个方法创建出来。这个位置啊,就是结束流程。一会儿来实现啊,然后现在把这个判断部分我们就完成了,一通过负一驳回,通过的话调用complete完成任务,负一来一会调个方法进行驳回,然后之后看第三步啊,第三步呢,咱们在这个process record表中记录一下。相关这个过程的信息,就是目前比如说谁通过了,或者谁驳回了,把这个做过记录,那咱来写一下啊,咱们调用这个。Service里边咱们之前应该写过一个记录方法叫。不是,各位是否记得啊,当时咱们写过这个里边三个参数,第一个流程ID,第二个状态,第三个描述,然后最终向表中insert加数据,所以咱们就调这个方法实现,那向里边看下参数啊,第一个点上get ID。
11:19
然后第二个参数点上get thes,第三个咱们加个描述啊,这个描述呢,我写到上面啊,我加个three,加一个叫description。然后等于这个描述信息啊,这个描述呢,其实无外乎就是通过驳回啊等等,那咱就简单写一个通过或者驳回,通过驳回呢,其实就是这两个值是一就通过。不是一啊,就是驳回啊,那咱们给他写一下啊,呃,这个写的话呢,你可以加个if else判断我这位置加一个那个三元表达式,咱们快速写一下啊,点上get thes,比如咱in y表啊,如果它的值等于一,我们加上一个冒号啊,咱先往左写,发现咱们看到啊,要不然这里边往右拉,那看着不方便啊,咱家问号,然后这里边就显示叫。
12:18
已经通过。啊,通过,然后这里再加个冒号,如果不是一,我们就显示这个叫。驳回啊,现在啊,把这个完成完成之后把description在里边传进去就可以了。所以现在啊,咱们就完成了里面这个第三步操作,记录你这个审批过程中相关的信息,传入它要求的参数,第一个process ID流程ID,第二个状态,第三个描述这个啊,咱们就讲到这里。然后这个之后我们继续来看啊,下面咱看第四步,第四步呢,我们就要查一下它的下一个审批人,但是它下面可能没有审批人啊,但是咱要做个查询,然后查询之后更新我们的process表里面的信息啊,包括如果查到审批人给他可以推送一个消息,用微信公众号的方式进行实现,那咱们写一下啊。
13:17
首先在里边我先得到这个就是这个对象,因为咱要做个更新,我们调用base map中这个方法叫select啊,然后入里这个process ID得到对象,这是第一部分,然后得到之后,下面呢,咱们进行这么一个任务的查询。就查询你的任务或者代办任务啊,就简单写查询任务,调用刚才咱这方法get current task list里边传入流程实例的对象。ID最终回是一个集合啊,所以你看这代码刚才好像都写过很多次了啊,这里我们再写一遍,然后下面怎么做,把这个task list咱们做个判断,然后进行处理啊,但是过程中啊,咱这么来做,因为我这个查出任务中这集合是不是可能等于空啊,就是表示你没有下一个审批人,没有的话咱就直接更新这个表,有的话往里面更新一些其他信息啊,所以咱们给他做一个判断啊,我加上一个。
14:26
集合的判断。咱们加上一个,这个应该叫collections。就他啊。点上一个方法叫is empty task list,如果它不等于空,表示有下一个审批人,如果else里边表示没有下一个审批人,所以咱们依次做不同处理啊,那咱写一下啊,如果说有下一个审批人,这个审批人可能有多个,所以咱们在里边我先建一个例集合啊,咱加上一个string,叫这个S。
15:03
这个的。等于new上一个list,然后下面呢,咱们把这个task这个list集合进行遍历。啊,我加上task,然后加上这个task list便利之后咱们做那个就是相关那个信息的这个操作啊,通过task里边得到它,这个就是当前这个审批人,咱们叫这个A赛,然后根据这个审批人的名称得到那个用户的真实性,比如他的登录名称是那个ZS,张三真实姓名是张三,咱们把张三这个真实姓名得到,就是咱之前说过这个特点啊,再看一遍啊,就是在我们这个表里。你看到啊,Username是不是叫登录名称,Name是不是叫真实姓名,咱目前这里边操作应该是username,但是我现在想根据username得到它这个真实姓名啊,当然你可以直接就做这个username,咱为了得到这个nameme值,所以做了这么一个处理,根据实际需求来决定啊,现在这个就是我们那个username,那咱们来查一下啊,根据它我们做个查询,Get user by username。
16:16
然后得到我们这个。对象啊,就是。得到对象之后,我们从里边取到它那个用户的真实姓名,然后放到这个集合里面去。s.a的。然后加上system user.get啊,就是最终啊,在这构中有当前审批认证所有的实名,另外呢,在这过程中,咱要给下一个神秘人做一个这个消息的推送。啊,就是消息的推送,咱后面通过公众号的方式会经实现,目前先放到这里啊,所以现在啊这就完成了,完成之后呢,下面咱就去。更新。
17:01
这个这个流程里的这个信息啊,更这个更呢,我就直接复制啊,就是往这个。也就是里边的这个代码里。我把它啊拿过来。然后大家看啊,首先我在这里边啊,就是在描述里边,我就把这个,比如这里提示说等待谁要经审批啊,大是用这种方式,比如等待张三逗号李四审批,另外它的状态值是一,这个我们就完成了啊,就是有下一个审批值,然后再来看else里边,如果说没有下一个审批人,那咱就直接去更新里面那个信息,就更新那个process里边的值,但是更新的时候,因为他有同意和拒绝,同意的话,咱们把值就改成这个二,如果说不同意拒绝就改成负一。就是咱们这个表里边放的这个状态,你看这里啊,二通过负一驳回啊,就是做一个最终这个更新。
18:03
我写一下啊。加上。If判断,然后approve.gets点这个int value,如果它等于一,那咱们更新,如果不等一表示驳回,我们再继续更新,咱们更新一下啊,点set第我们加上就是加上这个就是审批完成。或者说审批这个同意啊,或者审批通过。啊,通过。然后咱们把它的状态值做更新,这个就变成二表示通过在else里边同样做这个事情啊。我们改成审批这个完成,然后里边驳回。或者说这个拒绝啊,这里边改成叫负一啊,所以现在啊,这个做到了,做到之后呢,最后我们调方法做更新。
19:03
Map中的阿贝白传入对象。所以现在啊,这个部分我们就最终完成了以上啊,就是咱们做这个审批中的这个部分。啊,这个咱们再看一遍啊,当然这里面还有一个这个直接结束流程的方法,给咱一会儿来写,先把这个过程先给它整理清楚啊,咱再看一遍,首先第一步我们就是得到认外地,然后这里面得到它那个流程变量啊,虽然咱目前没有用到这么一种方式,但是咱给他也获取一下,然后下面判断。如果状态是一,咱们就通过把这完成,如果是负一,那咱就驳回。结束流程,另外在record表中记录当前这个信息,就是操作这个信息,你是通过还是怎么样啊,另外我们查询下一个审批人,如果有的话,那咱们去更新process表,包括给下一个审批人用公众号推送消息,如果没有的话,那就直接更新这个表,这个通过改成二,驳回改成负一,最后我们做这个更新。
20:08
所以以上啊,把这个基本过程我们就完成了,完成之后呢,还缺少最后一个方法,也就这个方法,如果说状态师负一咱就驳回了,驳回的话我就直接结束流程,那咱们一会儿来编写这个结束流程的方法。
我来说两句