00:00
好,前面呢,我们编写了将我们的采购需求合并到某个采购单里边,并且呢,我们还可以给采购单分配我们的采购人员,那有了这些采购人员呢,采购人员就可以去来领取我们这个采购单,并完成采购,将商品入库,所以整个的逻辑在这儿,我们采购人员当看到有他的采购单以后,那他就应该领取来他的采购单,那一领取采购单呢,这个采购单的状态就应该变为已领取,那其实这个领取操作就应该是采购人员有一个自己的手机APP,手机应用,他打开他的自己软件,他可以看到当前分配给他的所有采购单,那今天他要出去采购,他要用哪些,他可以选中这些采购单,点一个确定领取,那我们就可以改变这些采购单的状态,同时,已经被领取了的采购单,我们的这些采购需求呢,就不能再被分配过去了,而且采购单一旦领取,我们这些需求就应该状态变为正在采购中。而。
01:00
而且这些需求呢,也在不能被重新分配过去了,当我们领取完成以后呢,手机按上又会有一个采购端的这个完成功能,那么采购人员采购完成了,点击完成,那相当于我们这个采购单呢,又可以去来结束,那么就还可以完成采购,所以接下来我们来写这两个接口,那这两个接口呢,不属于我们后台管理系统的一般功能,它属于我们对接员工系统的采购人员的两个功能,这两个功能呢,我们来模拟使用POS曼来发送请求,我们就来模拟手机,那么就希望呢,首先有第一个功能,我们采购人员可以领取他的这个采购单,我们可以将其他这些功能我们都先删掉。来创建出第一个功能,第一个功能要发送的请求叫we purchase receive,它来领取它的采购单,好,把这个放在这,我们的完整路径是HTTP。HTTP冒号,我们本机local host的八八端口,这是我们的网关API下的这个,而且呢,我们现在这个领取是一个POS请求,我来保存一下,我们把这个请求就叫采购人员,他在领取采购单,我们可以把它保存到某一个文件夹下,我来创建一个文件夹,这是我们这个采购人员系统,诶采购人员的这个APP我们来假装呢,有这么一个APP好来保存到这,现在呢,我们第一个请求是它我们给这儿来发送,发送呢,按照请求接口文档,我们需要发送采购单的整个ID,它来领取哪些采购单,因为所属于他的这个采购单可能有很多,所以我们在这来发送请求,既然是post body,而且呢,我们这种还是一个杰森数据,我们选raw,这是一个杰森,我们要领取的采购单,我们来放在这儿,比如我们现在雷锋阳领取他的二号采购。
02:56
负担。他要领取他的二号,我们来写一个二来点一个发送请求,那么现在就应该编写这个功能,现在这是一个404好,那现在来到CTRL来编写我们这个功能领取采购单。
03:10
在这领取采购单,那这个领取采购单呢,我们就可以处理的是一个post方法,我们来写一个post man品,它的整个请求路径呢,是我们这一块参照这一块,我们叫receive,我们要接收一些采购单,包括我们来写上我们的要用的这个方法,我把这个方法呢复制过来。我们要进行领取,那领取采购单呢?由于给我们传递的这个数据,它是一个杰森数组,我们post这一块是一个杰森数组,里边有我们这个ID,所以我们在这一块就直接可以来写,那么用long类型,用一个数组来类型来接收一个ID,这是我们来领取我们的这些采购单,我们叫ids,这是一个list。
04:05
那我们接收到这些采购单以后呢,我们就应该领取完成,我们来先给他return OK,当然这些细节我们不去考虑,如果要考虑细节,那么这个员工呢,只能领取属于他自己的采购单,包括想要领取之前先要查出这些没有被他自己领取的采购单等等,那我们就直接先把这两个核心功能一写好,我现在来希望purchase service有一个方法叫received,我们来领取这些采购单,这个采购单的ids在这儿,好来创建出这个方法,然后呢,我们来添加上这个方法的实现。这个方法的实现呢,主要有两点,第一点,首先如果我们来领了这个采购单,比如发请求是领二号采购单,那么就先要改变二号采购单的这个状态,这是第一点。第二点,有关二号采购单的所有的采购需求状态也都应该改掉,当然前提是我们要领取的这个采购单是没有被领取的,也就是新建或者已分配状态,所以我们现在在这儿。
05:10
先第一个确认当前采购单是新建或者已分配状态,这个呢我们才能领取,第二个如果要写细化,那还应该是自己的采购单,第二个改变咱们这个采购单的采购单的状态,然后呢,第三个改变这个采购单采购项的状态,改变采购项的状态,所以我们先来确认我们这呢有这些采购单,那为了确认方便,我呢先点一个stream,我们来做事之前点一个stream,点一个map,我们先将所有的这个采购单的详细信息,我们来给它封装过来,所以呢,我先做的第一步,我先来查询this.get8id,我们按照我们要领取的这些采购单,把采购单的详细信息我们查出来,最终把这个详细信息的集合我们来返回。
06:08
而且呢,我们最终要确定每一个里边的这些采购单是不是新建或者已分配状态,所以我们把这一块我们还要过滤,过滤哪些呢?过滤我们这里边儿的所有item里边它的状态码点一个get status status呢等等等等什么呢,等等,我们有两个状态,Where constant,点一个我们采购单的这个状态,它是我们这个新建点get code,或者它的这个状态呢,是已分配,如如果说。这个。或者呢,是已分配,那我们继续来咱们这个状态,Where constant,我们item.get status get status等等,我们的where constant,第二我们采购单的这个状态是我们这个已分配,但是呢,还没有被人领取,是这两种状态,那我们才可以给他使用,所以我们就return true return true的就是我们要的,否则的话,我们就return false return for就是我们不要的,我们把这些都过滤来,我们点一个collection to list。
07:23
这些采购单才是我们最终想要改变状态的采购单,所以我们把他们来进行一个状态改变,而且为了方便起见,要改变成什么状态,我可以继续点给他map一下我们这个当前的这个采购单,采购单呢,我给他点一个item,点我们set一个status,我们把它最新的状态给它设置上。我们先过滤再来设置,因为我们在设置之前还要判断状态,那过滤完了以后呢,我们给它设置最新的状态,最新的状态呢,应该就是已被领取点一个purchase status,点一个我们现在是已领取点get code,我们将这个设置完了以后呢,将这个最终再来返回return item,那这就是我们改变完状态的所有采购单,把这个collect集合起来,那想要改变状态只需要调用它的批量方法this.update bench8id,我们将这些呢以批量修改就行了。
08:26
那我们这个采购单呢,就修改完成了,当最重要的修改就是我们要修改咱们这个采购单,除了这个外,每一个采购单只要被变了,还有一个修改时间,所以我们在这给它设置状态的时候,把时间也设置上,点set,一个update time new,一个date。那么将批量的采购单状态改完以后,我们还应该加每一个采购单里边的采购项,我们也是需要进行改变的,所以我们还是遍利这个我们需要改变的采购单的这些集合点,一个stream,我们可以不用stream了,我们直接用for each.for each来给它遍历,遍历出的每一个item。
09:05
我每一个呢,就要对它进行处理,因为我们拿到的每一个,这是我们这个采购单,我们传过来的是所有采购单的ID,这个集合是采购单的ID,采购单ID我们拿到这些需要改变状态的采购单,我们要做的是查出当前这个采购单所有的这些采购项,所以我们现在需要采购项的这个service我们已经拿过来了,采购项的service呢,我们希望有一个方法点list我们这些采购项,Detail咱们这个八,我们这个采购单的ID,我们这有一个叫purchase的ID。按照我们采购单的ID找到这些所有的采购项,但采购单的ID,那就是当前我们来获取到它的这个ID,我们最终希望返回一个list的我们这个采购项叫purchase detail。
10:04
实体类,好,我们希望返回这个,我希望呢,有这么一个方法。我们来创建出这个方法,然后呢,我们再来创建出它的实现,那这个实现呢,我们来打开我们这个实现就是按照采购单ID。去来找到我们这是采购单的ID,找到这些采购项,然后再更新他们的状态就行了。好,我们在这儿来写一下,我们现在呢,需要他的这个this.list把我们的这个corrywaer,我们现在按照条件进行查询,New一个corrywaer,我们的条件是什么呢?我们来写一下corrywaer,我们的条件就是必须equal口,我们要找的这些采购项,也就是我们这个需求必须是他的采购单ID是我们指定的值,诶,那就是我们指定的这个值。
11:00
我们找到这些所有的这个采购项,然后把这个采购项进行返回,而这一块返回以后呢,我们在这就拿到了这些采购项,拿到以后我们就应该去来更新我们detail service,点一个UPDATE8ID,按照主键直接进行批量更新,我们这还有一个按照主键进行批量更新,我们更新什么呢?其实就是更新它里边每一个人的status状态,所以我们可以把它们拿过来,点二我们最终要更新的stream map,我们这个采购项entity。我们把这些采购项呢,最终我来返回,我拗一个我们这个purchase detail ntt,因为我们只想更新它的状态,所以我专门来拗一个它,我来返回这个。把这个呢收集起来,点一个collect。这有一个,然后呢,我们写一个to list。
12:02
我们把这个呢收集起来,我们要更新他们,我们把这个需要更新的这些采购项放在这儿,当这个东西呢,要跟它属性对拷,我们这些是原来数据库里边查过来的,但是呢,我们如果对拷,那就拷到全部属性了,我们现在只对拷它自己的ID,把nity里边的id.get ID拿来和我们来拷贝它的点set status,它的这个状态,状态呢就变为最新的状态,Very constant点。Purchase detail status status呢就变为正在采购点一个get code,那这块呢,我们最终来更新他们就行了,这就是我们写的领取采购单功能,好我来点一个重启,那现在呢,就照着这一块来测试一下,那我们现在这有效的这个采购单呢,这是一个三号采购单,三号采购单里边有这些采购需求,有四号五号采购需求,目前的这些采购需求呢,之前都是这些已分配状态。
13:07
来重新查询一下。好,现在这都是已分配状态,我们来给他领取一下这个三号采购单来领取。来测试,我来领取三号采购单。点一个send。好,我们200OK领取成功了,那接下来我们再来看一下我们这个采购需求查询,那现在这个状态呢,就变为正在采购,而且如果是正在采购状态,我们再来给他合并整单,这应该不能进行操作的,所以我们就应把以前的这个合并整单的这个请求,我们还可以来细化一下,来到这个controller里边。它有一个合并方法,我们找purchase controller的merge,它在这合并整单的时候,这是采购单的ID,那我们如果没有,我们新建一个,但是如果有了,我们一定要确认我们要合并的这个采购单状态是正确的,所以这一块呢,我们留给大家在这儿做一个检查就行了,确认我们这个采购单状态是零或者一才可以,才可以合并好,那么这个功能就写完了。
我来说两句