DeleteQuestionProducer.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package cn.com.qmth.im.bean;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.apache.commons.collections4.CollectionUtils;
  8. import org.apache.log4j.LogManager;
  9. import org.apache.log4j.Logger;
  10. import org.apache.poi.xssf.usermodel.XSSFRow;
  11. import org.apache.poi.xssf.usermodel.XSSFSheet;
  12. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  13. import cn.com.qmth.im.config.Param;
  14. import cn.com.qmth.im.multithread.Producer;
  15. public class DeleteQuestionProducer extends Producer<DeleteQuestionDto, DeleteQuestionConsumer> {
  16. private static Logger logger = LogManager.getLogger(DeleteQuestionProducer.class);
  17. @Override
  18. protected void produce(Map<String, Object> param) throws Exception {
  19. logger.info("***************************任务生产开始");
  20. List<QuestionId> ids = readSubject();
  21. if (CollectionUtils.isEmpty(ids)) {
  22. logger.warn("***************************!!没有需要处理的数据");
  23. }
  24. logger.info("***************************总题数:" + ids.size());
  25. Map<String, List<QuestionId>> map = new LinkedHashMap<>();
  26. for (QuestionId id : ids) {
  27. List<QuestionId> tem = map.get(id.getCourseCode());
  28. if (tem == null) {
  29. tem = new ArrayList<>();
  30. map.put(id.getCourseCode(), tem);
  31. }
  32. tem.add(id);
  33. }
  34. setTotal(map.size());
  35. logger.info("***************************总科目数:" + map.size());
  36. for (List<QuestionId> dto : map.values()) {
  37. offer(new DeleteQuestionDto(dto));
  38. }
  39. logger.info("***************************任务生产结束");
  40. }
  41. private static List<QuestionId> readSubject() {
  42. List<QuestionId> list = new ArrayList<>();
  43. XSSFWorkbook wb = null;
  44. try {
  45. wb = new XSSFWorkbook(Param.dataDir + "/duplicatequestion.xlsx");
  46. XSSFSheet sheet = wb.getSheetAt(0);
  47. int rows = sheet.getLastRowNum();
  48. for (int i = 1; i <= rows; i++) {
  49. XSSFRow row = sheet.getRow(i);
  50. String valid = row.getCell(9).getStringCellValue().trim();
  51. if ("否".equals(valid)) {
  52. QuestionId c = new QuestionId();
  53. String courseCode = row.getCell(1).getStringCellValue().trim();
  54. String uid = row.getCell(7).getStringCellValue().trim();
  55. String qid = row.getCell(8).getStringCellValue().trim();
  56. c.setCourseCode(courseCode);
  57. c.setUnitId(uid);
  58. c.setQuestionId(qid);
  59. list.add(c);
  60. }
  61. }
  62. } catch (IOException e) {
  63. throw new RuntimeException(e);
  64. } finally {
  65. if (wb != null) {
  66. try {
  67. wb.close();
  68. } catch (IOException e) {
  69. }
  70. }
  71. }
  72. return list;
  73. }
  74. @Override
  75. protected String getTaskName() {
  76. return "删除试题";
  77. }
  78. }