|
@@ -1,11 +1,44 @@
|
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import net.sf.json.JSONArray;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Controller;
|
|
|
+import org.springframework.ui.Model;
|
|
|
+import org.springframework.web.bind.annotation.PathVariable;
|
|
|
+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.multipart.MultipartFile;
|
|
|
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
+
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
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.*;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
+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.MarkerClassService;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
@@ -19,26 +52,13 @@ import cn.com.qmth.stmms.common.enums.LockType;
|
|
|
import cn.com.qmth.stmms.common.enums.LogType;
|
|
|
import cn.com.qmth.stmms.common.enums.MarkerExcelError;
|
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
|
+import cn.com.qmth.stmms.common.enums.UserSource;
|
|
|
import cn.com.qmth.stmms.common.utils.ExportExcel;
|
|
|
import cn.com.qmth.stmms.common.utils.ImportExcel;
|
|
|
import cn.com.qmth.stmms.common.utils.Md5EncryptUtils;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
-import com.google.common.collect.Lists;
|
|
|
-import net.sf.json.JSONArray;
|
|
|
-import net.sf.json.JSONObject;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Controller;
|
|
|
-import org.springframework.ui.Model;
|
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
-import org.springframework.web.multipart.MultipartFile;
|
|
|
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.util.*;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
|
|
@Controller("examMarkerController")
|
|
|
@RequestMapping("/admin/exam/marker")
|
|
@@ -90,16 +110,14 @@ public class MarkerController extends BaseExamController {
|
|
|
query.orderById();
|
|
|
if (StringUtils.isNotBlank(query.getLoginName())) {
|
|
|
User user = userService.findByLoginName(query.getLoginName());
|
|
|
- query.setUserId(
|
|
|
- user != null && user.getSchoolId().equals(wu.getUser().getSchoolId()) ? user.getId() : null);
|
|
|
+ query.setUserId(user != null && user.getSchoolId().equals(wu.getUser().getSchoolId()) ? user.getId() : null);
|
|
|
}
|
|
|
query = markerService.findByQuery(query);
|
|
|
for (Marker marker : query.getResult()) {
|
|
|
marker.setSubject(subjectService.find(marker.getExamId(), marker.getSubjectCode()));
|
|
|
MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
- group.setQuestionList(questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, marker.getSubjectCode(), false,
|
|
|
- group.getNumber()));
|
|
|
+ group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
+ marker.getSubjectCode(), false, group.getNumber()));
|
|
|
marker.setGroup(group);
|
|
|
marker.setMarkedCount(markService.markedCount(marker));
|
|
|
marker.setCurrentCount(markService.applyCount(marker));
|
|
@@ -202,8 +220,8 @@ public class MarkerController extends BaseExamController {
|
|
|
JSONObject obj = new JSONObject();
|
|
|
if (marker != null) {
|
|
|
try {
|
|
|
- lockService
|
|
|
- .waitlock(LockType.GROUP, marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
+ lockService.waitlock(LockType.GROUP, marker.getExamId(), marker.getSubjectCode(),
|
|
|
+ marker.getGroupNumber());
|
|
|
lockService.waitlock(LockType.MARKER, marker.getId());
|
|
|
|
|
|
markService.resetMarker(marker);
|
|
@@ -357,7 +375,7 @@ public class MarkerController extends BaseExamController {
|
|
|
for (Marker marker : list) {
|
|
|
if (StringUtils.isBlank(marker.getLoginName())) {
|
|
|
failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
- + MarkerExcelError.MARKERNAMENULL.getName());
|
|
|
+ + MarkerExcelError.NAMENULL.getName());
|
|
|
failureNum++;
|
|
|
continue;
|
|
|
}
|
|
@@ -366,17 +384,17 @@ public class MarkerController extends BaseExamController {
|
|
|
examSubject = subjectService.find(examId, marker.getSubjectCode());
|
|
|
if (examSubject == null) {
|
|
|
failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
- + MarkerExcelError.MARKERNOTCODE.getName());
|
|
|
+ + MarkerExcelError.CODENULL.getName());
|
|
|
failureNum++;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
- MarkGroup markGroup = groupMap.get(marker.getSubjectCode() + "-" + marker.getNumber());
|
|
|
+ MarkGroup markGroup = groupMap.get(marker.getSubjectCode() + "-" + marker.getGroupNumber());
|
|
|
if (markGroup == null) {
|
|
|
- markGroup = groupService.findOne(examId, marker.getSubjectCode(), marker.getNumber());
|
|
|
+ markGroup = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
if (markGroup == null) {
|
|
|
failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode() + ","
|
|
|
- + marker.getNumber() + MarkerExcelError.MARKERNOTGROUP.getName());
|
|
|
+ + marker.getGroupName() + MarkerExcelError.GROUPNULL.getName());
|
|
|
failureNum++;
|
|
|
continue;
|
|
|
}
|
|
@@ -386,7 +404,13 @@ public class MarkerController extends BaseExamController {
|
|
|
user = userService.findByLoginName(marker.getLoginName().trim());
|
|
|
if (user != null && !schoolId.equals(user.getSchoolId())) {
|
|
|
failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
- + MarkerExcelError.MARKERNAMEUSED.getName());
|
|
|
+ + MarkerExcelError.NAMEUSED.getName());
|
|
|
+ failureNum++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (user != null && !user.getRole().equals(Role.MARKER)) {
|
|
|
+ failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
+ + MarkerExcelError.NAMENOTMARKER.getName());
|
|
|
failureNum++;
|
|
|
continue;
|
|
|
}
|
|
@@ -413,12 +437,13 @@ public class MarkerController extends BaseExamController {
|
|
|
return "redirect:" + "/admin/exam/marker?subjectCode=" + subjectCode;
|
|
|
}
|
|
|
|
|
|
- private Marker getMarker(int examId, String subjectCode, Integer number, Integer userId) {
|
|
|
- Marker marker = markerService.findByExamAndSubjectAndNumberAndUserId(examId, subjectCode, number, userId);
|
|
|
+ private Marker getMarker(int examId, String subjectCode, Integer groupNumber, Integer userId) {
|
|
|
+ Marker marker = markerService.findByExamAndSubjectAndNumberAndUserId(examId, subjectCode, groupNumber, userId);
|
|
|
if (marker == null) {
|
|
|
marker = new Marker();
|
|
|
marker.setExamId(examId);
|
|
|
marker.setSubjectCode(subjectCode);
|
|
|
+ marker.setGroupNumber(groupNumber);
|
|
|
marker.setUserId(userId);
|
|
|
marker.setEnable(true);
|
|
|
}
|
|
@@ -433,6 +458,7 @@ public class MarkerController extends BaseExamController {
|
|
|
user.setName(loginName);
|
|
|
user.setPassword(Md5EncryptUtils.md5(USER_PASSWORD));
|
|
|
user.setRole(Role.MARKER);
|
|
|
+ user.setSource(UserSource.INTERNAL);
|
|
|
user.setSchoolId(schoolId);
|
|
|
user.setEnable(true);
|
|
|
user.setCreatedTime(new Date());
|
|
@@ -443,20 +469,16 @@ public class MarkerController extends BaseExamController {
|
|
|
}
|
|
|
|
|
|
@RequestMapping("/save")
|
|
|
- public String add(Model model, HttpServletRequest request, UserSearchQuery query,
|
|
|
- @RequestParam String subjectCode) {
|
|
|
+ public String add(Model model, HttpServletRequest request, UserSearchQuery query, @RequestParam String subjectCode,
|
|
|
+ @RequestParam Integer groupNumber) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
- if (examId > 0) {
|
|
|
- Exam exam = examService.findById(examId);
|
|
|
- query.setSchoolId(exam.getSchoolId());
|
|
|
- query.setRole(Role.MARKER);
|
|
|
- query = userService.findByQuery(query);
|
|
|
- model.addAttribute("query", query);
|
|
|
- model.addAttribute("subject", subjectService.find(examId, subjectCode));
|
|
|
- return "modules/exam/markerSubject";
|
|
|
- } else {
|
|
|
- return "redirect:/admin/exam/list";
|
|
|
- }
|
|
|
+ Exam exam = examService.findById(examId);
|
|
|
+ query.setSchoolId(exam.getSchoolId());
|
|
|
+ query.setRole(Role.MARKER);
|
|
|
+ query = userService.findByQuery(query);
|
|
|
+ model.addAttribute("query", query);
|
|
|
+ model.addAttribute("group", groupService.findOne(examId, subjectCode, groupNumber));
|
|
|
+ return "modules/exam/markerSubject";
|
|
|
}
|
|
|
|
|
|
@Logging(menu = "评卷员绑定", type = LogType.ADD)
|
|
@@ -464,18 +486,14 @@ public class MarkerController extends BaseExamController {
|
|
|
public String save(@RequestParam String subjectCode, @RequestParam Integer groupNumber,
|
|
|
@RequestParam Integer[] userIds, HttpServletRequest request, RedirectAttributes redirectAttributes) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
- if (examId > 0) {
|
|
|
- MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
|
|
|
- if (group != null) {
|
|
|
- markerService.save(group, userIds);
|
|
|
- addMessage(redirectAttributes, subjectCode + "设置成功");
|
|
|
- return "redirect:/admin/exam/marker?subjectCode=" + subjectCode + "&groupNumber=" + groupNumber;
|
|
|
- }
|
|
|
- addMessage(redirectAttributes, "科目不存在");
|
|
|
- return "redirect:/admin/exam/marker";
|
|
|
- } else {
|
|
|
- return "redirect:/admin/exam/list";
|
|
|
+ MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
|
|
|
+ if (group != null) {
|
|
|
+ markerService.save(group, userIds);
|
|
|
+ addMessage(redirectAttributes, "设置成功");
|
|
|
+ return "redirect:/admin/exam/marker?subjectCode=" + subjectCode + "&groupNumber=" + groupNumber;
|
|
|
}
|
|
|
+ addMessage(redirectAttributes, "科目分组不存在");
|
|
|
+ return "redirect:/admin/exam/marker";
|
|
|
}
|
|
|
|
|
|
@RequestMapping("/delete")
|
|
@@ -501,7 +519,7 @@ public class MarkerController extends BaseExamController {
|
|
|
if (marker != null) {
|
|
|
model.addAttribute("marker", marker);
|
|
|
List<String> classList = studentService.findDistinctClassName(marker.getExamId(), marker.getSubjectCode());
|
|
|
- Set<String> classes = classService.findClassNameByMarkerId(markerId);
|
|
|
+ Set<String> classes = classService.findClassNameByUserIdAndExamId(marker.getUserId(), marker.getExamId());
|
|
|
classList.removeAll(classes);
|
|
|
model.addAttribute("classList", classList);
|
|
|
model.addAttribute("classes", classes);
|
|
@@ -519,8 +537,8 @@ public class MarkerController extends BaseExamController {
|
|
|
if (marker != null) {
|
|
|
classService.save(marker, classes);
|
|
|
addMessage(redirectAttributes, "保存成功");
|
|
|
- return "redirect:" + "/admin/exam/marker?subjectCode=" + marker.getSubjectCode() + "&groupNumber=" + marker
|
|
|
- .getGroupNumber();
|
|
|
+ return "redirect:" + "/admin/exam/marker?subjectCode=" + marker.getSubjectCode() + "&groupNumber="
|
|
|
+ + marker.getGroupNumber();
|
|
|
}
|
|
|
addMessage(redirectAttributes, "评卷员不存在");
|
|
|
return "redirect:/admin/exam/marker";
|