00:00
各位同学大家好,刚才呢,咱们完成了流程审批功能,那下面呢,我们继续往下实现,下面呢,我们来做这个界面中的两个部分,一个叫已处理,一个叫已发起,那咱们先解释一下啊,什么叫已处理,什么叫已发起?我在这张图里边,还是用这个流程给大家解释一下啊,这两个什么意思,然后咱们来编写接口,最终进行实现,首先我们看第一个啊,叫做已处理,就是已经处理。大家说一下啊,这个什么意思,什么叫已处理,大家看我这张图里边啊,咱先不管这个,咱就看这个准个的流程,我们现在adin是不是提交了请假申请,然后提交之后,现在第一部分张三是不是要审批,大家注意啊,如果说张三审批通过,或者说张三拒绝,这里边张三是不是完成了任务操作,这个叫什么?就叫已处理,比如说现在啊,张三审批完成了,他就完成处理,这时候到了李四这个节点,李四也审批通过了,李四是不是也处理一个任务,所以这个就叫已处理,那我写一下啊,就是对我们。
01:11
发送过来的这个。请求。或者说这个任务我们进行处理。把任务处理完成,这个处理呢,可以是通过或者说是拒绝。那这个过程我们就称为叫做已处理。这各位明确啊,比如说现在说的具体点,比如说我们现在张三审批通过,那张三就是把这任务已经处理了啊,张三就是已经处理了这个任务,或者说啊,张三现在给他就是审批。拒绝,那这时候张三也表示已经处理了这个任务,这个就叫已处理,但是各位特别我要说明啊,Din是不是叫提交请假申请,它叫什么?叫做已发送,它不叫处理,只有说你审批成功或者审批拒绝,这个才叫已处理,这是第一部分啊,而这个怎么做呢?我们强调啊,在中呢有个接口,就是里边这个叫history service,我通过history service中的方法可以进行实现,这咱们一会儿来编写这个代码,这是咱们说的第一部分啊,就是什么叫已处理。
02:30
然后这里边呢,我们再来看第二个,第二个叫什么呢?这个叫做已发起。那这里写下啊,什么叫已发起?我这里做个说明,比如现在我这张流程里边啊,Adin是不是提交了请假申请,那我din就是已发起这个信息,比如说到通俗点啊,谁提交了这个。申请或者提交的这个审批。申请,那这里边它就是已发起这个过程啊,它就是这个已经。
03:05
发起的这个过程,比如说现在啊,我们这张流程图中din提交了请假申请,那我din它就是已发起。这是我们提到的里边的这个啊,然后这个已发起该怎么实现呢?大家来看啊,我们在数据库里边啊,有两个表,其实之前咱一直在用,但是很多同学可能还是不清楚这两个表到底什么含义,因为之前的那功能做的不完整,目前功能大部分都做到了,这个表应该很好理解,大家看第一个表啊,叫OA process,这个表中是什么呢?咱们之前说的啊,是记录我的提交这个流程的信息,比如说现在比如说我的in发起了这个请求,或者发起这个请假的这个申请,那这个时候大家看这个位置啊,咱是不是要等待张三审批,等待李四审批,也就是说这个表中存的就是你这个提交那个请求,或者说以发起这个信息,然后咱们不断更新这条记录,最终让流程完成,这个叫OA process,就是咱们提交这个。
04:12
请求的这个记录的这个表。然后第二个叫record什么意思呢?这个里边就记录啊你的每次操作,然后大家看啊,里边有一个叫ID,这个是不就是呀,就是发个请,然后你里啊有两条,第一个发起申请,第二个张三经理是审批通过,就记录你的每次操作,所以两个表是不一样的啊,里边记录你这个发起这个信息,然后不断进行更新,里边记录你的次这个操作。我这个din发起的第一次发起,第二次审批,包括第三次审批,以此类推,这个是我们提到的啊,所以说我们做这个以发起怎么做呢?其实很简单,咱就去这么写啊,根据我这个当前的这个用户ID去查询我们这个OV表就可以了,这个相关数。
05:12
然后大家看啊,在OA表里边发个信息,然后里边有这个用I,根据我们能到这个用户就是已发起这个相关的内容,所以以上啊是说的两个部分,第一个已处理,就是谁完成审批这个过程,第二个叫已发起,谁提交了这个审批申请。这个是关于需求的说明啊,然后下面呢,咱们开始写它的接口,首先我们写第一个接口,就是里边这个已处理的接口,那这里边我来写一下啊,这一部分我就复制了啊,然后里边内容咱们详细写一下,这个过程同样啊,咱们还是写一个分页查询,虽然咱没有用到分页啊,也是把这知识点,这个技术咱给他再练习一遍。那我现在啊,给大家写到这个位置。
06:01
这个叫已处理,咱们传入当前页和每页记录数啊,已处理,然后在里边我们来写一下啊,因为它要做到这个分页,所以我们加上一个配置对象,里边加上这个内容啊,这个内容应该是那个叫。啊,然后咱们叫配置,等于上一个配置对象。在里边我们传入当前页和每页记录数,这是我们写到的啊第一部分,然后之后呢,我们调用service中的方法进行实现,最终它返回一个叫I配置对象里边的泛型,咱之前说过啊,用这个process view,因为这里边有更多的值啊,包括里边的名称都存在,它返一个VO。这里边我们叫I配置,然后起个名字,比如咱叫配置model,在这过程中我们调用service中的方法进行实现,在service里边我们写个方法,比如叫这个find。
07:09
好,把这个方法给它加上啊。在里边传入咱们这个参数,就是这个配置。所以现在啊,这个完成完成之后,最终呢,咱把它做一个t result.ok里边加上配置model,现在啊C部分咱就完成,完成之后呢,下面在service里边,我把这方法进行创建。这些方法就是查询以处理这个任务。最后来到实验内容啊,咱们把这稿最终写下啊。分页查询这里边没有条件啊,就是一个分页查询也不能说没有条件,这个条件是固定的,根据当前的那个。就是里边的那个用户啊,查到就查到你当前用户中里边他完成了就是哪些这个任务啊。
08:01
然后下面我们来写一下这个部分啊,那怎么做呢?强调啊,因为咱要查询这个叫已处理,就是我的用户啊,他完成了哪些任务,他是审批通过,是审拒绝,都叫完成任务,那怎么做呢?我强调啊,在咱们里边呢,有一个service,它叫做history service,通过它能查到你当前操作的历史信息,所以咱们现在啊,把它先注入进来。我们加上这个。进行注入,然后注入之后调用里边的方法我们进行实现,那在这个位置啊,我们来写一下啊,呃,这方法比较多啊,咱直接找到这个方法,这个位置来就在这里啊,大胆看怎么来做啊,首先我写一下步骤啊,咱们的第一步操作,咱们先封装下这个查询的条件,因为我要根据那个用户信息查询他已经完成了哪些任务。
09:00
然后第二部分我们就可以调用方法进行这个分页查询,或者说条件分页查询,因为根据用户信息进行查询,查询之后呢,它返回的肯定是一个list集合啊,这是第二部分,然后返回list集合之后,咱的第三部分我们就是。遍历这个返回的list子集合,最终给它封装成我们的这么一个类型对象,就是例子集合里边加上一个叫VO给它进行封装啊,跟咱之前说那个类似啊,然后这个之后呢,最后按照这个那个页的效果,咱们用这个叫I配置。封装你最终分页查询到所有的数据,然后给他返回。以上啊就是一个基本的过程,那下面咱们来写一下这个具体代码啊,首先第一部分调用history service里边的里边一个方法叫。
10:06
Task query啊就这个就是封的条件,然后在里边呢,我们继续啊,点上它的方法,这方叫task,就是你的任人在里边,我们传入当前的用户信息,就是当前那个用户名啊,咱通过log in user info.helper.get username,根据它查询。然后这个时候呢,我们再点一个方法叫。这什么意思啊,是不是就完成啊,就是这个人已经完成了任务啊,咱通过他来奉上这个条件,然后最后我们可以加上一个排序,我们加一个叫啊这么一个task。Time,根据这个时间啊,咱做一个降序排列ESSC,最后它会返回一个条件对象,我们起个名字就叫query啊,这是第一部分封饶条件,注意这个过程啊,我再说一遍,我们做法就是根据当前的用户名,得到当前这个人已经完成了哪些任务,这里边是封装一个条件,根据这个名称进行查询,这位置加了一个排序。
11:18
然后之后呢,我们来调一下这个方法啊,Query里边有一个方法,这个方法它就叫list的配置,然后list配置中呢,传入两个参数,就是咱们之前提到的啊,我这里再写一下,首先啊,第一个参数表示咱们分页查询这个开始位置,第二个参数表示你每页显示的。记住数开始位置呢,有一个计算公式咱们提过啊,我再重复一遍它怎么做,用当前页减一再乘以每页记录数,然后每页显示记录数,就是咱通过配置P可以取到啊,那这里边我来写一下啊,首先计算它的开始位置。
12:04
咱们叫这个比喻。然后里边啊,比如说转成咱们用这个写下啊位置我进行个实现在里边。加上这个叫配置,点上get current,然后减一,就是当前页一。减一之后呢,我们再乘以每页显示的记住数,用配置p.get size,这是第一部分啊,得到你的开始位置,这个完成,然后第二个得到每页显示的记录数,我们也同样写一下啊。配置PAL,点上get size,这个是每页显示记住数,然后把两只咱们放进去,一个比例,一个叫size,最终它返回的是一个例集合啊,就这个例,就咱刚才说到的啊。这步叫便利,它进行实现,这一得到就是当前这个用户已经完成的任务,这咱就实现啊,然后得到之后我在后面分页,咱们把这个总记录数也得到,用query.count的方法最终反映一个值,咱们起个名字啊,叫total count。
13:17
所以现在啊,这部分完成完成之后下面怎么做呢?咱就把这个例子集合进行遍历。最终装这个list view这个对象,然后在装I配置分中这个结构最终返回,那咱们写一下啊,首先啊,我先把这个list process view这个集合,我们先做一个历。等于上一个A瑞list的,然后咱们啊,就是便利这个list集合。我在里边做一个便利啊。加上里边这个,呃,就是这个啊,它这个对象啊,History task。我们起个名字啊,比如叫这个呃,就叫item了啊,加上例,然后加上之后,下面咱给他做一个就是类型的转换,那这怎么做呢?我们进一步来说明啊,首先大家看啊,这里边得到一个叫task,那在这里边呢,咱们得到一个值,这个值是什么呢?大家看我们的这个值。
14:22
叫get ID,咱们那个流程实例的ID得到啊加个注释。就是通过它获取一下你那个流程实例的ID,然后咱怎么做呢?我们是不是可以根据这个流程实例的ID查询获取到你那个流程那个记录,就是这个对应的信息啊,把这得到,然后这个得到之后再转成VO就会更加方便,那咱们啊继续写下啊,根据它做个查询。那咱们现在啊,因为要条件查询嘛,我加一个DA query rapper加上这个。
15:07
等于上一个拉姆的在里边设置它那个条件。咱们设置一下啊,加上。Get,这个叫ID流程例ID啊,这个就完成封装之后,咱们调法来查下啊。Base map里面那个方法叫select啊,咱找一个方法啊,这是应该是查询一条记录啊,用这个set传入rapper,最终返回一个per对象,现在啊,这部分完成了,根据流程ID得到per对象,然后下面咱做的事情就是啊,把这个对象转换成这个VO这个对象。咱给他快速做一下啊。
16:03
等于上一个view。然后在里边用咱之前那个工具类中的copy,把对象中的复制到这个VO中去,现在就可以了啊,然后可以之后这里面会生成多个VO,咱们把多个VO最终放到我们那个例子集合里面去。那咱放下啊。Per will list的。点上A的。加上这个对象,所以现在啊,这个部分我们就完成了啊,完成这么一个查询,并且把数据得到了,得到之后最后再来封装这个I,配置这个对象。我们最后啊做这个封装。加上。View。然后起个名字,比如就叫配置model,等于一个配置。
17:00
这是view,然后在new这个配置里边呢,咱们传入几个参数,咱之前说过啊,这里边我们就传那个三个参数家看一下啊,它承载很多方法,这是一个,这是一个,这是另外一个来用这个方法传入三个值,当前页每页记录数,还有你一共有多少条记录,就是咱说的总记录数啊,我在里边写一下啊。当前页。第二个加上size,每页显示记录数,第三个total count,总记录数。包括啊,像里边咱把那个例子集合给它也放进去,所以现在啊,在配置model中有咱们需要的数据,最后把它做个退。到这里啊,咱们这部分就最终完成了,就是查询我当前的用户已处理的任务信息,通过history service进行实现。
18:00
所以现在啊,这个接口我们就讲到这里。
我来说两句