00:00
各位同学大家好。咱们继续往下来实现啊,咱们看一下这个流程里边啊,刚才咱们做了第一步和第二步,第一步呢,查询审批分类,以及对应里边的审批模板,然后第二部分选择具体的某个模板,填写表单信息提交审批,提交审批之后我们就要启动一个流程实例,并且记录你的境外信息,比如说现在啊,咱们的流程实例已经启动了,然后系统之后我们下面做什么呢?比如说我现在啊,张三发送这个请假申请,他的第一个审批人是他的部门经理李四,那这个时候张三已提交之后,李四是不是能看到他目前正要办理的任务,所以咱下面进入到第三步,就是审批人查询他的代办任务,比如说这里写到的啊,审批人在我们的功能中,就可以在这个叫待处理的列表中获取它目前的审批列表,或者说他待处理的任务列表,那下面呢,咱开始做这个事情啊,这个过程中咱们编写一个接口,就是查询这个代办任务,他可能有一个任务,也可能有多个任务,咱目前都进行查询。
01:14
而这个过程中我强调啊,其实我们实际这种显示过程中,咱们其实不需要分页显示,包括各位同学应该用的那个钉钉或者别的方式,你发现里边啊,好像没有分页,我们这里边呢,之所以写分页,就是一个目的,给大家一起来练习一下这个分页的写法,让大家掌握这个分页的做法,但是其实实际中这个功能我们不需要做分页,咱们只是为了练一下这个技术,给大家讲解这个过程该怎么做,既有业务有这个代码的。所以下面呢,咱们开始写这个接口,就是查询代办任务的列表。那咱们开始做一下啊,首先这里边我们加上一个方法,名字叫find pending,传入当前页和美的技术数,这部分我就复制了,然后里边内容咱们详细写一下。
02:06
我现在啊,把它放到我们这个CR里边,CTRL里边,咱们放到这个位置。在里边传入当前页和每页记录数,这时候写的一个方法啊,然后这个之后呢,下面呢,我们就来调用service中的方法,咱们进行实现啊,那我们来写一下啊,因为里边呢,要涉及到这个分页,所以咱们还是上一个。里边加上的这个啊,然后咱们起个名字。在配置里边入当前页和每日记数,这是第一部分,然后之后呢,我们调用service里边的方法,可能这个方法我们给起个名字。
03:05
然后在里边传入咱这个参数叫配置,最终返回的呢,让它还是这个I配置这个对象,或者说就是一个配置对象啊,因为这是一个接口时间类的关系就是一样的啊,咱就要返回它。然后给它起个名字。我们叫这个。配置这个model。最终啊,把它我们可以做一个。这里面啊,给他。水吞一下。result.ok传入这个叫配置。Model。所以现在啊,这个部分我们就完成了,然后这里边啊,给它加上那个,就是相关那个形啊,我给他加上啊。应该是我们这个。这个但是其实可以啊,里边有些我们需要特别来理一下,所以我这里边呢,特别写了一个类,为什么用类呢,我们看一下VO类里边啊,跟这个process做过比较。
04:08
大家看啊,在里的IDID。类型ID在ID,每个ID是不是它应的称,因为称后显示把它做一是我们写的为了它名用。然后之后呢,咱们在里边把这个方法进行创建。查询待处理的任务的列表。这是我们写到的啊,然后之后呢,咱们来到它的实现类中,把这个方法我们最终做一个实现。
05:04
那咱们啊,在这里边最终给他写下啊,这个过程呢,我刚才提到了啊,其实实际中我们可以没有分页,但是我这里边为了各位看着更明确,就加上一个分页的这么一个操作,那咱们看怎么来做啊,因为这个过程中第一个他查的是任务的相关操作,所以咱们用到activity中一个service,就是里边这个叫task service进行。那咱写一下啊,这个该怎么去做,我把它的步骤给各位写一下,然后咱们同样我按照我习惯的方式啊,还是一步一步我们进行最终的实现。那现在啊,我先写一下它的基本的步骤。首先呢,我们要操作的话,第一步操作怎么做呢?因为咱们要查询,那根据什么查呢?是不是根据这个审批人经查,就是当天是谁要审批这个任务,所以咱们现在啊,根据他进行操作,比如现在啊,我当前登录用户是这个李四,李四呢,比如说是张三的部门经理,那李四是不是要审批,所以咱第一部就是。
06:10
封装我们查询到条件,我们是根据当前的这个用户的名称,就是登录那个用户名进行查询。这个啊是我们做的这个事情,就是封装这个条件,一会儿咱会做一个用户的切换,张三提交,然后李四审批,包括在王五审批等等,咱一块儿实现啊,然后之后呢,第二部分封制条件之后我们调用方法。进行这个分页。条件查询最终返回的肯定是一个list集合,这list集合中就是当前那个所有那个代办任务的一个列表。项啊,就是代办任务的这么一个集合,或者说一个列表,这是我们的第二部分,然后这个之后我们下面怎么做呢?咱的第三步操作各位明确啊,因为最终我这里边是返回例次集合了,但是咱为了这个效果就是里边数据更加完整,刚才咱们说到了V里边有ID,有名称,另外里边还多了一个这个属性叫task ID,就是我们当前这个任务ID,这些在里边都是没有的,所以咱把数据最终就分到这个process view这个中去,咱们现在啊做这个事情。
07:30
就是封装返回list集合数据。到这个list的也是一个集合,但是集合泛型是这个process VO这个里边去放到这位中。这是我们要做的事情啊,那这怎么做,大家想一下,咱是不是就把这个第二步的集合便利得到里边的值,然后在往里边进行封装啊,这咱一会儿进行完善。然后这个之后我们里边的第四步操作,因为咱是分页嘛,但是这个分页呢,我们用的并不是用那个my plus去查MY数据库啊,但是咱返回到是plus那个对象,那咱怎么做呢?第四步就来封装返回的这个配置对象,或者说咱用这个I配置啊,就是它那个接口。
08:20
不是一样的啊,我就用这个I配置,用配置也是可以的啊。最终啊,就是返回这个对象。所以咱们最后要做的事情就是啊,来封装一下这个配置对象,就是得到我们最终想要那个结果。比如I里边,咱们可以设置它的当前页啊,每页数值,包括它一共有多少条记录,包括它那个集合是什么,都进去,最终再进行返回。以上啊,就是一个基本的步骤说明,那这个之后下面呢,咱把这代码我们来写一下啊,看它具体该怎么做,首先第一步封装的条件怎么做呢?用task service里边我们加上一个方法,大家这方很熟悉,Task query。
09:13
是不是创建任务的查询这个对象,然后创建之后呢,下面一个方法,这个方法叫task,就咱说那个审里个们有那个user,点上get username,现在把这做了设置。然后设置之后呢,在这个条件里边啊,其实还可以设置,比如说我们做一个排序啊,做一个什么值也是可以的,那我加一个啊,就是大家看这个。我们加上一个叫。然后加一个叫taskco,再点上一个方法叫。
10:01
我说啊,这个各位应该都能看懂什么意思,根据这个时间做一个降序式排列啊,咱可以给它加个排序,或者说我加一个asc,那就是升序,咱做个降序。最终返回的是一个叫RY,就咱说那个条件对象,类似于咱们在里边加那个,跟那个有点类似,就是封装条件部分,根据当前登录的用户名行查询,包括咱做一个排序,所以第一步完成,完成之后进入到第二步啊,第二步怎么做呢?咱们调用里边的方法做一个条件分析查询,这个方法是什么呢?大家看这个啊。如果list那就查全部了,但是现在我们加分页,所以我们加一个叫list配置方法,看到它了吧,啊,如果你没有分页,就是这个咱写的故意麻烦你啊,加上一个list配置,在配置中我们明显看到两个参数。
11:02
那这两个什么意思呢?给大家解释一下啊,写到这个位置。就是例子的配置方法中有两个参数。那什么意思?首先第一个参数跟咱之前说的分页一样啊,分页中是不是有一个叫开始位置。就是开始位置啊,然后第二个参数表示的是你每页显示的记录数。这就是里边的两参数,那两参数怎么得到啊,我们先写第一个参数叫开始位置,这个我要明确啊,怎么来做,这是买soq里边讲过的啊,咱们买so中有那个利密的关键字,第一个开始位置,第二个每月记住数,那我写一下啊,怎么做用咱们里边那个当前页,我加上配置P,因为咱们有这个参数啊。点上一个方法叫get,这个用当前页怎么样减一,然后再乘以你每页显示的记住数。
12:07
我们给它乘一下啊,用就乘一个叫配置。点上get这个size,这个得就是咱们说的开始位置啊,这个咱们就完了。然后这里边啊,我给他就是。做一个类型的转换,给它都变成那个int类型啊,给它类型变一下啊,咱给它稍微处理一下。变成这个。Int类型。然后里边加一个in,这个begin。所以现在啊,把第一个参数完成了当前页减一,再乘以每页记录数,这里边得到了开始位置,然后第二个参数是每页显示多少条记录,咱们叫这个size。然后这个怎么做,就是我们从配置中取这个get方法,把这个得到。
13:07
啊,咱们取一下啊。点上get size方法,所以现在两参数得到了,得到之后咱给它传进去,第一个begin,第二个size,最终返回的注意啊,是一个list集合,这个list集合呢,就是咱们说的当前这个人的所有这个待审批的任务,或者他待处理的任务,这个列表就是这个task list。所以现在啊,咱们把第二步就完成了,这是我们做到的啊,但是完成这个过程中呢,我这里啊,比如说我现在其实返回它也能显示,但是我现在我想把它成一个对象,所以下面第三步需要做件事情,比如说我们现在啊做这么一个处理。把这个。List task转换成这个叫list view,咱们做这么一个转换,另外view中有些值是里没有的,咱需要再查询,再进行封装。
14:07
所以下面啊,我们来做这个事情,给他最终完成封装,那咱们来写一下啊这个操作。咱们看啊,这个应该怎么进行实现啊。然后现在比如说我们现在啊,我们先创建一个,就是那个最终那个list集合list view,先把集合创建出来啊,咱们叫这个。VO list或者叫list啊,等于上一个release,然后下面呢,把咱们这个task list集合进行便利,便利之后我们做这个操作啊,咱加上这个task。Task list现在做了便利,然后便利之后怎么做呢?在里边啊,我们要取到里边一些相关的值,所以咱然后再进行封装,所以咱们现在啊,给他来往下写一下啊。
15:01
那下面怎么写,我们来看啊,首先第一个你看啊,这个集合中每问是task,这个是view,这两个完全不一样,所以咱们可以怎么做呢?给大家说明啊,我们现在可以便利得到每个task,然后从每个task里边呢得到,就是每个任务中那个流程实例是不是能得到,得到流程实例之后从里边取到它的值,然后得到一个当前那个流程对象,就是咱们之前保存那个这个对象,然后通过这个对象再变成VO是更加方便,所以现在我们就这么来做。我把步骤写一下啊,然后咱们做个实现这过程并不难,但是里边做的事情比较多,所以咱们一点来做啊,首先第一个我们在里边啊,通过这个task,或者说从这个task任务里边获取它这个流程实例的ID。法律得到,然后得到之后第二部分咱们就是。
16:00
获取一下,或者说根据这个流程实例的ID获取一下这个实例的这个对象,或者这个实例啊,就是咱说那个instance,把这得到,然后得到之后我们的下一步操作做什么呢?从这个流程实例对象里边可以获取啊,它那个叫business key,就是咱说的业务key。因为各位应该记得啊,咱们刚才在存U的时候,存的就是里面那个那个ID啊,就把它放到里面去,这个叫就是process ID。然后之后呢,我们在里边把这得到之后,我们可以就是根据这个业务key获取到这个process,这个对象就是咱们的流程对象,获取流程对象之后,最后再来做就方便了,把对象中的值给它,就是复制到这个process view里面去,包括一些没有的值,咱再手动往里面set就可以了,然后最终啊,都放到这个最终这个process list集合中去,那就完成了,这是我们要做这个事情啊。
17:14
然后咱们按这个步骤把它写下啊,虽然说不难,但是也做了很多的步骤,因为咱最终目的各位明确啊,你task没法直接变成它,最后把task变成process,从变成VO,那就更加方便啊,咱是这么一个过程,那下面我来写一下啊。首先获取下这个流程实例ID task中有个方法ID。大家看这是不是得到了,然后得到之后第二部分根据这个ID获取这个流程的实例对象,我们用runtime里个这个query,这么query。
18:04
然后继续,我们在里边。上它下面一个方法叫这个ID里边们刚才这个ID值,然后再点一个single,话得实对这部分完。我把这格式啊,稍微调整一下。现在啊,我们做了这个部分。然后这个实例这个得到之后,我们继续往下来看。哎,我都放到这里啊,因为我习惯这么来看啊。你看这值第一个方法,第二个第三个就这值不要传错,然后之后往下来看,咱们从这个流程实例中得到它那个业务。Get,这个个咱作为那个,包括咱们看一下之前咱有这个方法啊,如果各位不记得,咱看一下,当时咱们启动实例的时候,你看啊,这是不是。
19:10
然呢,是II。写下啊。写到这个位置啊,就是它。就是这个。ID。现在啊,这个得到,然后这个得到之后,我们下面啊继续来做,下面做什么呢?咱们根据这个process ID得到这个对象啊,但是为了更加明确,更加严谨这个位置啊,我给他做一个判断。判断一下啊,如果说啊,这个key它本身于空,就这个东西没有没有得到啊,那那就直接给它continue,跳出当前循环,如果不等于空,那咱们再根据它做一个查询,我来查一下啊呃,这个查,因为这就是在我们这个service里边用base中这个方法,咱们叫这个。
20:12
Select by ID,根据ID查询传入这个business。把进去,但这个呢,给做个转换啊,还是转成那个类型啊,给转一下。就是点这个pass business。最终返回展这个ID啊,就是这个,然后。传进去之后,最终返回那就是per对象,所以大家看啊,咱们到这一步,我们的目的应该离最终的结果应该越来越近了啊,通过这个得到这个对象,然后得到这个对象之后,咱们下面啊,把这对象就是变成这个VO对象,向VO对象中来设置我们需要的值,最终放到那个结构中去,那咱们来放一下啊,等于上这个V。
21:11
然后向VO中放数据,我们先用一个B里边的copy,把里边的复制到VO中去,这咱们刚写过啊,然后这里边还有一些其他的值,我们也给它手动一下,它的其他呢,应该就是这个值没有啊,这个叫task ID啊,咱通过task.get ID把它得到。所以大家看啊,到这应该都有了,都有之后咱把这个给放到我们最终的那个集合里面去,也就是这个集合。VO,放下点这个。A的方法加入这个VO。所以现在啊,到这个部分,咱们的前三步应该就完成了,难点就在这个第三步这个位置啊,因为咱们要把这个list task转成VO,把task呢变成变成VO程,各位好去看一看啊,实际你可能也会有其他方式,但是总之一个目的,我就想给他变成这个样子,所以你可以用各种方式最终达到我们这个效果,我这里写的是我比较喜欢的方式啊,最终我达到了目的。
22:32
这个完成啊,完成之后我们看第四步操作封装返回最终这个I配置对象。那咱们最后写一下啊,我现在加一个叫I配置,然后里边加上这个。在里边起个名字啊,我就叫这个配置,等于上这么一个配置,里边也是加上泛型process view。
23:00
然后在new配置这里边,咱们就需要传入一些参数了,那它传什么参数呢?给大家说明啊,这里边你看啊,它重载了很多的方法,咱目前要用的,其实用到的是这个方法,就这个有层构造啊,大家看里面传什么第一个什么。当前页第二个每月记录数,第三个你的总记录数,就是一共有多少条记录,所以咱们现在啊,就传这三个参数,那我写一下啊,第一个。当前页。配置PMO盖current,然后第二个。我们写一下啊,配置PAL,点上get size,就是每页显示多少条记录,这两个完成,完成之后我们继续来写啊,下面还有第三个参数,第三个参数是你一共有多少条记录,那这个怎么做呢?咱往上看一下啊,大家看我们的。
24:00
这个位置有一个叫query啊,咱通过这个RY给他可以查一下,里面一个方法叫count,这个得到就是一共有多少条记录啊,咱们叫这个。然后把这个值我给它拿到这里面来。就这个位置,呃,在这里啊,所以现在完成啊,完成之后我们向配置里边再把刚才咱们封装好那个集合放进去,就这个叫VO,最终把这配置做个对。所以大家看啊,到这里咱这部分就最终完成了啊,这是我们写的这个最终这个代码。然后把这流程给各位再整理一遍啊,刚才咱们写到的首先啊,我们的做法就是查询里边的相关这个数据啊,我们做一个查询。然后查询之后呢,最终返回一个配置对象,呃,这里边报了一个错啊,咱给他改一下啊,啊怎么改呢,就是多种方式啊,第一个你可以就改成这个叫I配置。
25:04
或者说呢,你在蕊吞里边给它就直接蕊吞一下就可以了,你把这行注掉,直接做个蕊吞都可以啊,看你想怎么写,我就直接蕊吞一下啊,然后这里边我们做了一个分页,但是其实实际中可以不写分页,咱们为了练习一下这个代码的编写方式,特别写了一个分页,然后咱们来到实验类中啊,在实验类里边我们的做法就是第一个封装查询条件,根据当前用户名查一下他当前需要代办的任务,然后第二个调方法查询得到这个代办任务的子集合,但这个我们要显示,所以我要做件事情,把这个集合变成这个proceed VO,但是它没法直接变,怎么做呢?把它得到每个任务,通过每个任务中这个叫流程ID得到流程设宜对象得到里边的业务K,这业务key咱刚才启动的时候已经看到了,就是我们这个流程ID,根据ID得到你这个流程。
26:05
称对象,然后用它转成VO更加方便,最终放到list机构中去,为了最终我们显示使用,然后最后啊,放到这个分析数据,包括new这个配置向里面传输集合,最终屡退。所以以上啊,咱就把这个过程就最终完成了,查询当前用户这个待处理的任务列表。
我来说两句