00:02
各位同学大家好,我们继续来开发医院管理模块,刚才呢给大家分析了排班的相关需求,包括咱们里边的接口的开发,那咱们下面呢,来开发里边的第一部分。根据医院编号查询医院的所有科室列表,那咱们下面就来编写一下这个相关的接口,我们来做一下。首先第一部分呢,因为咱们做的是科室部分,所以第一个呢,我在里边咱就先创建一个controller,那我在里边做创建。这个controller,比如说我们起个名字,我们就叫做department controller,那我来写一下。Department controller。把它做创建,然后创建之后在它上面我们加上相关这个注解,那我们加个注解就是rest。Ctrler,然后咱们再加上下一个注解request mapping,在request mapping中加上它的路径这么一个名字,那按照之前的给它改成我们目前这个效果。
01:10
按照这个改一下。这里边我们起个名字,就要这个department。这样的话,咱们把这个就创建了,然后创建之后呢,我们下面做的是在里边,咱是不是要注意这个service就是department service,而这service之前咱们在写那个数据接口中应该写过了,所以我们下面把它就直接入进来,我们加一个。Private department service。这个做注入,然后注入之后呢,下面咱就开始编写里边的第一个接口。根据医院的编号。查询医院里边的所有的科室的这个列表。那我们写一下啊,首先加上一个注解A片object里边加个value value中等于我们的名字,查询医院的所有课列表。
02:07
然后写完之后,下面写上我们的提交方式,咱就来一个get提交,然后里边起个名字,比如给它起个名字,我就叫get这个de PT list。然后后面传入我们的医院的编号,我叫hos扣的,然后写完之后,下面我们加上方法public。Result。后面加上我们这个名字。然后在方法里边呢,咱们要把这个医院的编号给他得到,所以用到我们这个pass这个注解,把这编号给他得到,我们来快速写一下,跟之前写法都类似。然后写完之后呢,咱下面就来调用service里边的方法department service里边比如咱给方法起个名字,我就叫find的这个DPT,这个因为是数性结构嘛,就咱们叫这个tree里边加上这个医院的编号,然后加上之后最终反映我们的结果,因为咱们的医院的里边的科室信息里边有很多科室,所以咱返回到是不是应该是一个例子集合。
03:18
咱们来一个例子。而例子中呢,我们要加上什么泛型呢?给大家说一下啊,因为咱们目前呢,科室下边是不是还可能有它的小科室,就是它的具体科室,前面是大科室,里边是小科室,所以科室不是只有一个,如果一个的话,你加个底盘就可以了,但是目前怎么加呢?大家看我们之前导入这个model里边,咱们找到里边一个view,在hospital里边,大家看这个叫department view。然后我们看啊,这里边有你的科室编号,科室名称,还有一个什么,是不是丘准,丘准是什么,就是它的下级节点,比如果大科室下面有小科室,所以咱用它比较合适,目前你就返回这个这一项里边的泛型就是这个department view。
04:09
这样的话我们就写出来了,然后写完之后,最终咱做个退result.ok传入这个list,这是关于我们的CTRL开发,咱们把它就快速写出来了,这各位知道啊,就最终返回list集合有多个科室,而科室下边它会有子科室,所以咱用这个物由类,就是这里边写了一个粒子集合,表示你科室下边的子科室。这个我们就写出来了,大家注意这个结构,它下面还有自节点,然后写完之后CTRL就完成了,完成之后呢,下面咱们首先把service里面的方法先创建。根据医院编号,查询科室信息,最终写它的实现类,在实现类中呢,咱就完成我们最终这个数据封装,这个封装呢,比之前写法要稍微麻烦一点,但是要求各位能给它写出来。
05:08
那咱最后就重点把这个最终的封装过程给它,快速就完成一下,咱们来做一下啊,打开怎么做。首先第一步呢,我就把步骤写详细点,我们先创建一个。历史集合用于咱们最终的数据的风格,就最终数据肯定是放到一个历史机构中去,那咱来一个list的,里边写一个department view。比如说这个集合,我们起个名字,我就叫这个result。等于谬上这么一个a release,这是我们的第一步,建一个粒子集合,用于最终重装,然后写完之后我们看第二部分,第二部分呢,咱就可以通过那个猫哥DB做个查询,就是根据我们的医院的编号。查询医院里边的所有的科室信息,把它都查出来,但是我强调啊,查出来之后呢,并不是咱的最终目的,咱们把科室信息最终是要变成这个样子,就是咱刚才看那个department的view中那个结构,最后咱再变,咱先把数据都查出来,最终再做封装,那我们来查一下啊,打看怎么做。
06:22
我们的做法就是呢,咱可以直接调用这个department report里边这个方法叫band o,然后在里边传入咱们相关参数,就是里边这个example,在example里边设置它的条件,那咱来设置一下啊。然后怎么设置呢?我们来写一下,首先咱先new这个对象department,比如叫department这个query啊,用于咱们的对象new上一个。地盘闷头。然后用上之后呢,向里边设置它的值,就是我们这个hot code,咱们传过来参数,然后设置之后,下面咱就创那个example,之前咱就创建过,我就快速写一下啊,就是example。
07:11
点上of里边传入这个depend query,最终返回的是这么一个example啊,比如就叫。Example。就是我们用于封装咱的条件。然后封装之后呢,咱们把这个example就直接传入咱们的find的O里边,是不是可以了,它最终返回到就是咱们要得到这个数据,而数据是一个例子集合,那例子集合中咱们加上它的泛型就是这个be department。我把它加上,这样的话呢,咱现在就把这个完成了,就是通过查询one个DB,根据这个医院编号查出了里边这个就是所有的科室信息,那这个比如我给他改个名字,我叫这个底part顿的list,这就是咱们所有的课时信息,我加个注释啊。
08:08
所有科室的这个列表信息,就是这个底判断的例子,里边有我们的大课室,还有里边的小科室,这个我们就查出来了,但是查出来之后呢,咱不能把它返回,因为这个数据呢,不是咱们要求的格式,咱要给变成这种格式啊,当然还有多个大课时小格式,这样的话才能方便咱们做这种数形结口显示。那怎么做呢?给各位说一下啊,它的方案可以说有很多很多种,而我们怎么做呢?咱们先看一下这个数据中这个特点,就是这个数据我们先观察一下啊,看里面有什么特点。大家看啊,里边有很多的就是科室,包含科室编号,科室名称,然后各位看啊,在每条数据后面是不是都有这个东西,就是咱说这个大科室编号,包括这个大科室的名称,所以咱们现在根据这个科室编号对应它是不是能做个分组,什么叫分组,比如你看里边有这个内科。
09:11
内科编号是不是一样了,那我们根据内科病号做分组,比如这边有外科,根据外科做分组,比如说现在我们分成有内科、外科、妇产科等等,然后再得到每个大科室里边的小科室是可以的,也就是说咱们从这个查出来的例子机构中先得到所有的大科室,再得到大科室里边的小科室是不是就可以做到,所以这是我们一种方案,当然写法有多种方式,那比如说现在我这么来做啊,给大家写一下,首先第一部分。我们先根据我这个就是大科室。给他做一个就是。分组。然后怎么分组呢?咱就根据里面这个就是大科是这个编号。
10:00
做一个分组,而大科是编号,咱们刚才看到的就是里边的这个值叫做。B扣的,根据它咱们把这个做个分组,也是把它得到,然后得到之后我们再来获取,就是里边的每个大科室里边的它的下级那个就是子科室。这是我们的实验思路,那下面我们来做一下啊,方案多种方式,第一种方式你可以把它变历得到里边每个B个code做分组,当然这个如果咱用原始方式便利再得到分组数据,这过程并不方便,所以咱们把代码写的更简洁点,我们用一个JAVA8中一个特性叫stream流的方式做到stream流要各位知道啊,它是什么意思呢?就是针对我们的集合或者数组进行操作,把你集合数组进行计算筛选或者结果的输出,但是它并不改变里面内容,只是把结果做一个计算,做一个操作,所以咱下面用这个可以做一下,那咱看怎么做啊,首先第一部分。
11:06
咱把这个department的例子先变成个stream流,就点上个stream,然后点上之后把它做分组,咱加个方法,就这个collect。然后collect里边呢,我们加上一个就是分组的这么一个操作,给大家写一下啊,怎么分组呢,里面有一个工具类叫这个collectors。然后在开里边呢,有个方法就这个g grouping by,然后BY里边就加上你那个结构,那比如咱加一下啊,因为咱们现在做的是把我这个就是大科室编号做分组,那分组之后呢,里边比如这么来写,我来一个department,然后点上这个叫get。B扣的大家看啊,这样的话就完成的结构,然后完成之后我们看最终它会返回这么一种形式,大家看这写法啊,我说各位是否能看懂,给大家解释一下啊,首先你看它返回什么。
12:05
是一个外部集合呀,而外部集合中有K有Y6,它的K部分是什么?就是你得到的所有那个大科室的那个ID,或者说编号,然后第二部分室里边那个就是集合,包括里边那个部门的这个数据,也是大科室下面那个小科室那个信息,所以现在我们把它就得到了,咱用这种方式针对这个就是大科室编号做一个分组,然后最终得到这个结构。那这结构,比如给他改个名字,我叫这个。D department们的这个map方便咱操作,这个咱就完成了啊,然后完成之后呢,咱下面来做,因为现在map中呢有咱数据,它有K大科室编号和里边的科室信息所在,下面把这个map做一个便利。就是便利这个。Map集合,也就是department map。
13:00
那各位想一想啊,麦克集合怎么变利?有哪些方式,我觉得各位应该能想到啊,首先第一种方式,我们得到里边的所有K,然后便离K,根据K是不是到Y6,第二种方式,然后它的K和Y6的关系,就是里边那个entry那个关系,然后做到,那咱就用第二种方式,就是它那个关系来做一下啊,那我现在写个。For循环,然后在for循环里边呢,首先我们来一个map,点上这个叫做ENT。安垂里边的加上它的KY6,它的K是缀Y6,就是这个科氏这个力次集合,这是我们得到的一部分,然后咱们给它起个名字,这名字比如就叫entry,然后加上冒号,冒号后面是咱得到那个S。那再加上底department的map。点上这个叫安。
14:00
这样的话,咱现在把这结构做到,就根据它,我们做一个便利得到里边这个安垂这个关系,然后得到之后呢,咱下面怎么做呢?我强调啊,就根据这个安得到里边的K。然后再得到里面那个Y,也是它这个get k get value,然后它的get k是什么呢?各位应该知道啊,那得到的是不是就是你那个大科室那个编号,就是这个值,就是在这个分组之后的编号。然后写一下啊,就是大科室的编号,我们给它起个名字,比如叫这个缀。我就叫这个这个big扣啊,给它加一下啊big。Cold。这个得到就是大科室编号,然后得到之后呢,咱可以得到大科是扣的里边对应的里边那个数据啊,咱们把数据得到,而数据就是里边这个Y表,也就是里边这个历次集合,大科是code的,对应的所有数据,也如咱们看到这里啊,比如大科是假如是外科,那他把外壳对应这个数据得到,因为数据中有很多嘛,所以它只有一个粒子集合。
15:11
这是我们得到的这个值,然后给它改个名字,比如叫这个department。这个例子啊,咱现在得到这个值,呃,但这个跟上面这个名字啊,它有一个重复,咱为了区分给它改个名字,比如叫这个DEPEND1,这个this啊,跟它区分一下啊,这里加个注释。得到是你大科室。编号它对应的。这个。全部的这个数据,这样的话,我们现在把这就得到了啊,然后得到之后咱们往下做啊,大家注意下面做什么呢?咱是不做这封装啊,把大课室数据封装,然后再封装大课室里边的小课室,也就是说现在咱要用这个就是做封装这部是大课时,这是它下面的子节点。
16:05
啊,那我们就给他写一下啊,来看怎么做啊,首先写一下。就是现在数据都有了,这是科室编号,这里边的数据,那咱们首先先封装咱最边那个。大的这个科室。然后再封装里边那个小科室。那咱们看啊,这个该怎么封装,这个过程呢,要稍微麻烦那么一点点,但是这个思路各位要清楚啊,你要知道我们最终的效果就是要给它变成这个结构,其实你不变这结构也可以是咱为了用到我们的IUY,为了让我们的数形结构更加方便,用这种结构咱可以快速的显示,所以咱给它就变成这种形式。那下面我们写一下大科室的封装,来看怎么做啊。首先我就直接立对象department。VO。
17:00
然后咱起个名字,我叫department,这个1VO啊,我也区分啊,咱加个1NEW上一个department VO,咱new一个对象,然后里面封装,就是每次便利M集合之后,里面都有这值,然后咱们向D判断的这个VO。EVO啊,我把一放到后边啊,这么看更明显一点啊。然后向里边放它的数据,第一个数据就是我们那个。部门的编号,而部门编号咱是不是放这个大科室编号,第一个扣的就是里面这个结构。这各位应该能看懂啊,然后第二个是不是放你那个大科室的名称了,大家放一下,就是vo1.set这个DPT内,而它的名称怎么得到呢?咱们通过这个集合是不是得到,就是来这个集合点上里面那个值,因为这个值呢,你得到那个名称大科是应该就是第一个名字,比如咱通过第一个里面都有那个值要盖的这个。
18:02
Big name这样的话是不是可以了,这句话什么意思呢?大家看啊。咱们如果说得到我这个科室,而科室里边的就是每个数据后面是不是都有一个科室的这个名称啊,咱就可以得到里边这个名称,就是这个叫B格name,这样的话咱就完成这个大科室的封装,然后这个方向之后呢,下面咱在包装里面那个小科室,因为一个大科室下面有很多的字节点,所以咱们首先先建一个历史集合,我叫department view。这集合起个名字,我叫这个children。等于new上一个,呃,Release用于封装那个子节点,就是小科室,然后下面咱给它做一个便利。啊,遍历一下,然后遍历什么呢?是不是还是遍历咱们这个department,就这个例思嘛,就是我们这个值啊,DEPARTMENT1这个list把它遍历,那我们写一下啊,我们就来一个department。
19:04
然后这个1LIST遍历之后呢,得到里边那个子节点,就是它的小克式啊,那我们来一个VO,就是咱们叫VO2。等于就是U上一个底盘的VO啊,这是VO啊,后面叫V2啊,这写错了啊,改快速改一下。Vou,然后捏完之后呢,向这个二里边来放,咱们这个小科室数据还是两个值,第一个code,这个code的呢,咱通过department直接给它取出来可以了。那我来取一下啊。Department。点上这个盖头。这个DPT扣的,呃,就这个值啊D问。点上。里边这个。扣的,然后除了这个之外,还有它的名称,我们就写这个二。
20:02
点上set这个名称,咱们同样给他得到。点上get这个name。这样的话呢,咱把这个子节点就完成了,然后在完成过程中呢,因为它这里边呢,就是每次我们都需要用这个对象往里放数据,而这数据最终是不是要放到这个粒子集合中学,因为咱们是有一个集合,就是一个大科室,下边有多个小科室,所以封装到这个。栗子集合里面去,那就写这个children,准点上这个A的。啊,点上A等。然后在里边加上这个V2,这样的话我们现在就完成了这个过程啊,给大家再说一遍啊,因为稍微麻烦点,然后大家看怎么做的啊,首先在前面这是我们的所有科室,而这个科室它的列表这个结构并不符合咱们的要求,所以咱要做封装,那怎么封装,把它先变成一个外部集合,外克集合中的K就是大克数编号,Y表就是它对应那个数据,然后在里边咱们把它变利,变利之后得到每个大科室和里边的每个大科室六个数据,然后数据得到之后,第一部分先封装大的这个科室,科室里边放它的编号和名称。
21:25
编号就是这个K名称,它里边这个名字,然后再放小科室,因为一个大科室下边是不是有很多小科室,所以咱们把它这个例子有便利,因为这是大科室对应那个全部数据嘛,让它便利,便利之后我们得到多个多个放到这个例子集构中去,所以目前呢,咱们这个大科室的对象和小科室集合都有了。然后都有之后,大家想一下下面怎么做呀。你说做什么?大家可以想一下下面怎么做。咱是不是要把这个小科室部分放到大科室的children准里面去,就是做这个风格。
22:04
然后写一下啊,就是把咱们。小科室的粒子集合放到。大科室的那个修准里面去。那我们给他放下啊,因为你要做封装嘛,咱们的大课是这个VO1。就是这个值,然后我就点上set children准放大到小颗尺,是不是就是children准。这样的话是不放进去了,然后放完之后别忘记还有最后一步啊,最后一步我把咱们把数据最终是不是要放到这个伪造的里边,就是咱们最终这个结构中去,因为现在我这里边是便利做封装,所以咱们给他最终再放到咱们的。最终的。到里边去。那我给他最终放下啊。Result。点上set这个啊,应该就是A啊,不是set,点上这个A里边放这个department view,这样的话我们就完成了,完成之后最终别忘记咱们把这个result要做一个返回,所以这样的话呢,咱就完成了我们数据的。
23:15
这么一个分割啊,这就是咱们最终的化装结果,也就是我们的这个接口就完成了这个过程,我们再看一遍,然后最终咱们通过swag把它完成一个最终测试。那我们再看一遍啊,一个过程啊,首先CTRL里边我们做法就是根据医院编号得到你所有的科室的列表,咱们返回是个例子集合,因为科室是有多层,所以咱用例子中用这个底盘,VO里边有这个例子的。在threat里边我们做这个封装过程,封装过程中首先先根据编号查出所有可时就这个例子,然后咱们为了方便用到使用流的方式,把这个变成list结合,在list结合中呢,我们是这个结构,首先啊变成map外的K是你的大科,是编号Y60上对应那个数据,因为它有多个嘛,就是一个大科室编号对应它的一个数据,然后下面我们就得到每个大科室和每个里面数据,然后这是封装大的课室,这是封装小的课室,封装过程中咱给它放到里边,然后最终完成我们这个结果,然后咱们把它最后返回。
24:27
也就是把这个数据变成麦克,然后不断便利,最终一个一个封装,最终咱会有多个这种结构,一个大科室对应多个小科室,咱们就是完成了这么一个结构。所以这是关于咱们写到这么一个。查询医院下边所有科室的列表功能,这咱就完成了,所以要求各位啊,把我写的这段封装代码好好去写一写,这过程要稍微麻烦点,因为咱数据里边又要嵌套,要做这个封装,你把这部分一定给他要弄清楚,多去写几遍。
25:04
所以现在完成了啊,完成之后咱做个测试,首先我先打开swa。咱们测试一下啊,然后里边大家看这接口就是底盘的controller啊,当然你可以加上中文啊,给它做个提示,我就直接测试一下啊,然后咱把它打开,在里边呢,咱们传入一个医院的编号,比如现在我找一个院编号就这个啊,1000,然后下划线零。这个编号。我把它先复制过来啊,就是这个。然后复制之后,我们用它来做一个查询,那我现在点这个try it out。大家看最终结果是不出来了,然后这个结果我们来仔细看一下啊,首先是一个数字形式,然后第一部分它的大科是编号,大科室名称是不是叫专科,专科下边叫秋准,秋准下边是不是它的小科室是有很多,然后看第二个叫妇产科,妇产科下边有很多的小科室。
26:09
包括咱再看一个有国际医疗部。然后包括下面它应该还有就是加的值啊,包括你看下面这是比较多一点啊,然后这个叫中医口,是不是还有它的小科室,所以咱们最终想要的结果是不是就是这个结果,而这个结果我们用MUI应该更方便实现一个数形结个显示。所以咱们目前就把这个接口就最终完成了,大家把这能做到啊,然后写完之后呢,别忘记啊,在CTRL上边还有一个注解,咱之前讲到过这个注解。各位应该知道啊,这个注解解决的是不是咱说那个跨域问题啊,所以把这个别忘记加上,别说后面会有问题,所以现在关于咱们做这个根据医院编号查询医院里边所有科室列表的接口,我们就最终开发完成了,然后下面咱就开始整合前端,把这部分在页面中做一个显示。
我来说两句