package com.chinaztt.mes.equipment.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.chinaztt.mes.equipment.service.EquipmentService; import com.chinaztt.mes.equipment.vo.FactoryVO; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author ZTT */ public class EquipmentUploadListener extends AnalysisEventListener { private static final int BATCH_COUNT = 1000; List list = new ArrayList<>(); private EquipmentService equipmentService; private Map factoryMap; public EquipmentUploadListener(EquipmentService equipmentService, Map factoryMap) { this.equipmentService = equipmentService; this.factoryMap = factoryMap; } @Override public void invoke(EquipmentData data, AnalysisContext analysisContext) { if (StringUtils.isBlank(data.getFactoryName())) { throw new RuntimeException("缺少工厂名称"); } if (null == factoryMap.get(data.getFactoryName())) { throw new RuntimeException("请填写正确的工厂"); } FactoryVO factoryVO = factoryMap.get(data.getFactoryName()); data.setFactoryId(factoryVO.getId()); list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { equipmentService.importEquipmentExcel(list); } }