Pārlūkot izejas kodu

修复Excel分页导出时计算rowIndex的bug

luoshi 3 gadi atpakaļ
vecāks
revīzija
8cafaa6a9f

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

@@ -40,6 +40,7 @@ import java.util.*;
  */
 @Service
 public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
+
     private final static Logger log = LoggerFactory.getLogger(TaskMarkResultSimpleExportTemplete.class);
 
     @Resource
@@ -74,25 +75,34 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
         ByteArrayOutputStream out = null;
         int min = 0, line = 0;
         try {
-            taskExportCommon.getTxtList().add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->开始准备处理导出的成绩简版数据");
+            taskExportCommon.getTxtList()
+                    .add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->开始准备处理导出的成绩简版数据");
             Long examId = (Long) map.get(SystemConstant.EXAM_ID);
             Long activityId = (Long) map.get(SystemConstant.ACTIVITY_ID);
             String identity = (String) map.get("identity");
             String name = (String) map.get(SystemConstant.NAME);
             String courseCode = (String) map.get(SystemConstant.COURSE_CODE);
             Gson gson = new Gson();
-            List<MarkResultSimpleExportDto> markResultSimpleExportDtoList = teExamStudentService.markResultQueryExport(examId, activityId, identity, name, courseCode);
+            List<MarkResultSimpleExportDto> markResultSimpleExportDtoList = teExamStudentService
+                    .markResultQueryExport(examId, activityId, identity, name, courseCode);
             if (Objects.nonNull(markResultSimpleExportDtoList) && markResultSimpleExportDtoList.size() > 0) {
                 for (MarkResultSimpleExportDto markResultSimpleExportDto : markResultSimpleExportDtoList) {
-                    MarkResultDto markResultDto = gson.fromJson(gson.toJson(markResultSimpleExportDto), MarkResultDto.class);
+                    MarkResultDto markResultDto = gson
+                            .fromJson(gson.toJson(markResultSimpleExportDto), MarkResultDto.class);
                     if (Objects.nonNull(markResultDto.getExamId())) {
                         ExamCacheBean examCacheBean = teExamService.getExamCacheBean(markResultDto.getExamId());
-                        TOeExamRecord tOeExamRecord = tOeExamRecordService.findMarkResult(markResultDto, examCacheBean.getRecordSelectStrategy());
+                        TOeExamRecord tOeExamRecord = tOeExamRecordService
+                                .findMarkResult(markResultDto, examCacheBean.getRecordSelectStrategy());
                         if (Objects.nonNull(tOeExamRecord)) {
-                            markResultSimpleExportDto.setObjectiveScore(Objects.isNull(tOeExamRecord.getObjectiveScore()) ? "0" : String.valueOf(tOeExamRecord.getObjectiveScore()));
+                            markResultSimpleExportDto.setObjectiveScore(
+                                    Objects.isNull(tOeExamRecord.getObjectiveScore()) ?
+                                            "0" :
+                                            String.valueOf(tOeExamRecord.getObjectiveScore()));
                             markResultSimpleExportDto.setRecordId(tOeExamRecord.getId());
                             markResultSimpleExportDto.setPaperId(tOeExamRecord.getPaperId());
-                            markResultSimpleExportDto.setSumScore(markResultSimpleExportDto.getObjectiveScore() + markResultSimpleExportDto.getSubjectiveScore());
+                            markResultSimpleExportDto.setSumScore(
+                                    markResultSimpleExportDto.getObjectiveScore() + markResultSimpleExportDto
+                                            .getSubjectiveScore());
                         }
                     }
                 }
@@ -103,9 +113,9 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
                 stringJoiner.add(SystemConstant.FILES_DIR).add(File.separator);
             }
             LocalDateTime nowTime = LocalDateTime.now();
-            stringJoiner.add(String.valueOf(nowTime.getYear()))
-                    .add(File.separator).add(String.format("%02d", nowTime.getMonthValue()))
-                    .add(File.separator).add(String.format("%02d", nowTime.getDayOfMonth()));
+            stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
+                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
+                    .add(String.format("%02d", nowTime.getDayOfMonth()));
             //创建excel
             wb = new SXSSFWorkbook();
             Sheet sheet = wb.createSheet("成绩统计简版");
@@ -123,27 +133,29 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
                     Cell cell = row.createCell(i);
                     cell.setCellValue(field.getAnnotation(ExcelNote.class).value());
                     cell.setCellStyle(style);
-//                    sheet.setColumnWidth(i, 15 * 256);
+                    //                    sheet.setColumnWidth(i, 15 * 256);
                 }
             }
             int cellIndex = 0, max = SystemConstant.MAX_EXPORT_SIZE, size = markResultSimpleExportDtoList.size();
             if (max >= size) {
                 max = size;
             }
+            int rowIndex = 0;
             while (max <= size) {
                 List subList = markResultSimpleExportDtoList.subList(min, max);
                 //绘制数据
                 for (int y = 0; y < subList.size(); y++) {
                     line++;
                     MarkResultSimpleExportDto markResultSimpleExportDto = (MarkResultSimpleExportDto) subList.get(y);
-                    int firstRow = y + 1;
+                    rowIndex++;
                     cellIndex = 0;
-                    Row sxssfRow = sheet.createRow(firstRow);
+                    Row sxssfRow = sheet.createRow(rowIndex);
                     for (Field field : fields) {
                         field.setAccessible(true);
                         Annotation annotation = field.getAnnotation(ExcelNotExport.class);
                         if (Objects.isNull(annotation)) {
-                            taskExportCommon.createExcelCell(sxssfRow, cellIndex, field.get(markResultSimpleExportDto), style);
+                            taskExportCommon
+                                    .createExcelCell(sxssfRow, cellIndex, field.get(markResultSimpleExportDto), style);
                             cellIndex++;
                         }
                     }
@@ -174,7 +186,8 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
             taskExportCommon.exception(line, e, taskExportCommon.getTxtList());
         } finally {
             //这里写入txt文件
-            taskExportCommon.writeExportResultTxt(stringJoiner.toString(), taskExportCommon.getTxtList().toString(), excelFilePath);
+            taskExportCommon.writeExportResultTxt(stringJoiner.toString(), taskExportCommon.getTxtList().toString(),
+                    excelFilePath);
             if (Objects.nonNull(wb)) {
                 wb.dispose();
             }