MyProducer.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package cn.com.qmth.im;
  2. import java.io.IOException;
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import org.apache.log4j.LogManager;
  6. import org.apache.log4j.Logger;
  7. import org.apache.poi.xssf.usermodel.XSSFRow;
  8. import org.apache.poi.xssf.usermodel.XSSFSheet;
  9. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  10. import cn.com.qmth.multithread.Producer;
  11. import cn.com.qmth.param.Param;
  12. public class MyProducer extends Producer<ConsumerDto, MyConsumer> {
  13. private static Logger logger = LogManager.getLogger(MyProducer.class);
  14. @Override
  15. protected void produce(Map<String, Object> param) throws Exception {
  16. logger.info("***************************任务生产开始");
  17. String sourceDir = Param.dataDir + "/";
  18. String batch = param.get("batch").toString();
  19. // List<Course> cs = readSubject();
  20. Map<String, CourseDto> ics = readSubjectCodes(sourceDir);
  21. if (ics.size() == 0) {
  22. logger.debug("无数据导入");
  23. return;
  24. } else {
  25. logger.debug(ics.size() + "个课程");
  26. }
  27. for (CourseDto ic : ics.values()) {
  28. offer(new ConsumerDto(ic, batch));
  29. }
  30. logger.info("***************************任务生产结束");
  31. }
  32. private static Map<String, CourseDto> readSubjectCodes(String sourceDir) {
  33. Map<String, CourseDto> map = new LinkedHashMap<>();
  34. XSSFWorkbook wb = null;
  35. try {
  36. wb = new XSSFWorkbook(sourceDir + "subject_info.xlsx");
  37. XSSFSheet sheet = wb.getSheetAt(0);
  38. int rows = sheet.getLastRowNum();
  39. for (int i = 1; i <= rows; i++) {
  40. Course c = new Course();
  41. XSSFRow row = sheet.getRow(i);
  42. String ecCode = row.getCell(0).getStringCellValue().trim();
  43. String yunCode;
  44. try {
  45. yunCode = row.getCell(1).getStringCellValue().trim();
  46. } catch (Exception e) {
  47. yunCode = (row.getCell(1).getNumericCellValue() + "").trim();
  48. }
  49. String name = row.getCell(2).getStringCellValue().trim();
  50. c.setCode(ecCode);
  51. c.setName(name);
  52. CourseDto ic = map.get(yunCode);
  53. if (ic == null) {
  54. ic = new CourseDto();
  55. ic.setSubjectCode(yunCode);
  56. map.put(yunCode, ic);
  57. }
  58. ic.addCourse(c);
  59. }
  60. } catch (IOException e) {
  61. throw new RuntimeException(e);
  62. } finally {
  63. if (wb != null) {
  64. try {
  65. wb.close();
  66. } catch (IOException e) {
  67. }
  68. }
  69. }
  70. return map;
  71. }
  72. @Override
  73. protected String getTaskName() {
  74. return "试题导入";
  75. }
  76. // private List<Course> readSubject() {
  77. // List<Course> list = new ArrayList<>();
  78. // XSSFWorkbook wb = null;
  79. // try {
  80. // wb = new XSSFWorkbook(sourceDir + "subject.xlsx");
  81. // XSSFSheet sheet = wb.getSheetAt(0);
  82. // int rows = sheet.getLastRowNum();
  83. // for (int i = 1; i <= rows; i++) {
  84. // Course c = new Course();
  85. // XSSFRow row = sheet.getRow(i);
  86. // String id = row.getCell(0).getStringCellValue().trim();
  87. // String name = row.getCell(1).getStringCellValue().trim();
  88. // String code = row.getCell(2).getStringCellValue().trim();
  89. // c.setId(Long.valueOf(id));
  90. // c.setCode(code);
  91. // c.setName(name);
  92. // list.add(c);
  93. // }
  94. // } catch (IOException e) {
  95. // throw new RuntimeException(e);
  96. // } finally {
  97. // if (wb != null) {
  98. // try {
  99. // wb.close();
  100. // } catch (IOException e) {
  101. // }
  102. // }
  103. // }
  104. // return list;
  105. // }
  106. }