|
@@ -3,10 +3,9 @@ package cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detai
|
|
|
import cn.com.qmth.examcloud.tool.config.SysProperty;
|
|
|
import cn.com.qmth.examcloud.tool.entity.TaskEntity;
|
|
|
import cn.com.qmth.examcloud.tool.service.CommonService;
|
|
|
-import cn.com.qmth.examcloud.tool.utils.DateHelper;
|
|
|
-import cn.com.qmth.examcloud.tool.utils.FileHelper;
|
|
|
-import cn.com.qmth.examcloud.tool.utils.JsonMapper;
|
|
|
-import cn.com.qmth.examcloud.tool.utils.StatusException;
|
|
|
+import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
|
|
|
+import cn.com.qmth.examcloud.tool.utils.*;
|
|
|
+import cn.com.qmth.examcloud.tool.vo.Pager;
|
|
|
import cn.com.qmth.examcloud.tool.vo.User;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.write.handler.SheetWriteHandler;
|
|
@@ -22,6 +21,9 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Component
|
|
|
public class ExportStudentAnswerAndScoreDetailTask {
|
|
@@ -41,6 +43,7 @@ public class ExportStudentAnswerAndScoreDetailTask {
|
|
|
}
|
|
|
|
|
|
final String tempDir = "export_" + DateHelper.currentTimeMillis() + "_" + task.getId();
|
|
|
+ FileHelper.makeDirs(sysProperty.getDataDir() + "/" + tempDir);
|
|
|
|
|
|
User user = commonService.login(sysProperty.getServerDomain(), sysProperty.getServerLoginName(), sysProperty.getServerPassword());
|
|
|
this.execute(jsonParams, user, tempDir);
|
|
@@ -57,25 +60,67 @@ public class ExportStudentAnswerAndScoreDetailTask {
|
|
|
Boolean needSubjective = jsonParams.get("needSubjective").asBoolean(false);
|
|
|
log.info("examId = {}, courseCodes = {}, needSubjective = {}", examId, courseCodes, needSubjective);
|
|
|
|
|
|
+ // 待导出的课程列表(未指定课程则按考试的全部课程)
|
|
|
+ List<CourseVO> todoCourses;
|
|
|
+ List<CourseVO> courses = this.getExamCourseList(user.getKey(), user.getToken(), examId);
|
|
|
if (StringUtils.isNotBlank(courseCodes)) {
|
|
|
+ todoCourses = new ArrayList<>();
|
|
|
String[] courseCodeList = StringUtils.split(courseCodes, ",");
|
|
|
-
|
|
|
for (String courseCode : courseCodeList) {
|
|
|
- //todo
|
|
|
+ for (CourseVO vo : courses) {
|
|
|
+ if (vo.getCourseCode().equals(courseCode)) {
|
|
|
+ todoCourses.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ todoCourses = courses;
|
|
|
+ }
|
|
|
+ log.info("待导出的课程列表数为:{}", todoCourses.size());
|
|
|
+
|
|
|
+ for (CourseVO course : todoCourses) {
|
|
|
+ // 按考试课程逐个导出
|
|
|
+ this.export(examId, course, tempDir);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- final String dataFilePath = tempDir + "/" + examId + "_" + courseCode + ".xlsx";
|
|
|
- File dataFile = new File(sysProperty.getDataDir() + "/" + dataFilePath);
|
|
|
- FileHelper.makeDirs(dataFile.getParent());
|
|
|
+ private void export(Long examId, CourseVO course, String tempDir) {
|
|
|
+ //todo
|
|
|
|
|
|
- EasyExcel.write(dataFile, User.class).registerWriteHandler(new SheetWriteHandler() {
|
|
|
- @Override
|
|
|
- public void afterSheetCreate(WriteWorkbookHolder workbookHolder, WriteSheetHolder sheetHolder) {
|
|
|
- Sheet sheet = sheetHolder.getSheet();
|
|
|
- sheet.createFreezePane(1, 1);
|
|
|
- }
|
|
|
- }).sheet().doWrite(new ArrayList<>());
|
|
|
+ final String dataFilePath = tempDir + "/" + examId + "_" + course.getCourseCode() + ".xlsx";
|
|
|
+ File dataFile = new File(sysProperty.getDataDir() + "/" + dataFilePath);
|
|
|
+
|
|
|
+ EasyExcel.write(dataFile, User.class).registerWriteHandler(new SheetWriteHandler() {
|
|
|
+ @Override
|
|
|
+ public void afterSheetCreate(WriteWorkbookHolder workbookHolder, WriteSheetHolder sheetHolder) {
|
|
|
+ Sheet sheet = sheetHolder.getSheet();
|
|
|
+ sheet.createFreezePane(1, 1);
|
|
|
}
|
|
|
+ }).sheet().doWrite(new ArrayList<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取考试相关的课程列表
|
|
|
+ */
|
|
|
+ private List<CourseVO> getExamCourseList(String key, String token, Long examId) {
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("examId", examId);
|
|
|
+ params.put("pageNo", 1);
|
|
|
+ params.put("pageSize", 1000);
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ headers.put("key", key);
|
|
|
+ headers.put("token", token);
|
|
|
+
|
|
|
+ String url = sysProperty.getServerUrl() + "/api/ecs_exam_work/exam/course/list";
|
|
|
+ String json = HttpHelper.post(url, headers, params);
|
|
|
+
|
|
|
+ Pager<CourseVO> page = new JsonMapper().parseJson(json, Pager.class);
|
|
|
+ if (page != null && page.getContent() != null) {
|
|
|
+ return page.getContent();
|
|
|
}
|
|
|
+
|
|
|
+ return new ArrayList<>();
|
|
|
}
|
|
|
|
|
|
}
|