|
@@ -10,10 +10,12 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.core.task.AsyncTaskExecutor;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.ui.Model;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
@@ -24,16 +26,25 @@ import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.Task;
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
|
|
|
import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
|
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.service.TaskService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.service.TrialService;
|
|
|
import cn.com.qmth.stmms.biz.mark.thread.MarkQualityThread;
|
|
|
+import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
import cn.com.qmth.stmms.common.enums.LibraryStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.LockType;
|
|
|
+import cn.com.qmth.stmms.common.enums.MarkStatus;
|
|
|
+import cn.com.qmth.stmms.common.enums.Role;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
|
@Controller("markQualityController")
|
|
@@ -62,7 +73,25 @@ public class MarkQualityController extends BaseExamController {
|
|
|
|
|
|
@Autowired
|
|
|
private ExamQuestionService questionService;
|
|
|
-
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TaskService taskService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TrialService trialService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamStudentService studentService;
|
|
|
+
|
|
|
+ @Value("${slice.image.server}")
|
|
|
+ private String sliceServer;
|
|
|
+
|
|
|
+ @Value("${sheet.image.server}")
|
|
|
+ private String sheetServer;
|
|
|
+
|
|
|
+ @Value("${card.server}")
|
|
|
+ private String cardServer;
|
|
|
+
|
|
|
@RequestMapping
|
|
|
public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
|
|
|
int examId = getSessionExamId(request);
|
|
@@ -83,8 +112,10 @@ public class MarkQualityController extends BaseExamController {
|
|
|
}
|
|
|
if (query.getSubjectCode() != null && query.getGroupNumber() != null) {
|
|
|
query = markerService.findByQuery(query);
|
|
|
- model.addAttribute("running", lockService.isLocked(LockType.BATCH_QUALITY,
|
|
|
- getLockKey(examId, query.getSubjectCode(), query.getGroupNumber())));
|
|
|
+ model.addAttribute(
|
|
|
+ "running",
|
|
|
+ lockService.isLocked(LockType.BATCH_QUALITY,
|
|
|
+ getLockKey(examId, query.getSubjectCode(), query.getGroupNumber())));
|
|
|
}
|
|
|
model.addAttribute("query", query);
|
|
|
model.addAttribute("subjectList", subjectList);
|
|
@@ -100,8 +131,8 @@ public class MarkQualityController extends BaseExamController {
|
|
|
if (group != null) {
|
|
|
final String lockKey = getLockKey(examId, subjectCode, groupNumber);
|
|
|
if (lockService.trylock(LockType.BATCH_QUALITY, lockKey)) {
|
|
|
- taskExecutor.submit(new MarkQualityThread(
|
|
|
- markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber), lockKey));
|
|
|
+ taskExecutor.submit(new MarkQualityThread(markerService.findByExamAndSubjectAndGroup(examId,
|
|
|
+ subjectCode, groupNumber), lockKey));
|
|
|
}
|
|
|
redirectAttributes.addAttribute("groupNumber", groupNumber);
|
|
|
}
|
|
@@ -132,6 +163,7 @@ public class MarkQualityController extends BaseExamController {
|
|
|
scoreCount.put(score, count);
|
|
|
}
|
|
|
MarkerVO vo = new MarkerVO();
|
|
|
+ vo.setId(marker.getId());
|
|
|
vo.setLoginName(marker.getLoginName());
|
|
|
vo.setName(marker.getName());
|
|
|
vo.setScoreCount(scoreCount);
|
|
@@ -174,6 +206,7 @@ public class MarkQualityController extends BaseExamController {
|
|
|
scorePercent.put(score, percent);
|
|
|
}
|
|
|
MarkerVO vo = new MarkerVO();
|
|
|
+ vo.setId(marker.getId());
|
|
|
vo.setLoginName(marker.getLoginName());
|
|
|
vo.setName(marker.getName());
|
|
|
vo.setScorePercent(scorePercent);
|
|
@@ -182,4 +215,78 @@ public class MarkQualityController extends BaseExamController {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping("/batchProcess")
|
|
|
+ @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
+ public String batchProcess(Model model, HttpServletRequest request, @RequestParam Integer markerId,
|
|
|
+ @RequestParam Double markerScore) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ Marker marker = markerService.findById(markerId);
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ if (!subjectCheck(marker.getSubjectCode(), wu)) {
|
|
|
+ return "redirect:/admin/exam/mark";
|
|
|
+ }
|
|
|
+ MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
+ if (group == null) {
|
|
|
+ return "redirect:/admin/exam/mark";
|
|
|
+ }
|
|
|
+ model.addAttribute("sheetServer", sheetServer);
|
|
|
+ model.addAttribute("sliceServer", sliceServer);
|
|
|
+ model.addAttribute("cardServer", cardServer);
|
|
|
+ model.addAttribute("subject", subjectService.find(group.getExamId(), group.getSubjectCode()));
|
|
|
+ model.addAttribute("group", group);
|
|
|
+ model.addAttribute("markerId", markerId);
|
|
|
+ model.addAttribute("markerScore", markerScore);
|
|
|
+ return "modules/exam/qualityProcess";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/history", method = RequestMethod.POST)
|
|
|
+ @ResponseBody
|
|
|
+ @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
+ public List<Task> getTask(HttpServletRequest request, @RequestParam Integer markerId,
|
|
|
+ @RequestParam Double markerScore, @RequestParam(required = false) Integer pageNumber,
|
|
|
+ @RequestParam(required = false) Integer pageSize) {
|
|
|
+ Marker marker = markerService.findById(markerId);
|
|
|
+ List<Task> list = new ArrayList<>();
|
|
|
+ MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
+ if (group != null && group.getStatus() == MarkStatus.FORMAL) {
|
|
|
+ // 正评查找已给分的评卷任务
|
|
|
+ MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
|
|
|
+ query.setExamId(marker.getExamId());
|
|
|
+ query.setSubjectCode(marker.getSubjectCode());
|
|
|
+ query.setMarkerId(marker.getId());
|
|
|
+ query.addStatus(LibraryStatus.MARKED);
|
|
|
+ query.setGroupNumber(marker.getGroupNumber());
|
|
|
+ query.setMarkerScore(markerScore);
|
|
|
+ if (pageNumber != null) {
|
|
|
+ query.setPageNumber(pageNumber);
|
|
|
+ }
|
|
|
+ if (pageSize != null) {
|
|
|
+ query.setPageSize(pageSize);
|
|
|
+ }
|
|
|
+ query.orderByMarkerTimeDesc();
|
|
|
+
|
|
|
+ list = taskService.findByQuery(query);
|
|
|
+ for (Task task : list) {
|
|
|
+ task.setPrevious(true);
|
|
|
+ task.setStudentName(studentService.findById(task.getStudentId()).getName());
|
|
|
+ task.setMarkerId(markerId);
|
|
|
+ }
|
|
|
+ } else if (group != null && group.getStatus() == MarkStatus.TRIAL) {
|
|
|
+ // 试评查找给分历史记录
|
|
|
+ List<TrialHistory> historyList = new ArrayList<TrialHistory>();
|
|
|
+ historyList = trialService.findHistory(marker.getExamId(), marker.getSubjectCode(),
|
|
|
+ marker.getGroupNumber(), marker.getId(), pageNumber, pageSize, null,markerScore);
|
|
|
+ for (TrialHistory history : historyList) {
|
|
|
+ TrialLibrary library = trialService.findLibrary(history.getLibraryId());
|
|
|
+ if (library != null) {
|
|
|
+ Task task = taskService.build(library, history);
|
|
|
+ task.setPrevious(true);
|
|
|
+ task.setStudentName(studentService.findById(task.getStudentId()).getName());
|
|
|
+ task.setMarkerId(markerId);
|
|
|
+ list.add(task);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
}
|