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