package com.chinaztt.mes.basic.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.chinaztt.mes.basic.entity.Warehouse; import com.chinaztt.mes.basic.service.LocationService; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author ZTT */ public class LocationUploadListener extends AnalysisEventListener { private static final int BATCH_COUNT = 1000; List list = new ArrayList<>(); private LocationService locationService; private Map warehouseMap; public LocationUploadListener(LocationService locationService, Map warehouseMap) { this.locationService = locationService; this.warehouseMap = warehouseMap; } @Override public void invoke(LocationData data, AnalysisContext analysisContext) { if (StringUtils.isBlank(data.getWarehouseName())) { throw new RuntimeException("缺少仓库名称=====》库位名为:"+data.getLocName()); } if (null == warehouseMap.get(data.getWarehouseName())) { throw new RuntimeException("系统暂无此仓库====>仓库名为:"+data.getWarehouseName()); } Warehouse warehouse = warehouseMap.get(data.getWarehouseName()); data.setFactoryId(warehouse.getFactoryId()); data.setWarehouseId(warehouse.getId()); list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { locationService.importLocationExcel(list); } }