00:00
各位同学大家好,刚才呢给大家分析了员工端我们实现审批的实现过程,咱们按照以上步骤,下面开始进行实现,那首先呢,我们看第一个部分,第一个部分呢,我们先来编写接口,查询所有审批分类,以及每个分类中对应的审批模板,那这个怎么做,咱们先做个准备工作,然后进行具体实现。那大来看一下啊,我现在来到我们的项目中,我在里边呢,咱们先建个controller,这个专门用于我们的工端进行使用,当然你也可以在之前里边写,咱为了区分,我重新建个controller,我在这位置写一下啊,首先为了区分,我建个包叫API,然后在API中呢,我们建个controller,我们起个名字就叫process controller。这个我们完成创建,然后创建之后呢,在CTRL上面加上相关的内容,咱们把这部分给它直接拿过来。
01:06
也都是之前写过的啊,第一个swa to的注解,第二个rise controller,返回这次数据,第三个require mapping,加上它相关的这个请求路径,这个我们就完成了,然后完成之后呢,咱们继续来看啊,大家看我课件中啊,这位置是不是还有一个注解,这个注解呢,咱之前没有用过,但是这个特点咱们介绍过,我把这个加上啊,给大家再来解释一下啊。之前呢,我们内容中曾经提过一个词,不知各位是否记得啊,它叫什么跨域。这各位应该有印象啊,这里再重复一遍,什么叫跨域?它指的是三个地方,你的访问协议,IP地址、端口号,有任何一个不一样是不能访问的,访问会产生跨域,比如说我现在用HTTP去访问HTPS,我用192的IP去访问172IP,我用9528访问8800,他们不一样,这里边要访问会产生跨域。咱们之前的解决方式怎么做的呢?我们是在前端做的处理,大家看啊,咱们在这个前端项目中有一个配置文件,叫点JS,大家看这个位置。
02:22
在40行这个位置中有一个叫啊,就是咱说那个代理,然后他怎么做呢?我们现在啊,当我们访问的路径是DV-API,它就给我们会转发到这个8800里边去,这位置咱们加了一个配置。值设置成处,表示它支持跨域,之前我们是这么来做的,通过前端做了处理,当然咱们一会儿这个前端过程中的,咱用的不是这个项目,咱是整合微信公众号用另外一个项目,而在另外一个项目中咱就没有做这配置,所以我们现在是在服务端后端做处理,那怎么处理呢?咱们CTRL上边加个注解,叫这个注解,通过它能解决跨域啊,所以这个注解大家记住,就是解决跨域的这个注解我们现在在后端进行处理。
03:13
然后这个加上之后,咱在里边呢,加上咱们的注入到service,最终写接口,那咱们把第一个接口该怎么去实现,我们做一个具体的分析。我这里边啊,给大家特别来写一下啊,咱们分析一下这个该怎么进行实现,我在图里边给大家画一下啊,首先这个接口中啊,我们要做的第一件事情应该是查询所有的审批分类,这个应该给他查到,而所有审批分类怎么查,大家看我们的数里啊,就这个表process里边是不有所有的审批分类,咱把这些给它查出来,这是我们的第一部分。但是这个查呢只是第一步,但还有第二部分怎么做,就是查询每个审批分类里边的所有审批模板,还要做这个事情,那这个什么意思呢?咱们说的具体点啊,大家看我的就是ID是二是不叫人事,这是分类,咱们看模板中啊,大家看模板中这个请假和请假测试是不是都是二,所以在这里边应该有两个审批模板,咱们把它进行查询,然后查询之后注意这个效果啊,这个是审批分类,然后这两个是它对应的审批模板,最终咱们要变成这个样子。
04:39
那这个样子怎么变成呢?咱要把这数据进行一个格式的封装啊,就是要封装成我们需要的这个数据格式,那怎么封装,我们来做个说明啊,首先咱们看一下我们这个实体类,我们直接找一下。就是里边这个叫type,找到这个试题类。
05:00
在这个位置啊,然后大家看在实体类中呢,前面是它的基本属性,包括ID啊,名称描述等等,然后各位这个属性。这是个什么?是不是一个list集合呀,所以咱们做法就是在一个审批类型的类中加上一个list子集和属性,这个属性代表一个类型中的所有审批模板,然后这个各位应该记得啊,它表示表里边没有这个对应字段,但是大家用它做这个封装啊,这是我们要做的事情啊,我这里写一下。我们在里边封装的过程中,咱们就是每个审批分类到对象里边,咱们有一个list集合的这个属性啊,有个list集合,然后这个list集合里边会包含每个分类里边的所有的模板的数据,所以现在我们就这么来做,比如说咱们一会儿怎么做呢?先查出所有分类,然后把每个分类便利就得到每个分类啊遍历,然后每个分类中根据ID查出模板得到集合,再进行封装,最终返回一个对象中,既包含分类,又包含里边的所有模板这个集合,这是我们目前的这种方式啊。
06:20
以上就是一个基本的分析,那这个分析之后呢,下面呢,咱就具体写一下这个代码,把代码我们做一个实现。那咱们来看一下啊,首先我们的CTRL里边,我们先进行注入啊,咱最后注入。Private啊,咱们把这个叫。我加上一个get提交,然后加上他的名字啊,咱加个注释啊,查询所有的审批分类和每个分类中所有的审批模板。
07:07
下面呢,加上具体方法,Public。Result。然后加上这个名字。在里边我们写上它的具体内容,这个内容呢,咱们调用service中的方法进行实现,我在里边啊加一下这个方法。因为这里边查所有它不需要条件啊,咱们最终返回的是什么,是不是肯定是一个历次集合,因为你有很多的那个审批分类,是一个list集合,在list色结构中加上它的泛型process type。最终啊,咱们把它做一个旅。我给他啊,快速完成。我们加上。点OK,然后入这个list。所以现在啊,大家看这个control部分我们就完成了啊,咱们把这个就做到了,然后这个做到之后,下面呢,咱们重点写一下这个service,在service里边做一个实现,其实这种方法咱之前写过很多类似的啊,这里边给各位再详细写一遍,这是我们创建的方法,来到实现类中,把这方法我们最终最终实现。
08:23
啊,在这里边我们写一下啊。因为这个过程中呢,一会儿要去查询那个审批模板,所以我们在里边啊,把那个审批模板的service先注入进来,因为一会儿肯定要用到。O把这个入啊一个基本完成了,完成之后下面在里边我们写下这个具体代码,同样啊,按照我一贯的习惯啊,我先把步骤写出来,然后咱们再一步一步进行实现。那大家跟我一起来想啊,这步骤该怎么做?
09:03
首先第一部分咱们是不是要查询所有的审批分类,这是第一部分,然后他返回的肯定是一个例子集合啊,这肯定没啥说的啊,就是所有水分类嘛,是一个例子集合,可能没有,可能一个,可能两个,也可能三个或者更多,然后第二部分。便历返回到所有审批分类的例子集合,就把它做一个便利,这是第二部分,然后便利之后怎么做?第三步啊,就是得到每个审批分类,得到之后干什么,大家说干什么,根据你的审批分类的ID。去查询对应的。审批模板,这是我们做的第三部分,也就是说我们现在啊,比如说我查询这个审批分类有这么多,咱们得到一个,比如这个加班,它的ID是不是一啊,咱们拿着一查这个就是模板表啊,就这里边不是得到这个一,然后拿着这个啊,咱刚才看的一个这个表啊,我们看这个审批分类,在分类里边,比如说我们得到这个就是ID是一,就是出勤嘛,咱们拿这个一查询这个模板表,看一对应的里边这个模板有哪些,然后把它一次查到,根据这个字段进行查询啊,就是两个表,一个基本的一个查询。
10:24
那咱们啊,把这个给他写完这个步骤啊,然后查询之后第四步呢,咱们就是把根据审批分类ID查询出对应的模板,这个数据封装到每个审批分类对象里面去就可以了,他查出数据呢,可能是一个,就是可能没有,也可能一个,也可能多个啊,但是这里边我们用集合进表示,最终完成这个封装。所以说以上啊,就是咱们写的一个基本的过程啊,这个咱们就完成了分析,完成分析之后,下面呢,咱们开始写这个具体代码,把代码我们给它做一个具体实现,那咱们下面啊开始来写一下啊。
11:10
首先我们的第一部分咱就直接调用base map中的方法select list,我们直接穿过空,因为它不需要条件,咱们得到就是所有的审批分类的list集合,我们起个名字type list就是第一部分。然后第一步之后,咱把这集合进行便利啊,我这位置便利一下啊type。这里啊,写一下啊。加上这个per type,然后后面加上我们这个历集合便利之后呢,得到每个审批分类啊,就是然后得到之后怎么做,看这位置啊,根据ID我们查询对应的这个模板这个信息,那咱来查一下啊,我现在把它那个ID给它得到。
12:08
我们写一下啊,Get里边这个ID。啊,就是这个审批分类的ID,就是咱们的这个。就是它啊加个注释。得到之后我们进行查询。查询的话呢,在里边我们加上一个查询这个条件啊的query,注意啊,这里查的是它那个模板,所以咱加的是这个叫process。啊,这是那个模板,咱们加个等于上一个拉,然后在里边设置它的条件,我们加上一个EQ。这个type ID ID ID。
13:01
现在啊,咱们把条件就加进去了,呃,这个名字稍微改一下啊,我叫type ID。写的更规范点啊,然后之后呢,我们进行查询,那咱们继续写一下啊,各位注意啊,我现在查的话应该是查我们的。这个表一个分类下边可能没有模板,可能一个也可能多个,所以咱查的话,我们调一下方法啊。写一下刚才注入过了的service里边我们加个方法是这个叫list的啊,这里不能用get,因为可能是多个啊,传入rapper最终返回的是一个list集合,这个list集合就是每个分类下边所有那个审批模板的集合,所现在啊这个咱就查到了,然后查到之后我们到第四部分,就刚才写的第四步。咱们怎么做把这个集合呢,封装到每个这个分类对象中去就可以了。
14:05
加上点site list,然后把集合放进去,所以现在啊,这个咱们就完成了,完成之后注意啊,最后一步别忘记啊,咱别忘记把这个集合需要给它返回一下,你不返回最后肯定等于空啊,这个需要注意返回一下啊,很多同学在写的时候呢,这部分都写对了,但是最终这里忘了写了,它旅存档,后来总是没有数据,这个别忘记啊,把这查出的所有省批分类的集合返回,然后在集合里边封装上它每个分类中这个模板的集合。这个我们就完成了啊,所以以上咱就完成了第一个接口的编写,查询所有审批分类,以及每个分类中所有的审批模板。
我来说两句