|
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
@@ -66,10 +67,10 @@ public class AdminController {
|
|
|
@ApiOperation(value = "分析数据")
|
|
|
@RequestMapping(value = "fenxi", method = RequestMethod.GET)
|
|
|
public void fenxi(HttpServletResponse response, @RequestParam Long examId,
|
|
|
- @RequestParam(required = false) Boolean exZero, @RequestParam(required = false) Integer count,
|
|
|
- @RequestParam(required = false) Integer score) {
|
|
|
+ @RequestParam(required = false) String subjectCode, @RequestParam(required = false) Boolean exZero,
|
|
|
+ @RequestParam(required = false) Integer count, @RequestParam(required = false) Integer score) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- List<QuestionEntity> qs = questionService.findByExamId(examId);
|
|
|
+ List<QuestionEntity> qs = questionService.findByExamIdAndSubject(examId, subjectCode);
|
|
|
if (CollectionUtils.isEmpty(qs)) {
|
|
|
sb.append("试题数:0");
|
|
|
returnJson(sb.toString(), response);
|
|
@@ -110,8 +111,6 @@ public class AdminController {
|
|
|
q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数出错:- \r\n");
|
|
|
}
|
|
|
}
|
|
|
- sb.append(
|
|
|
- "---------------------------------------------------------------------------------------------------------------------------------\r\n");
|
|
|
}
|
|
|
returnJson(sb.toString(), response);
|
|
|
}
|
|
@@ -251,9 +250,9 @@ public class AdminController {
|
|
|
|
|
|
@ApiOperation(value = "进度详情")
|
|
|
@RequestMapping(value = "info", method = RequestMethod.GET)
|
|
|
- public void info(HttpServletResponse response, @RequestParam Long examId) {
|
|
|
+ public void info(HttpServletResponse response, @RequestParam(required = false) Long examId) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- List<QuestionEntity> qs = questionService.findByExamId(examId);
|
|
|
+ List<QuestionEntity> qs = questionService.list();
|
|
|
int qstotal = 0;
|
|
|
int qsCourse = 0;
|
|
|
if (CollectionUtils.isNotEmpty(qs)) {
|
|
@@ -264,54 +263,112 @@ public class AdminController {
|
|
|
}
|
|
|
qsCourse = cset.size();
|
|
|
}
|
|
|
- sb.append("ocr任务是否开启:" + (sysProperty.getOcrTaskEnable() ? "是" : "否") + "\r\n");
|
|
|
- sb.append("评分任务是否开启:" + (sysProperty.getMarkingTaskEnable() ? "是" : "否") + "\r\n");
|
|
|
- sb.append("试卷科目总数:" + qsCourse + "\r\n");
|
|
|
- sb.append("试卷小题总数:" + qstotal + "\r\n");
|
|
|
- Set<String> studentSet = new HashSet<>();
|
|
|
- int qocrsuc = 0;
|
|
|
- int qocrfailed = 0;
|
|
|
- int qsuc = 0;
|
|
|
- int qfailed = 0;
|
|
|
- int qtotal = 0;
|
|
|
- int markingtotal = 0;
|
|
|
+ sb.append("ocr是否开启:" + (sysProperty.getOcrTaskEnable() ? "是" : "否"));
|
|
|
+ sb.append(" | 评分是否开启:" + (sysProperty.getMarkingTaskEnable() ? "是" : "否"));
|
|
|
+ sb.append(" | 科目总数:" + qsCourse);
|
|
|
+ sb.append(" | 小题总数:" + qstotal);
|
|
|
+ sb.append("\r\n");
|
|
|
List<StudentScoreVo> vos = studentScoreService.getInfoByExam(examId);
|
|
|
- if (CollectionUtils.isNotEmpty(vos)) {
|
|
|
- qtotal = vos.size();
|
|
|
+ if (CollectionUtils.isEmpty(vos)) {
|
|
|
+ returnJson(sb.toString(), response);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (examId != null) {
|
|
|
+ Map<String, List<StudentScoreVo>> map = new LinkedHashMap<>();
|
|
|
for (StudentScoreVo vo : vos) {
|
|
|
- studentSet.add(vo.getExamNumber());
|
|
|
- if (DataStatus.SUCCESS.equals(vo.getAnswerStatus())) {
|
|
|
- qocrsuc++;
|
|
|
+ List<StudentScoreVo> tem = map.get(vo.getSubjectCode());
|
|
|
+ if (tem == null) {
|
|
|
+ tem = new ArrayList<>();
|
|
|
+ map.put(vo.getSubjectCode(), tem);
|
|
|
}
|
|
|
- if (DataStatus.FAILED.equals(vo.getAnswerStatus())) {
|
|
|
- qocrfailed++;
|
|
|
- }
|
|
|
- if (DataStatus.SUCCESS.equals(vo.getScoreStatus())) {
|
|
|
- qsuc++;
|
|
|
- }
|
|
|
- if (DataStatus.FAILED.equals(vo.getScoreStatus())) {
|
|
|
- qfailed++;
|
|
|
+ tem.add(vo);
|
|
|
+ }
|
|
|
+ subjectInfo(sb, examId, map);
|
|
|
+ } else {
|
|
|
+ Map<Long, Map<String, List<StudentScoreVo>>> exams = new LinkedHashMap<>();
|
|
|
+ for (StudentScoreVo vo : vos) {
|
|
|
+ Map<String, List<StudentScoreVo>> sujects = exams.get(vo.getExamId());
|
|
|
+ if (sujects == null) {
|
|
|
+ sujects = new LinkedHashMap<>();
|
|
|
+ exams.put(vo.getExamId(), sujects);
|
|
|
+
|
|
|
}
|
|
|
- if (vo.getMarkingScore() != null) {
|
|
|
- markingtotal++;
|
|
|
+ List<StudentScoreVo> tem = sujects.get(vo.getSubjectCode());
|
|
|
+ if (tem == null) {
|
|
|
+ tem = new ArrayList<>();
|
|
|
+ sujects.put(vo.getSubjectCode(), tem);
|
|
|
}
|
|
|
+ tem.add(vo);
|
|
|
+ }
|
|
|
+ for (Long exam : exams.keySet()) {
|
|
|
+ subjectInfo(sb, exam, exams.get(exam));
|
|
|
}
|
|
|
}
|
|
|
- if (studentSet.size() == 0) {
|
|
|
- sb.append("考生总数:0");
|
|
|
- returnJson(sb.toString(), response);
|
|
|
- return;
|
|
|
- }
|
|
|
- sb.append("考生总数:" + studentSet.size() + "\r\n");
|
|
|
- sb.append("考生试题总数:" + qtotal + "\r\n");
|
|
|
- sb.append("考生试题已人评总数:" + markingtotal + "\r\n");
|
|
|
- sb.append("考生试题OCR成功总数:" + qocrsuc + "\r\n");
|
|
|
- sb.append("考生试题OCR失败总数:" + qocrfailed + "\r\n");
|
|
|
- sb.append("考生试题评分成功总数:" + qsuc + "\r\n");
|
|
|
- sb.append("考生试题评分失败总数:" + qfailed + "\r\n");
|
|
|
returnJson(sb.toString(), response);
|
|
|
}
|
|
|
|
|
|
+ private void subjectInfo(StringBuilder sb, Long examId, Map<String, List<StudentScoreVo>> subjects) {
|
|
|
+ sb.append("\r\n-------------------------------------------------------------------------------\r\n");
|
|
|
+ List<QuestionEntity> qs = questionService.findByExamId(examId);
|
|
|
+ sb.append("考试id:" + examId);
|
|
|
+ sb.append(" | 科目总数:" + subjects.size());
|
|
|
+ sb.append(" | 小题总数:" + qs.size());
|
|
|
+ Map<String, Integer> qmap = new HashMap<>();
|
|
|
+ for (QuestionEntity q : qs) {
|
|
|
+ Integer tem = qmap.get(q.getSubjectCode());
|
|
|
+ if (tem == null) {
|
|
|
+ tem = 0;
|
|
|
+ }
|
|
|
+ qmap.put(q.getSubjectCode(), tem + 1);
|
|
|
+ }
|
|
|
+ for (String subject : subjects.keySet()) {
|
|
|
+ sb.append("\r\n");
|
|
|
+ sb.append("\r\n");
|
|
|
+ sb.append(" 科目代码:" + subject);
|
|
|
+ sb.append(" | 小题数:" + qmap.get(subject));
|
|
|
+ List<StudentScoreVo> vos = subjects.get(subject);
|
|
|
+ Set<String> studentSet = new HashSet<>();
|
|
|
+ int qocrsuc = 0;
|
|
|
+ int qocrfailed = 0;
|
|
|
+ int qsuc = 0;
|
|
|
+ int qfailed = 0;
|
|
|
+ int qtotal = 0;
|
|
|
+ int markingtotal = 0;
|
|
|
+ if (CollectionUtils.isNotEmpty(vos)) {
|
|
|
+ qtotal = vos.size();
|
|
|
+ for (StudentScoreVo vo : vos) {
|
|
|
+ studentSet.add(vo.getExamNumber());
|
|
|
+ if (DataStatus.SUCCESS.equals(vo.getAnswerStatus())) {
|
|
|
+ qocrsuc++;
|
|
|
+ }
|
|
|
+ if (DataStatus.FAILED.equals(vo.getAnswerStatus())) {
|
|
|
+ qocrfailed++;
|
|
|
+ }
|
|
|
+ if (DataStatus.SUCCESS.equals(vo.getScoreStatus())) {
|
|
|
+ qsuc++;
|
|
|
+ }
|
|
|
+ if (DataStatus.FAILED.equals(vo.getScoreStatus())) {
|
|
|
+ qfailed++;
|
|
|
+ }
|
|
|
+ if (vo.getMarkingScore() != null) {
|
|
|
+ markingtotal++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (studentSet.size() == 0) {
|
|
|
+ sb.append(" | 考生总数:0");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ sb.append(" | 考生总数:" + studentSet.size());
|
|
|
+ sb.append(" | 试题总数:" + qtotal);
|
|
|
+ sb.append(" | 已人评数:" + markingtotal);
|
|
|
+ sb.append(" | OCR成功总数:" + qocrsuc);
|
|
|
+ sb.append(" | OCR失败总数:" + qocrfailed);
|
|
|
+ sb.append(" | 评分成功总数:" + qsuc);
|
|
|
+ sb.append(" | 评分失败总数:" + qfailed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation(value = "上传导入文件")
|
|
|
@RequestMapping(value = "upload", method = RequestMethod.POST)
|
|
|
public String upload(@RequestParam MultipartFile file) {
|