4 changed files with 117 additions and 25 deletions
@ -0,0 +1,67 @@ |
|||
package org.dromara.platform.listener; |
|||
|
|||
import com.alibaba.excel.context.AnalysisContext; |
|||
import com.alibaba.excel.read.listener.ReadListener; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.dromara.platform.domain.bo.WorkOrderInfoBo; |
|||
import org.dromara.platform.domain.vo.WorkOrderInfoVo; |
|||
import org.dromara.platform.service.IWorkOrderInfoService; |
|||
import org.springframework.beans.BeanUtils; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 自定义监听器读数据 |
|||
* |
|||
* @author gjh |
|||
*/ |
|||
@Slf4j |
|||
public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|||
@Resource |
|||
private IWorkOrderInfoService workOrderInfoService; |
|||
private List<WorkOrderInfoBo> list = new ArrayList<>(); |
|||
/** |
|||
* 自己定义一个缓冲量 |
|||
*/ |
|||
private static final int BATCH_COUNT = 10; |
|||
|
|||
|
|||
public WorkOrderInfoListener(IWorkOrderInfoService workOrderInfoService) { |
|||
this.workOrderInfoService = workOrderInfoService; |
|||
} |
|||
|
|||
/** |
|||
* 每读一行数据都会调用这个方法 |
|||
* |
|||
* @param workOrderInfoVo |
|||
* @param analysisContext |
|||
*/ |
|||
@Override |
|||
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { |
|||
WorkOrderInfoBo bo = new WorkOrderInfoBo(); |
|||
BeanUtils.copyProperties(workOrderInfoVo, bo); |
|||
|
|||
|
|||
// 读取一行数据就添加到集合
|
|||
list.add(bo); |
|||
// 判断是否到达缓存量了
|
|||
if (list.size() >= BATCH_COUNT) { |
|||
list = new ArrayList<>(BATCH_COUNT); |
|||
list.forEach(workOrderInfoService::insertByBo); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 读完整个excel之后再调用这个方法 |
|||
* |
|||
* @param analysisContext |
|||
*/ |
|||
@Override |
|||
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
|||
if (list.size() > 0) { |
|||
list.forEach(workOrderInfoService::insertByBo); |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue