|
@@ -36,7 +36,6 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
-import java.text.DecimalFormat;
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
@Controller
|
|
@Controller
|
|
@@ -94,42 +93,36 @@ public class ScoreController extends BaseExamController {
|
|
public ModelAndView list(HttpServletRequest request, ExamStudentSearchQuery query,
|
|
public ModelAndView list(HttpServletRequest request, ExamStudentSearchQuery query,
|
|
@RequestParam(defaultValue = "0") Integer filter) {
|
|
@RequestParam(defaultValue = "0") Integer filter) {
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
- List<Exam> examList = getExamList(wu);
|
|
|
|
- if (query.getExamId() != null) {
|
|
|
|
- query.setExamId(getSessionExamId(request));
|
|
|
|
- }
|
|
|
|
ModelAndView view = new ModelAndView("modules/exam/scoreList");
|
|
ModelAndView view = new ModelAndView("modules/exam/scoreList");
|
|
- if (query.getExamId() != null) {
|
|
|
|
- query.orderByExamNumber();
|
|
|
|
- if (filter == 1) {
|
|
|
|
- query.setObjectiveScore(0d);
|
|
|
|
- query.setSubjectiveScoreGt(0d);
|
|
|
|
- } else if (filter == 2) {
|
|
|
|
- query.setObjectiveScoreGt(0d);
|
|
|
|
- query.setSubjectiveScore(0d);
|
|
|
|
- }
|
|
|
|
- query = studentService.findByQuery(query);
|
|
|
|
- for (ExamStudent student : query.getResult()) {
|
|
|
|
- buildSheetUrl(student);
|
|
|
|
- buildPackageUrl(student);
|
|
|
|
- buildAnswerUrl(student);
|
|
|
|
- student.setAnswerUrl(PictureUrlBuilder
|
|
|
|
- .getAnswerJson(student.getExamId(), student.getSubjectCode(), student.getPaperType(),
|
|
|
|
- student.getExamNumber()));
|
|
|
|
- }
|
|
|
|
- String exportMessage =
|
|
|
|
- query.getSubjectCode() != null ? enableExport(query.getExamId(), query.getSubjectCode()) : null;
|
|
|
|
- if (exportMessage != null) {
|
|
|
|
- view.addObject("exportMessage", exportMessage);
|
|
|
|
- view.addObject("enableExport", false);
|
|
|
|
- } else {
|
|
|
|
- view.addObject("enableExport", true);
|
|
|
|
- }
|
|
|
|
- view.addObject("subjectList", getExamSubject(query.getExamId(), wu));
|
|
|
|
- view.addObject("running", lockService.isLocked(LockType.SCORE_CALCULATE, query.getExamId()));
|
|
|
|
- Exam exam = examService.findById(query.getExamId());
|
|
|
|
- view.addObject("examType", exam.getType());
|
|
|
|
|
|
+ query.setExamId(getSessionExamId(request));
|
|
|
|
+ query.orderByExamNumber();
|
|
|
|
+ if (filter == 1) {
|
|
|
|
+ query.setObjectiveScore(0d);
|
|
|
|
+ query.setSubjectiveScoreGt(0d);
|
|
|
|
+ } else if (filter == 2) {
|
|
|
|
+ query.setObjectiveScoreGt(0d);
|
|
|
|
+ query.setSubjectiveScore(0d);
|
|
}
|
|
}
|
|
|
|
+ query = studentService.findByQuery(query);
|
|
|
|
+ for (ExamStudent student : query.getResult()) {
|
|
|
|
+ buildSheetUrl(student);
|
|
|
|
+ buildPackageUrl(student);
|
|
|
|
+ buildAnswerUrl(student);
|
|
|
|
+ student.setAnswerUrl(PictureUrlBuilder
|
|
|
|
+ .getAnswerJson(student.getExamId(), student.getSubjectCode(), student.getPaperType(),
|
|
|
|
+ student.getExamNumber()));
|
|
|
|
+ }
|
|
|
|
+ String exportMessage =
|
|
|
|
+ query.getSubjectCode() != null ? enableExport(query.getExamId(), query.getSubjectCode()) : null;
|
|
|
|
+ if (exportMessage != null) {
|
|
|
|
+ view.addObject("exportMessage", exportMessage);
|
|
|
|
+ view.addObject("enableExport", false);
|
|
|
|
+ } else {
|
|
|
|
+ view.addObject("enableExport", true);
|
|
|
|
+ }
|
|
|
|
+ view.addObject("subjectList", getExamSubject(query.getExamId(), wu));
|
|
|
|
+ Exam exam = examService.findById(query.getExamId());
|
|
|
|
+ view.addObject("examType", exam.getType());
|
|
view.addObject("query", query);
|
|
view.addObject("query", query);
|
|
view.addObject("filter", filter);
|
|
view.addObject("filter", filter);
|
|
view.addObject("imageServer", imageServer);
|
|
view.addObject("imageServer", imageServer);
|
|
@@ -199,12 +192,19 @@ public class ScoreController extends BaseExamController {
|
|
@Logging(menu = "重新统分", type = LogType.UPDATE)
|
|
@Logging(menu = "重新统分", type = LogType.UPDATE)
|
|
@RequestMapping("/calculate")
|
|
@RequestMapping("/calculate")
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
- public ModelAndView calculate(HttpServletRequest request, @RequestParam Integer examId) {
|
|
|
|
- if (lockService.trylock(LockType.SCORE_CALCULATE, examId)) {
|
|
|
|
- ScoreCalculateThread thread = new ScoreCalculateThread(examId, getSubjectCodeSet(examId), lockService,
|
|
|
|
- studentService, questionService, markService, reportService, examService, subjectService,
|
|
|
|
- groupService);
|
|
|
|
- taskExecutor.submit(thread);
|
|
|
|
|
|
+ public ModelAndView calculate(HttpServletRequest request, RedirectAttributes redirectAttributes) {
|
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
|
+ Exam exam = examService.findById(getSessionExamId(request));
|
|
|
|
+ if (exam == null || !exam.getSchoolId().equals(wu.getUser().getSchoolId())) {
|
|
|
|
+ addMessage(redirectAttributes, "请选择正确的考试");
|
|
|
|
+ } else {
|
|
|
|
+ Set<String> subjectSet = getCalculateSubjectCodes(exam.getId());
|
|
|
|
+ if (!subjectSet.isEmpty()) {
|
|
|
|
+ ScoreCalculateThread thread = new ScoreCalculateThread(exam.getId(), subjectSet, lockService,
|
|
|
|
+ studentService, questionService, markService, reportService, examService, subjectService,
|
|
|
|
+ groupService);
|
|
|
|
+ taskExecutor.submit(thread);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return new ModelAndView("redirect:/admin/exam/score");
|
|
return new ModelAndView("redirect:/admin/exam/score");
|
|
}
|
|
}
|
|
@@ -297,9 +297,9 @@ public class ScoreController extends BaseExamController {
|
|
|
|
|
|
@RequestMapping("/enableExport")
|
|
@RequestMapping("/enableExport")
|
|
@ResponseBody
|
|
@ResponseBody
|
|
- public JSONObject query(HttpServletRequest request, @RequestParam Integer examId,
|
|
|
|
- @RequestParam String subjectCode) {
|
|
|
|
|
|
+ public JSONObject query(HttpServletRequest request, @RequestParam String subjectCode) {
|
|
JSONObject obj = new JSONObject();
|
|
JSONObject obj = new JSONObject();
|
|
|
|
+ int examId = getSessionExamId(request);
|
|
String exportMessage = enableExport(examId, subjectCode);
|
|
String exportMessage = enableExport(examId, subjectCode);
|
|
if (exportMessage != null) {
|
|
if (exportMessage != null) {
|
|
obj.accumulate("enableExport", false);
|
|
obj.accumulate("enableExport", false);
|
|
@@ -310,23 +310,6 @@ public class ScoreController extends BaseExamController {
|
|
return obj;
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
|
|
- @RequestMapping("/getProcess")
|
|
|
|
- @ResponseBody
|
|
|
|
- public JSONObject getProcess(HttpServletRequest request) {
|
|
|
|
- int examId = getSessionExamId(request);
|
|
|
|
- Exam exam = examService.findById(examId);
|
|
|
|
- boolean running = lockService.isLocked(LockType.SCORE_CALCULATE, examId);
|
|
|
|
- JSONObject obj = new JSONObject();
|
|
|
|
- obj.accumulate("running", running);
|
|
|
|
- if (exam.getProcess() != null) {
|
|
|
|
- DecimalFormat format = new DecimalFormat("##.##");
|
|
|
|
- obj.accumulate("process", format.format(exam.getProcess()));
|
|
|
|
- } else {
|
|
|
|
- obj.accumulate("process", 0);
|
|
|
|
- }
|
|
|
|
- return obj;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
private List<ScoreItem> buildScoreList(ExamStudent student) {
|
|
private List<ScoreItem> buildScoreList(ExamStudent student) {
|
|
List<ScoreItem> scoreList = new LinkedList<ScoreItem>();
|
|
List<ScoreItem> scoreList = new LinkedList<ScoreItem>();
|
|
|
|
|
|
@@ -419,11 +402,13 @@ public class ScoreController extends BaseExamController {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- private Set<String> getSubjectCodeSet(Integer examId) {
|
|
|
|
|
|
+ private Set<String> getCalculateSubjectCodes(Integer examId) {
|
|
List<ExamSubject> list = subjectService.list(examId);
|
|
List<ExamSubject> list = subjectService.list(examId);
|
|
Set<String> set = new HashSet<>();
|
|
Set<String> set = new HashSet<>();
|
|
for (ExamSubject subject : list) {
|
|
for (ExamSubject subject : list) {
|
|
- set.add(subject.getCode());
|
|
|
|
|
|
+ if (!lockService.isLocked(LockType.SCORE_CALCULATE, subject.getExamId(), subject.getCode())) {
|
|
|
|
+ set.add(subject.getCode());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return set;
|
|
return set;
|
|
}
|
|
}
|