需求:
创建采购预定单(导入需要采购商品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());
    }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐