|
@@ -1,7 +1,10 @@
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -10,10 +13,10 @@ import javax.servlet.http.HttpServletResponse;
|
|
import net.sf.json.JSONArray;
|
|
import net.sf.json.JSONArray;
|
|
import net.sf.json.JSONObject;
|
|
import net.sf.json.JSONObject;
|
|
|
|
|
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
@@ -22,9 +25,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
-import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
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.ExamSubject;
|
|
import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
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.model.Marker;
|
|
@@ -37,16 +40,20 @@ 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.MarkerClassService;
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
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;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
import cn.com.qmth.stmms.biz.user.model.User;
|
|
import cn.com.qmth.stmms.biz.user.model.User;
|
|
import cn.com.qmth.stmms.biz.user.service.UserService;
|
|
import cn.com.qmth.stmms.biz.user.service.UserService;
|
|
|
|
+import cn.com.qmth.stmms.biz.user.service.query.UserSearchQuery;
|
|
import cn.com.qmth.stmms.common.annotation.Logging;
|
|
import cn.com.qmth.stmms.common.annotation.Logging;
|
|
import cn.com.qmth.stmms.common.annotation.RoleRequire;
|
|
import cn.com.qmth.stmms.common.annotation.RoleRequire;
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
import cn.com.qmth.stmms.common.enums.LockType;
|
|
import cn.com.qmth.stmms.common.enums.LockType;
|
|
import cn.com.qmth.stmms.common.enums.LogType;
|
|
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.Role;
|
|
import cn.com.qmth.stmms.common.utils.ExportExcel;
|
|
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.Md5EncryptUtils;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
|
@@ -90,8 +97,8 @@ public class MarkerController extends BaseExamController {
|
|
@Autowired
|
|
@Autowired
|
|
private ExamQuestionService questionService;
|
|
private ExamQuestionService questionService;
|
|
|
|
|
|
- @Value("${marker.showBtnImportAndBtnUpdateImport}")
|
|
|
|
- private String showBtnImport;
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private MarkLibraryService libraryService;
|
|
|
|
|
|
@Logging(menu = "评卷员查询", type = LogType.QUERY)
|
|
@Logging(menu = "评卷员查询", type = LogType.QUERY)
|
|
@RequestMapping
|
|
@RequestMapping
|
|
@@ -101,6 +108,10 @@ public class MarkerController extends BaseExamController {
|
|
query.setExamId(examId);
|
|
query.setExamId(examId);
|
|
query.orderById();
|
|
query.orderById();
|
|
subjectFilter(query, wu);
|
|
subjectFilter(query, wu);
|
|
|
|
+ if (StringUtils.isNotBlank(query.getLoginName())) {
|
|
|
|
+ User user = userService.findByLoginNameAndSchoolId(query.getLoginName(), wu.getUser().getSchoolId());
|
|
|
|
+ query.setUserId(user == null ? null : user.getId());
|
|
|
|
+ }
|
|
query = markerService.findByQuery(query);
|
|
query = markerService.findByQuery(query);
|
|
for (Marker marker : query.getResult()) {
|
|
for (Marker marker : query.getResult()) {
|
|
marker.setSubject(subjectService.find(marker.getExamId(), marker.getSubjectCode()));
|
|
marker.setSubject(subjectService.find(marker.getExamId(), marker.getSubjectCode()));
|
|
@@ -110,10 +121,10 @@ public class MarkerController extends BaseExamController {
|
|
marker.setGroup(group);
|
|
marker.setGroup(group);
|
|
marker.setMarkedCount(markService.markedCount(marker));
|
|
marker.setMarkedCount(markService.markedCount(marker));
|
|
marker.setCurrentCount(markService.applyCount(marker));
|
|
marker.setCurrentCount(markService.applyCount(marker));
|
|
|
|
+ marker.setUser(userService.findById(marker.getUserId()));
|
|
}
|
|
}
|
|
model.addAttribute("query", query);
|
|
model.addAttribute("query", query);
|
|
model.addAttribute("subjectList", getExamSubject(examId, wu));
|
|
model.addAttribute("subjectList", getExamSubject(examId, wu));
|
|
- model.addAttribute("showBtnImport", showBtnImport);
|
|
|
|
return "modules/exam/markerList";
|
|
return "modules/exam/markerList";
|
|
}
|
|
}
|
|
|
|
|
|
@@ -127,8 +138,9 @@ public class MarkerController extends BaseExamController {
|
|
for (Marker marker : list) {
|
|
for (Marker marker : list) {
|
|
JSONObject obj = new JSONObject();
|
|
JSONObject obj = new JSONObject();
|
|
obj.accumulate("id", marker.getId());
|
|
obj.accumulate("id", marker.getId());
|
|
- // obj.accumulate("loginName", marker.getLoginName());
|
|
|
|
- // obj.accumulate("name", marker.getName());
|
|
|
|
|
|
+ User user = userService.findById(marker.getUserId());
|
|
|
|
+ obj.accumulate("loginName", user.getLoginName());
|
|
|
|
+ obj.accumulate("name", user.getName());
|
|
array.add(obj);
|
|
array.add(obj);
|
|
}
|
|
}
|
|
return array;
|
|
return array;
|
|
@@ -158,68 +170,46 @@ public class MarkerController extends BaseExamController {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
- @RequestMapping("/batch-create")
|
|
|
|
- @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
|
- public String createInit(Model model, HttpServletRequest request,
|
|
|
|
- @RequestParam(required = false) String subjectCode, @RequestParam(required = false) Integer groupNumber) {
|
|
|
|
- int examId = getSessionExamId(request);
|
|
|
|
- model.addAttribute("subjectList", getExamSubject(examId, RequestUtils.getWebUser(request)));
|
|
|
|
- if (subjectCode != null) {
|
|
|
|
- model.addAttribute("subjectCode", subjectCode);
|
|
|
|
- model.addAttribute("groupList", groupService.findByExamAndSubject(examId, subjectCode));
|
|
|
|
- if (groupNumber != null) {
|
|
|
|
- model.addAttribute("groupNumber", groupNumber);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- model.addAttribute("groupList", new ArrayList<MarkGroup>());
|
|
|
|
- }
|
|
|
|
- return "modules/exam/markerCreate";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Logging(menu = "创建评卷员", type = LogType.ADD)
|
|
|
|
- @RequestMapping(value = "/batch-create", method = RequestMethod.POST)
|
|
|
|
- @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
|
- public ModelAndView create(HttpServletRequest request, @RequestParam String subjectCode,
|
|
|
|
- @RequestParam Integer groupNumber, @RequestParam Integer count,
|
|
|
|
- @RequestParam(required = false) String password) {
|
|
|
|
- int examId = getSessionExamId(request);
|
|
|
|
- ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
|
|
- ModelAndView view = new ModelAndView("redirect:/admin/exam/marker");
|
|
|
|
- if (subject != null && count > 0) {
|
|
|
|
- // markerService.batchCreate(subject, groupNumber, count, password);
|
|
|
|
- }
|
|
|
|
- view.addObject("subjectCode", subjectCode);
|
|
|
|
- if (groupNumber > 0) {
|
|
|
|
- view.addObject("groupNumber", groupNumber);
|
|
|
|
- }
|
|
|
|
- return view;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Logging(menu = "评卷员重置", type = LogType.UPDATE)
|
|
|
|
- @RequestMapping(value = "/reset")
|
|
|
|
- @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
|
- public String resetMarker(@RequestParam Integer id, Model model, RedirectAttributes redirectAttributes) {
|
|
|
|
- Marker marker = markerService.findById(id);
|
|
|
|
- if (marker != null) {
|
|
|
|
- try {
|
|
|
|
- lockService.waitlock(LockType.GROUP, marker.getExamId(), marker.getSubjectCode(),
|
|
|
|
- marker.getGroupNumber());
|
|
|
|
- lockService.waitlock(LockType.MARKER, marker.getId());
|
|
|
|
|
|
+ // @RequestMapping("/batch-create")
|
|
|
|
+ // @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
|
+ // public String createInit(Model model, HttpServletRequest request,
|
|
|
|
+ // @RequestParam(required = false) String subjectCode,
|
|
|
|
+ // @RequestParam(required = false) Integer groupNumber) {
|
|
|
|
+ // int examId = getSessionExamId(request);
|
|
|
|
+ // model.addAttribute("subjectList", getExamSubject(examId,
|
|
|
|
+ // RequestUtils.getWebUser(request)));
|
|
|
|
+ // if (subjectCode != null) {
|
|
|
|
+ // model.addAttribute("subjectCode", subjectCode);
|
|
|
|
+ // model.addAttribute("groupList", groupService.findByExamAndSubject(examId,
|
|
|
|
+ // subjectCode));
|
|
|
|
+ // if (groupNumber != null) {
|
|
|
|
+ // model.addAttribute("groupNumber", groupNumber);
|
|
|
|
+ // }
|
|
|
|
+ // } else {
|
|
|
|
+ // model.addAttribute("groupList", new ArrayList<MarkGroup>());
|
|
|
|
+ // }
|
|
|
|
+ // return "modules/exam/markerCreate";
|
|
|
|
+ // }
|
|
|
|
|
|
- markService.resetMarker(marker);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- log.error("reset marker error", e);
|
|
|
|
- throw new RuntimeException("重置评卷员失败", e);
|
|
|
|
- } finally {
|
|
|
|
- lockService.unlock(LockType.MARKER, marker.getId());
|
|
|
|
- lockService
|
|
|
|
- .unlock(LockType.GROUP, marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- redirectAttributes.addAttribute("subjectCode", marker.getSubjectCode());
|
|
|
|
- redirectAttributes.addAttribute("groupNumber", marker.getGroupNumber());
|
|
|
|
- return "redirect:/admin/exam/marker";
|
|
|
|
- }
|
|
|
|
|
|
+ // @Logging(menu = "创建评卷员", type = LogType.ADD)
|
|
|
|
+ // @RequestMapping(value = "/batch-create", method = RequestMethod.POST)
|
|
|
|
+ // @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
|
+ // public ModelAndView create(HttpServletRequest request, @RequestParam
|
|
|
|
+ // String subjectCode,
|
|
|
|
+ // @RequestParam Integer groupNumber, @RequestParam Integer count,
|
|
|
|
+ // @RequestParam(required = false) String password) {
|
|
|
|
+ // int examId = getSessionExamId(request);
|
|
|
|
+ // ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
|
|
+ // ModelAndView view = new ModelAndView("redirect:/admin/exam/marker");
|
|
|
|
+ // if (subject != null && count > 0) {
|
|
|
|
+ // // markerService.batchCreate(subject, groupNumber, count, password);
|
|
|
|
+ // }
|
|
|
|
+ // view.addObject("subjectCode", subjectCode);
|
|
|
|
+ // if (groupNumber > 0) {
|
|
|
|
+ // view.addObject("groupNumber", groupNumber);
|
|
|
|
+ // }
|
|
|
|
+ // return view;
|
|
|
|
+ // }
|
|
|
|
|
|
@Logging(menu = "评卷员重置", type = LogType.UPDATE)
|
|
@Logging(menu = "评卷员重置", type = LogType.UPDATE)
|
|
@RequestMapping(value = "/reset", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/reset", method = RequestMethod.POST)
|
|
@@ -270,44 +260,49 @@ public class MarkerController extends BaseExamController {
|
|
return obj;
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员导出", type = LogType.EXPORT)
|
|
|
|
- @RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
|
|
- public String exportFile(MarkerSearchQuery query, HttpServletRequest request, HttpServletResponse response,
|
|
|
|
- RedirectAttributes redirectAttributes) {
|
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
|
- int examId = getSessionExamId(request);
|
|
|
|
- query.setExamId(examId);
|
|
|
|
- try {
|
|
|
|
- query.setPageNumber(1);
|
|
|
|
- query.setPageSize(Integer.MAX_VALUE);
|
|
|
|
- query.setExamId(examId);
|
|
|
|
- query.orderById();
|
|
|
|
- subjectFilter(query, wu);
|
|
|
|
- String fileName = "评卷员账号.xlsx";
|
|
|
|
- query = markerService.findByQuery(query);
|
|
|
|
- for (Marker marker : query.getResult()) {
|
|
|
|
- ExamSubject subject = subjectService.find(examId, marker.getSubjectCode());
|
|
|
|
- if (subject != null) {
|
|
|
|
- marker.setSubjectName(subject.getCode() + "-" + subject.getName());
|
|
|
|
- } else {
|
|
|
|
- marker.setSubjectName("");
|
|
|
|
- }
|
|
|
|
- MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
|
- if (group != null) {
|
|
|
|
- group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
|
- group.getSubjectCode(), false, group.getNumber()));
|
|
|
|
- marker.setGroupName(group.getNumber() + "-" + group.getTitle());
|
|
|
|
- } else {
|
|
|
|
- marker.setGroupName("");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- new ExportExcel("评卷员数据", Marker.class).setDataList(query.getResult()).write(response, fileName).dispose();
|
|
|
|
- return null;
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- addMessage(redirectAttributes, "导出评卷员失败!" + e.getMessage());
|
|
|
|
- }
|
|
|
|
- return "redirect:/admin/exam/marker?repage";
|
|
|
|
- }
|
|
|
|
|
|
+ // @Logging(menu = "评卷员导出", type = LogType.EXPORT)
|
|
|
|
+ // @RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
|
|
+ // public String exportFile(MarkerSearchQuery query, HttpServletRequest
|
|
|
|
+ // request, HttpServletResponse response,
|
|
|
|
+ // RedirectAttributes redirectAttributes) {
|
|
|
|
+ // WebUser wu = RequestUtils.getWebUser(request);
|
|
|
|
+ // int examId = getSessionExamId(request);
|
|
|
|
+ // query.setExamId(examId);
|
|
|
|
+ // try {
|
|
|
|
+ // query.setPageNumber(1);
|
|
|
|
+ // query.setPageSize(Integer.MAX_VALUE);
|
|
|
|
+ // query.setExamId(examId);
|
|
|
|
+ // query.orderById();
|
|
|
|
+ // subjectFilter(query, wu);
|
|
|
|
+ // String fileName = "评卷员账号.xlsx";
|
|
|
|
+ // query = markerService.findByQuery(query);
|
|
|
|
+ // for (Marker marker : query.getResult()) {
|
|
|
|
+ // ExamSubject subject = subjectService.find(examId,
|
|
|
|
+ // marker.getSubjectCode());
|
|
|
|
+ // if (subject != null) {
|
|
|
|
+ // marker.setSubjectName(subject.getCode() + "-" + subject.getName());
|
|
|
|
+ // } else {
|
|
|
|
+ // marker.setSubjectName("");
|
|
|
|
+ // }
|
|
|
|
+ // MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(),
|
|
|
|
+ // marker.getGroupNumber());
|
|
|
|
+ // if (group != null) {
|
|
|
|
+ // group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
|
+ // group.getSubjectCode(), false, group.getNumber()));
|
|
|
|
+ // marker.setGroupName(group.getNumber() + "-" + group.getTitle());
|
|
|
|
+ // } else {
|
|
|
|
+ // marker.setGroupName("");
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // new ExportExcel("评卷员数据",
|
|
|
|
+ // Marker.class).setDataList(query.getResult()).write(response,
|
|
|
|
+ // fileName).dispose();
|
|
|
|
+ // return null;
|
|
|
|
+ // } catch (Exception e) {
|
|
|
|
+ // addMessage(redirectAttributes, "导出评卷员失败!" + e.getMessage());
|
|
|
|
+ // }
|
|
|
|
+ // return "redirect:/admin/exam/marker?repage";
|
|
|
|
+ // }
|
|
|
|
|
|
@Logging(menu = "评卷员重置密码", type = LogType.UPDATE)
|
|
@Logging(menu = "评卷员重置密码", type = LogType.UPDATE)
|
|
@RequestMapping(value = "/reSetPassword", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/reSetPassword", method = RequestMethod.POST)
|
|
@@ -362,101 +357,160 @@ public class MarkerController extends BaseExamController {
|
|
@RequestMapping(value = "/import", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/import", method = RequestMethod.POST)
|
|
public String importFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes,
|
|
public String importFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes,
|
|
@RequestParam String subjectCode) {
|
|
@RequestParam String subjectCode) {
|
|
- // int examId = getSessionExamId(request);
|
|
|
|
- // try {
|
|
|
|
- // int successNum = 0;
|
|
|
|
- // int failureNum = 0;
|
|
|
|
- // StringBuilder failureMsg = new StringBuilder();
|
|
|
|
- // ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
|
- // List<Marker> list = ei.getDataList(Marker.class);
|
|
|
|
- // List<Marker> saveList = new LinkedList<Marker>();
|
|
|
|
- // Map<String, Marker> saveMap = new HashMap<String, Marker>();
|
|
|
|
- // Map<String, ExamSubject> current = null;
|
|
|
|
- // current = new HashMap<String, ExamSubject>();
|
|
|
|
- // List<ExamSubject> list2 = subjectService.list(examId);
|
|
|
|
- // for (ExamSubject s : list2) {
|
|
|
|
- // current.put(s.getCode(), s);
|
|
|
|
- // }
|
|
|
|
- // for (Marker marker : list) {
|
|
|
|
- // String password = "";
|
|
|
|
- // if (StringUtils.isBlank(marker.getSubjectCode()) ||
|
|
|
|
- // StringUtils.isBlank(marker.getLoginName())) {
|
|
|
|
- // continue;
|
|
|
|
- // }
|
|
|
|
- // marker.setExamId(examId);
|
|
|
|
- // marker.setName(marker.getLoginName());
|
|
|
|
- // marker.setEnable(true);
|
|
|
|
- // marker.setClassCount(0);
|
|
|
|
- // if (StringUtils.isBlank(marker.getPassword())) {
|
|
|
|
- // Random random = new Random();
|
|
|
|
- // for (int i = 0; i < 6; i++) {
|
|
|
|
- // password += random.nextInt(10);
|
|
|
|
- // }
|
|
|
|
- // marker.setPassword(password);
|
|
|
|
- // }
|
|
|
|
- // MarkerExcelError markerExcelError = checkLongNameAndPassword(marker,
|
|
|
|
- // current, saveMap);
|
|
|
|
- // if (markerExcelError.equals(MarkerExcelError.MARKER)) {
|
|
|
|
- // saveList.add(marker);
|
|
|
|
- // saveMap.put(marker.getLoginName(), marker);
|
|
|
|
- // } else {
|
|
|
|
- // failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," +
|
|
|
|
- // markerExcelError.getName());
|
|
|
|
- // failureNum++;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // successNum = markerService.batchSave(saveList);
|
|
|
|
- // if (failureNum > 0) {
|
|
|
|
- // failureMsg.insert(0, ",失败 " + failureNum + " 条记录!");
|
|
|
|
- // }
|
|
|
|
- // String message = "已成功导入 " + successNum + " 条评卷员 ";
|
|
|
|
- // addMessage(redirectAttributes, message + failureMsg);
|
|
|
|
- // RequestUtils.setLog(request, message);
|
|
|
|
- // } catch (Exception e) {
|
|
|
|
- // log.error("Batch import marker error!", e);
|
|
|
|
- // addMessage(redirectAttributes, "导入评卷员失败!失败信息:" + e.getMessage());
|
|
|
|
- // }
|
|
|
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
|
+ Integer schoolId = wu.getUser().getSchoolId();
|
|
|
|
+ try {
|
|
|
|
+ int successNum = 0;
|
|
|
|
+ int failureNum = 0;
|
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
|
+ ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
|
+ List<Marker> list = ei.getDataList(Marker.class);
|
|
|
|
+
|
|
|
|
+ Map<String, User> userMap = new HashMap<String, User>();
|
|
|
|
+ Map<String, ExamSubject> subjectMap = new HashMap<String, ExamSubject>();
|
|
|
|
+ Map<String, MarkGroup> groupMap = new HashMap<String, MarkGroup>();
|
|
|
|
+ List<Marker> saveList = new ArrayList<Marker>();
|
|
|
|
+
|
|
|
|
+ for (Marker marker : list) {
|
|
|
|
+ if (StringUtils.isBlank(marker.getLoginName())) {
|
|
|
|
+ failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
|
+ + MarkerExcelError.MARKERNAMENULL.getName());
|
|
|
|
+ failureNum++;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ ExamSubject examSubject = subjectMap.get(marker.getSubjectCode());
|
|
|
|
+ if (examSubject == null) {
|
|
|
|
+ examSubject = subjectService.find(examId, marker.getSubjectCode());
|
|
|
|
+ if (examSubject == null) {
|
|
|
|
+ failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
|
+ + MarkerExcelError.MARKERNOTCODE.getName());
|
|
|
|
+ failureNum++;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ MarkGroup markGroup = groupMap.get(marker.getSubjectCode() + "-" + marker.getNumber());
|
|
|
|
+ if (markGroup == null) {
|
|
|
|
+ markGroup = groupService.findOne(examId, marker.getSubjectCode(), marker.getNumber());
|
|
|
|
+ if (markGroup == null) {
|
|
|
|
+ failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode() + ","
|
|
|
|
+ + marker.getNumber() + MarkerExcelError.MARKERNOTGROUP.getName());
|
|
|
|
+ failureNum++;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ User user = userMap.get(marker.getLoginName().trim());
|
|
|
|
+ if (user == null) {
|
|
|
|
+ user = userService.findByLoginName(marker.getLoginName().trim());
|
|
|
|
+ if (user != null && !schoolId.equals(user.getSchoolId())) {
|
|
|
|
+ failureMsg.append("<br/>评卷员 " + marker.getLoginName() + "," + marker.getSubjectCode()
|
|
|
|
+ + MarkerExcelError.MARKERNAMEUSED.getName());
|
|
|
|
+ failureNum++;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (user == null) {
|
|
|
|
+ user = getUser(userMap, marker.getLoginName().trim(), schoolId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ subjectMap.put(examSubject.getCode(), examSubject);
|
|
|
|
+ groupMap.put(markGroup.getSubjectCode() + "-" + markGroup.getNumber(), markGroup);
|
|
|
|
+ marker = getMarker(examId, examSubject.getCode(), markGroup.getNumber(), user.getId());
|
|
|
|
+ saveList.add(marker);
|
|
|
|
+ }
|
|
|
|
+ successNum = markerService.batchSave(saveList);
|
|
|
|
+ if (failureNum > 0) {
|
|
|
|
+ failureMsg.insert(0, ",失败 " + failureNum + " 条记录!");
|
|
|
|
+ }
|
|
|
|
+ String message = "已成功导入 " + successNum + " 条评卷员 ";
|
|
|
|
+ addMessage(redirectAttributes, message + failureMsg);
|
|
|
|
+ RequestUtils.setLog(request, message);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("Batch import marker error!", e);
|
|
|
|
+ addMessage(redirectAttributes, "导入评卷员失败!失败信息:" + e.getMessage());
|
|
|
|
+ }
|
|
return "redirect:" + "/admin/exam/marker?subjectCode=" + subjectCode;
|
|
return "redirect:" + "/admin/exam/marker?subjectCode=" + subjectCode;
|
|
}
|
|
}
|
|
|
|
|
|
- // private MarkerExcelError checkLongNameAndPassword(Marker marker,
|
|
|
|
- // Map<String, ExamSubject> current,
|
|
|
|
- // Map<String, Marker> saveMap) {
|
|
|
|
- // Marker previous = null;
|
|
|
|
- //
|
|
|
|
- // if (current != null && current.get(marker.getSubjectCode()) == null) {
|
|
|
|
- // return MarkerExcelError.MARKERNOTCODE;
|
|
|
|
- // }
|
|
|
|
- // MarkGroup group = groupService.findOne(marker.getExamId(),
|
|
|
|
- // marker.getSubjectCode(),
|
|
|
|
- // Integer.valueOf(marker.getGroupName()));
|
|
|
|
- // if (group == null) {
|
|
|
|
- // return MarkerExcelError.MARKERNOTGROUP;
|
|
|
|
- // } else {
|
|
|
|
- // marker.setGroupNumber(Integer.valueOf(marker.getGroupName()));
|
|
|
|
- // }
|
|
|
|
- // if (saveMap != null) {
|
|
|
|
- // previous = saveMap.get(marker.getLoginName());
|
|
|
|
- // }
|
|
|
|
- //
|
|
|
|
- // if (previous != null) {
|
|
|
|
- // return MarkerExcelError.MARKERED;
|
|
|
|
- // }
|
|
|
|
- //
|
|
|
|
- // previous = markerService.findByLoginName(marker.getLoginName());
|
|
|
|
- //
|
|
|
|
- // if (marker.getPassword().length() > 0 && marker.getPassword().length() <
|
|
|
|
- // 4) {
|
|
|
|
- // return MarkerExcelError.MARKERPWERROR;
|
|
|
|
- // }
|
|
|
|
- //
|
|
|
|
- // if (previous == null) {
|
|
|
|
- // return MarkerExcelError.MARKER;
|
|
|
|
- // }
|
|
|
|
- // return MarkerExcelError.MARKERED;
|
|
|
|
- // }
|
|
|
|
|
|
+ private Marker getMarker(int examId, String subjectCode, Integer number, Integer userId) {
|
|
|
|
+ Marker marker = markerService.findByExamAndSubjectAndNumberAndUserId(examId, subjectCode, number, userId);
|
|
|
|
+ if (marker == null) {
|
|
|
|
+ marker = new Marker();
|
|
|
|
+ marker.setExamId(examId);
|
|
|
|
+ marker.setSubjectCode(subjectCode);
|
|
|
|
+ marker.setUserId(userId);
|
|
|
|
+ marker.setEnable(true);
|
|
|
|
+ }
|
|
|
|
+ return marker;
|
|
|
|
+ }
|
|
|
|
|
|
- // 校验excel中数据
|
|
|
|
|
|
+ private User getUser(Map<String, User> saveMap, String loginName, Integer schoolId) {
|
|
|
|
+ User user = saveMap.get(loginName);
|
|
|
|
+ if (user == null) {
|
|
|
|
+ user = new User();
|
|
|
|
+ user.setLoginName(loginName);
|
|
|
|
+ user.setName(loginName);
|
|
|
|
+ user.setPassword(Md5EncryptUtils.md5(USER_PASSWORD));
|
|
|
|
+ user.setRole(Role.MARKER);
|
|
|
|
+ user.setSchoolId(schoolId);
|
|
|
|
+ user.setEnable(true);
|
|
|
|
+ user.setCreatedTime(new Date());
|
|
|
|
+ userService.save(user);
|
|
|
|
+ saveMap.put(loginName, user);
|
|
|
|
+ }
|
|
|
|
+ return user;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @RequestMapping("/save")
|
|
|
|
+ public String add(Model model, HttpServletRequest request, UserSearchQuery query, @RequestParam String subjectCode) {
|
|
|
|
+ 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";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Logging(menu = "评卷员绑定", type = LogType.ADD)
|
|
|
|
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
|
|
|
|
+ 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";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @RequestMapping("/delete")
|
|
|
|
+ public String delete(@RequestParam Integer markerId, RedirectAttributes redirectAttributes) {
|
|
|
|
+ Marker marker = markerService.findById(markerId);
|
|
|
|
+ if (marker == null) {
|
|
|
|
+ return "redirect:/admin/exam/marker";
|
|
|
|
+ }
|
|
|
|
+ long count = libraryService.countByMarker(markerId);
|
|
|
|
+ String subjectCode = marker.getSubjectCode();
|
|
|
|
+ Integer groupNumber = marker.getGroupNumber();
|
|
|
|
+ if (count > 0) {
|
|
|
|
+ addMessage(redirectAttributes, "删除评卷员失败,该评卷员已开始评卷");
|
|
|
|
+ } else {
|
|
|
|
+ markerService.deleteById(markerId);
|
|
|
|
+ }
|
|
|
|
+ return "redirect:/admin/exam/marker?subjectCode=" + subjectCode + "&groupNumber=" + groupNumber;
|
|
|
|
+ }
|
|
|
|
|
|
@RequestMapping(value = "/class/{markerId}", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/class/{markerId}", method = RequestMethod.GET)
|
|
public String classAdd(@PathVariable Integer markerId, Model model, RedirectAttributes redirectAttributes) {
|
|
public String classAdd(@PathVariable Integer markerId, Model model, RedirectAttributes redirectAttributes) {
|