谷粒商城p99空指针异常

如果此处出现空指针异常必定是两个可能:

当然先说前提:代码是完全跟着老师一步一步来的,其次前端不能用老师的最终代码,有部分数据写入与目前p99有冲突

我是直接把老师的后端的service包以及controller包进行复制进去避免了出错

在b站上,有同学提到这个空指针异常

错误复现:

首先先根据报错信息进行代码定位,如图此时是定在了item的循环处,我的错误在于postman的请求json中的items写错了item

这里的id是采购单的id,而items是采购需求的id,此时如果已经引入了feign到了product必须对照着商品的skuid进行编写采购任务,其次采购单必须为已分配状态,在这里隐藏的坑一定是在后台系统新建采购单和采购任务的时候,以及postman的请求路径及json参数以及格式,如果仍有错误,请根据PurchaseServiceImpl的done方法一条条往下进行理清数据步骤关系,关注报错信息,如下为done与postman请求

 @Transactional
    @Override
    public void done(PurchaseDoneVo doneVo) {

        Long id = doneVo.getId();


        //2、改变采购项的状态
        Boolean flag = true;
        List<PurchaseItemDoneVo> items = doneVo.getItems();

        List<PurchaseDetailEntity> updates = new ArrayList<>();
        for (PurchaseItemDoneVo item : items) {
            PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
            if(item.getStatus() == WareConstant.PurchaseDetailStatusEnum.HASERROR.getCode()){
                flag = false;
                detailEntity.setStatus(item.getStatus());
            }else{
                detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.FINISH.getCode());
                3、将成功采购的进行入库
                PurchaseDetailEntity entity = detailService.getById(item.getItemId());
                wareSkuService.addStock(entity.getSkuId(),entity.getWareId(),entity.getSkuNum());

            }
            detailEntity.setId(item.getItemId());
            updates.add(detailEntity);
        }

        detailService.updateBatchById(updates);

        //1、改变采购单状态
        PurchaseEntity purchaseEntity = new PurchaseEntity();
        purchaseEntity.setId(id);
        purchaseEntity.setStatus(flag?WareConstant.PurchaseStatusEnum.FINISH.getCode():WareConstant.PurchaseStatusEnum.HASERROR.getCode());
        purchaseEntity.setUpdateTime(new Date());
        this.updateById(purchaseEntity);




    }
{"id":4,"items":[{"itemId":1,"status":3},{"itemId":2,"status":3}]}

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值