package cn.com.qmth.im.bean; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import cn.com.qmth.im.config.Param; import cn.com.qmth.im.multithread.Producer; public class MyProducer extends Producer { private static Logger logger = LogManager.getLogger(MyProducer.class); @Override protected void produce(Map param) throws Exception { logger.info("***************************任务生产开始"); String sourceDir = Param.dataDir + "/"; String batch = param.get("batch").toString(); // List cs = readSubject(); Map ics = readSubjectCodes(sourceDir); if (ics.size() == 0) { logger.debug("无数据导入"); return; } else { logger.debug(ics.size() + "个课程"); } for (CourseDto ic : ics.values()) { offer(new ConsumerDto(ic, batch)); } logger.info("***************************任务生产结束"); } private static Map readSubjectCodes(String sourceDir) { Map map = new LinkedHashMap<>(); XSSFWorkbook wb = null; try { wb = new XSSFWorkbook(sourceDir + "subject_info.xlsx"); XSSFSheet sheet = wb.getSheetAt(0); int rows = sheet.getLastRowNum(); for (int i = 1; i <= rows; i++) { Course c = new Course(); XSSFRow row = sheet.getRow(i); String ecCode = row.getCell(0).getStringCellValue().trim(); String yunCode; try { yunCode = row.getCell(1).getStringCellValue().trim(); } catch (Exception e) { yunCode = (row.getCell(1).getNumericCellValue() + "").trim(); } String name = row.getCell(2).getStringCellValue().trim(); c.setCode(ecCode); c.setName(name); CourseDto ic = map.get(yunCode); if (ic == null) { ic = new CourseDto(); ic.setSubjectCode(yunCode); map.put(yunCode, ic); } ic.addCourse(c); } } catch (IOException e) { throw new RuntimeException(e); } finally { if (wb != null) { try { wb.close(); } catch (IOException e) { } } } return map; } @Override protected String getTaskName() { return "试题导入"; } // private List readSubject() { // List list = new ArrayList<>(); // XSSFWorkbook wb = null; // try { // wb = new XSSFWorkbook(sourceDir + "subject.xlsx"); // XSSFSheet sheet = wb.getSheetAt(0); // int rows = sheet.getLastRowNum(); // for (int i = 1; i <= rows; i++) { // Course c = new Course(); // XSSFRow row = sheet.getRow(i); // String id = row.getCell(0).getStringCellValue().trim(); // String name = row.getCell(1).getStringCellValue().trim(); // String code = row.getCell(2).getStringCellValue().trim(); // c.setId(Long.valueOf(id)); // c.setCode(code); // c.setName(name); // list.add(c); // } // } catch (IOException e) { // throw new RuntimeException(e); // } finally { // if (wb != null) { // try { // wb.close(); // } catch (IOException e) { // } // } // } // return list; // } }