wangliang 4 tahun lalu
induk
melakukan
7dbaf38832

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskMarkResultSimpleExportTemplete.java

@@ -51,7 +51,7 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
      */
     @Override
     public Result exportTask(Map<String, Object> map) throws IOException {
-        log.info("开始导出考场数据");
+        log.info("开始导出成绩简版数据");
         long start = System.currentTimeMillis();
         TaskExportCommon taskExportCommon = new TaskExportCommon(map);
         taskExportCommon.init();

+ 29 - 25
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskMarkResultStandardExportTemplete.java

@@ -70,7 +70,7 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
      */
     @Override
     public Result exportTask(Map<String, Object> map) throws IOException {
-        log.info("开始导出考场数据");
+        log.info("开始导出成绩标准版数据");
         long start = System.currentTimeMillis();
         TaskExportCommon taskExportCommon = new TaskExportCommon(map);
         taskExportCommon.init();
@@ -126,29 +126,31 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
                             String questionsTitle = s.getMainNumber() + "_" + s.getSubNumber();
                             if (Objects.nonNull(s.getAnswer())) {
                                 ObjectiveAnswerCacheBean objectiveAnswerCacheBean = objectiveAnswerCacheBeanMap.get(questionsTitle);
-                                String title = QuestionTypeEnum.convertToTitle(objectiveAnswerCacheBean.getStructType()) + questionsTitle;
-                                String answer = null;
-                                if (objectiveAnswerCacheBean.getStructType().intValue() == 1 || objectiveAnswerCacheBean.getStructType().intValue() == 2) {
-                                    List<String> list = Arrays.asList(s.getAnswer().replace("[", "").replace("]", "").replaceAll(" ", "").replaceAll("\n", "").split(","));
-                                    List<String> answerList = new ArrayList<>();
-                                    for (String s1 : list) {
-                                        answerList.add(AnswerTypeEnum.convertToTitle(s1.toUpperCase()));
+                                if (Objects.nonNull(objectiveAnswerCacheBean)) {
+                                    String title = QuestionTypeEnum.convertToTitle(objectiveAnswerCacheBean.getStructType()) + questionsTitle;
+                                    String answer = null;
+                                    if (objectiveAnswerCacheBean.getStructType().intValue() == 1 || objectiveAnswerCacheBean.getStructType().intValue() == 2) {
+                                        List<String> list = Arrays.asList(s.getAnswer().replace("[", "").replace("]", "").replaceAll(" ", "").replaceAll("\n", "").split(","));
+                                        List<String> answerList = new ArrayList<>();
+                                        for (String s1 : list) {
+                                            answerList.add(AnswerTypeEnum.convertToTitle(s1.toUpperCase()));
+                                        }
+                                        answer = answerList.toString();
+                                    } else if (objectiveAnswerCacheBean.getStructType().intValue() == 3) {
+                                        answer = AnswerTypeEnum.convertToTitle(s.getAnswer().toUpperCase());
                                     }
-                                    answer = answerList.toString();
-                                } else if (objectiveAnswerCacheBean.getStructType().intValue() == 3) {
-                                    answer = AnswerTypeEnum.convertToTitle(s.getAnswer().toUpperCase());
-                                }
-                                ExcelDto excelAnswerDto = new ExcelDto(title + "作答", answer);
-                                ExcelDto excelScoreDto = new ExcelDto(title + "得分", String.valueOf(s.getScore()));
-                                List<ExcelDto> excelDtoList = null;
-                                if (!excelDtoMap.containsKey(m.getExamStudentId())) {
-                                    excelDtoList = new ArrayList<>();
-                                } else {
-                                    excelDtoList = excelDtoMap.get(m.getExamStudentId());
+                                    ExcelDto excelAnswerDto = new ExcelDto(title + "作答", answer);
+                                    ExcelDto excelScoreDto = new ExcelDto(title + "得分", String.valueOf(s.getScore()));
+                                    List<ExcelDto> excelDtoList = null;
+                                    if (!excelDtoMap.containsKey(m.getExamStudentId())) {
+                                        excelDtoList = new ArrayList<>();
+                                    } else {
+                                        excelDtoList = excelDtoMap.get(m.getExamStudentId());
+                                    }
+                                    excelDtoList.add(excelAnswerDto);
+                                    excelDtoList.add(excelScoreDto);
+                                    excelDtoMap.put(m.getExamStudentId(), excelDtoList);
                                 }
-                                excelDtoList.add(excelAnswerDto);
-                                excelDtoList.add(excelScoreDto);
-                                excelDtoMap.put(m.getExamStudentId(), excelDtoList);
                             }
                         }
                     }
@@ -222,9 +224,11 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
                                 Map<Long, List<ExcelDto>> answerExcetDto = markResultStandardExportDto.getAnswerExcetDto();
                                 if (Objects.nonNull(answerExcetDto)) {
                                     List<ExcelDto> excelDtoList = answerExcetDto.get(markResultStandardExportDto.getExamStudentId());
-                                    excelDtoList.forEach(s -> {
-                                        taskExportCommon.createExcelCell(sxssfRow, position.get(s.getTitle()), s.getContent(), style);
-                                    });
+                                    if (Objects.nonNull(excelDtoList) && excelDtoList.size() > 0) {
+                                        excelDtoList.forEach(s -> {
+                                            taskExportCommon.createExcelCell(sxssfRow, position.get(s.getTitle()), s.getContent(), style);
+                                        });
+                                    }
                                 }
                             } else {
                                 taskExportCommon.createExcelCell(sxssfRow, cellIndex, field.get(markResultStandardExportDto), style);

+ 11 - 1
themis-business/src/main/java/com/qmth/themis/business/templete/service/impl/TempleteLogicServiceImpl.java

@@ -399,12 +399,22 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
      */
     public List<String> exportProgress(int max, int min, int size, List<String> txtList, TBTaskHistory tbTaskHistory, String timeFormat) {
         BigDecimal bigDecimal = new BigDecimal(100);
-        BigDecimal progress = new BigDecimal(Double.valueOf(new BigDecimal(max).divide(new BigDecimal(size), 2, BigDecimal.ROUND_HALF_UP).multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())).setScale(0, BigDecimal.ROUND_HALF_UP);
+        BigDecimal progress = null;
+        if (size > 0) {
+            progress = new BigDecimal(Double.valueOf(new BigDecimal(max).divide(new BigDecimal(size), 2, BigDecimal.ROUND_HALF_UP).multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())).setScale(0, BigDecimal.ROUND_HALF_UP);
+        } else {
+            progress = new BigDecimal(-1);
+        }
         if (progress.intValue() == 100) {
             tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
             tbTaskHistory.setSummary("共导出了" + size + "条数据");
             tbTaskHistory.setFinishTime(System.currentTimeMillis());
             txtList.add(DateUtil.format(new Date(), timeFormat) + "->数据导出完毕," + tbTaskHistory.getSummary());
+        } else if (progress.intValue() == -1) {
+            tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
+            tbTaskHistory.setSummary("没有导出数据");
+            tbTaskHistory.setFinishTime(System.currentTimeMillis());
+            txtList.add(DateUtil.format(new Date(), timeFormat) + "->数据导出完毕," + tbTaskHistory.getSummary());
         } else {
             tbTaskHistory.setStatus(TaskStatusEnum.RUNNING);
             tbTaskHistory.setSummary("正在导出第" + min + "条至" + max + "条数据");