异步/Spring Event事件通知/先返回前端成功,后端继续执行

需求:
创建采购预定单(导入需要采购商品Excel)。导入供应商商品(Excel)。匹配库存满足、定价相等、折扣最低。

导入供应商商品接口流程:
解析、入库供应商商品Excel、拉取某供应商商品、比对

慢在拉取某供应商商品、导入供应商商品成功入库 就算 前端操作成功

0、原接口修改

@Autowired
protected ApplicationContext applicationContext;

@Override
public void uploadSupplierGood(MultipartFile[] files, String preorderId) {
    // 上传excel内容
    uploadExcel(files, preorderId);
    applicationContext.publishEvent(new PreorderEvent(this, preorderId));
}

@Override
public void followUpload(String preorderId){
    // 拉取某供应商商品
    get...(preorderId);

    // 比对
    compare(preorderId);
}

原接口:

@Override
public void uploadSupplierGood(MultipartFile[] files, String preorderId) {
    // 上传excel内容
    uploadExcel(files, preorderId);

    // 拉取某供应商商品
    get...(preorderId);

    // 比对
    compare(preorderId);
}

1、event文件夹新增

import lombok.Getter;
import org.springframework.context.ApplicationEvent;

@Getter
public class PreorderEvent extends ApplicationEvent {
	private static final long serialVersionUID = 1L;
	//注册用户对象
    private String preorderId;

    public PreorderEvent(Object source, String preorderId) {
        super(source);
        this.preorderId = preorderId;
    }
}

2、listener文件夹新增

import ....event.PreorderEvent;
import ....service.PreorderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
public class PreorderListener {
    @Autowired
    protected TPreorderInfoService tPreorderInfoService;

    @EventListener
    @Async
    public void registerPreorderEvent(PreorderEvent preorderEvent) {
        PreorderInfoService svc = preorderInfoService;
        if (preorderEvent.getSource() instanceof PreorderInfoService) {
            svc = (PreorderInfoService) preorderEvent.getSource();
        }
        svc.followUpload(preorderEvent.getPreorderId());
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值