|
@@ -13,6 +13,7 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.enums.CourseLevel;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.dao.enums.IsSuccess;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.dao.enums.TrueFalse;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordDetailService;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.service.ExportTaskService;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.service.bean.examrecord.ExamRecordFileAnswerInfo;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.service.bean.examrecord.ExamRecordInfo;
|
|
|
import cn.com.qmth.examcloud.core.oe.admin.service.bean.examrecord.ExamRecordQuery;
|
|
@@ -45,6 +46,9 @@ public class ExamRecordDetailServiceImpl implements ExamRecordDetailService {
|
|
|
@Autowired
|
|
|
private ExamRecordFileAnswerRepo examRecordFileAnswerRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ExportTaskService exportTaskService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
@@ -80,6 +84,43 @@ public class ExamRecordDetailServiceImpl implements ExamRecordDetailService {
|
|
|
return new PageImpl<>(list, pageable, totalElements);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<ExamRecordInfo> getExamRecordDetailListForExport(ExamRecordQuery query, UserDataRule courseRule, UserDataRule orgRule) {
|
|
|
+ Check.isNull(query, "请求参数不能为空!");
|
|
|
+ Check.isNull(query.getExamId(), "请先选择考试!");
|
|
|
+
|
|
|
+ if (courseRule.assertEmptyQueryResult() || orgRule.assertEmptyQueryResult()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ query.setPageNo(1);
|
|
|
+ query.setPageSize(1000);
|
|
|
+
|
|
|
+ List<ExamRecordInfo> result = new ArrayList<>();
|
|
|
+ while (true) {
|
|
|
+ // 检查是否终止导出
|
|
|
+ exportTaskService.checkStopExportTaskById(query.getTaskId());
|
|
|
+
|
|
|
+ int offset = (query.getPageNo() - 1) * query.getPageSize();
|
|
|
+ String querySql = this.queryExamRecordDetailListSql(query, false, courseRule, orgRule);
|
|
|
+ String pageSql = querySql + " limit " + offset + "," + query.getPageSize();
|
|
|
+ log.warn("导出考试明细:{}", pageSql);
|
|
|
+
|
|
|
+ List<ExamRecordInfo> list = jdbcTemplate.query(pageSql, new BeanPropertyRowMapper(ExamRecordInfo.class));
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ result.addAll(list);
|
|
|
+ query.setPageNo(query.getPageNo() + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 填充其它信息
|
|
|
+ this.fillOtherInfo(result, query.getExamId());
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
private void fillOtherInfo(List<ExamRecordInfo> list, Long examId) {
|
|
|
ExamSettingsCacheBean examCache = CacheHelper.getExamSettings(examId);
|
|
|
Map<Long, String> orgMaps = new HashMap<>();
|