package cn.com.qmth.im.bean; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections4.CollectionUtils; 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 DeleteQuestionProducer extends Producer { private static Logger logger = LogManager.getLogger(DeleteQuestionProducer.class); @Override protected void produce(Map param) throws Exception { logger.info("***************************任务生产开始"); List ids = readSubject(); if (CollectionUtils.isEmpty(ids)) { logger.warn("***************************!!没有需要处理的数据"); } logger.info("***************************总题数:" + ids.size()); Map> map = new LinkedHashMap<>(); for (QuestionId id : ids) { List tem = map.get(id.getCourseCode()); if (tem == null) { tem = new ArrayList<>(); map.put(id.getCourseCode(), tem); } tem.add(id); } setTotal(map.size()); logger.info("***************************总科目数:" + map.size()); for (List dto : map.values()) { offer(new DeleteQuestionDto(dto)); } logger.info("***************************任务生产结束"); } private static List readSubject() { List list = new ArrayList<>(); XSSFWorkbook wb = null; try { wb = new XSSFWorkbook(Param.dataDir + "/duplicatequestion.xlsx"); XSSFSheet sheet = wb.getSheetAt(0); int rows = sheet.getLastRowNum(); for (int i = 1; i <= rows; i++) { XSSFRow row = sheet.getRow(i); String valid = row.getCell(9).getStringCellValue().trim(); if ("否".equals(valid)) { QuestionId c = new QuestionId(); String courseCode = row.getCell(1).getStringCellValue().trim(); String uid = row.getCell(7).getStringCellValue().trim(); String qid = row.getCell(8).getStringCellValue().trim(); c.setCourseCode(courseCode); c.setUnitId(uid); c.setQuestionId(qid); list.add(c); } } } catch (IOException e) { throw new RuntimeException(e); } finally { if (wb != null) { try { wb.close(); } catch (IOException e) { } } } return list; } @Override protected String getTaskName() { return "删除试题"; } }