|
@@ -1,56 +1,41 @@
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.List;
|
|
|
|
-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.slf4j.Logger;
|
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
|
-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.ModelAndView;
|
|
|
|
-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;
|
|
import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
|
|
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.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.exam.service.*;
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
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.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.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.Md5EncryptUtils;
|
|
|
|
|
|
+import cn.com.qmth.stmms.common.utils.ImportExcel;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
-
|
|
|
|
import com.google.common.collect.Lists;
|
|
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.beans.factory.annotation.Value;
|
|
|
|
+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.ModelAndView;
|
|
|
|
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
+
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Controller("examMarkerController")
|
|
@Controller("examMarkerController")
|
|
@RequestMapping("/admin/exam/marker")
|
|
@RequestMapping("/admin/exam/marker")
|
|
@@ -58,8 +43,6 @@ public class MarkerController extends BaseExamController {
|
|
|
|
|
|
protected static Logger log = LoggerFactory.getLogger(MarkerController.class);
|
|
protected static Logger log = LoggerFactory.getLogger(MarkerController.class);
|
|
|
|
|
|
- public static final String USER_PASSWORD = "123456";
|
|
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private UserService userService;
|
|
private UserService userService;
|
|
|
|
|
|
@@ -93,7 +76,6 @@ public class MarkerController extends BaseExamController {
|
|
@Value("${marker.showBtnImportAndBtnUpdateImport}")
|
|
@Value("${marker.showBtnImportAndBtnUpdateImport}")
|
|
private String showBtnImport;
|
|
private String showBtnImport;
|
|
|
|
|
|
- @Logging(menu = "评卷员查询", type = LogType.QUERY)
|
|
|
|
@RequestMapping
|
|
@RequestMapping
|
|
public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
|
|
public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
@@ -105,11 +87,13 @@ public class MarkerController extends BaseExamController {
|
|
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()));
|
|
MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
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.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));
|
|
@@ -125,16 +109,16 @@ public class MarkerController extends BaseExamController {
|
|
JSONArray array = new JSONArray();
|
|
JSONArray array = new JSONArray();
|
|
List<Marker> list = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
|
|
List<Marker> list = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
|
|
for (Marker marker : list) {
|
|
for (Marker marker : list) {
|
|
|
|
+ User user = userService.findById(marker.getUserId());
|
|
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());
|
|
|
|
|
|
+ obj.accumulate("loginName", user.getAccount());
|
|
|
|
+ obj.accumulate("name", user.getName());
|
|
array.add(obj);
|
|
array.add(obj);
|
|
}
|
|
}
|
|
return array;
|
|
return array;
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员回收任务", type = LogType.UPDATE)
|
|
|
|
@RequestMapping("/release")
|
|
@RequestMapping("/release")
|
|
@ResponseBody
|
|
@ResponseBody
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@@ -176,7 +160,6 @@ public class MarkerController extends BaseExamController {
|
|
return "modules/exam/markerCreate";
|
|
return "modules/exam/markerCreate";
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "创建评卷员", type = LogType.ADD)
|
|
|
|
@RequestMapping(value = "/batch-create", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/batch-create", method = RequestMethod.POST)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
public ModelAndView create(HttpServletRequest request, @RequestParam String subjectCode,
|
|
public ModelAndView create(HttpServletRequest request, @RequestParam String subjectCode,
|
|
@@ -186,7 +169,7 @@ public class MarkerController extends BaseExamController {
|
|
ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
ModelAndView view = new ModelAndView("redirect:/admin/exam/marker");
|
|
ModelAndView view = new ModelAndView("redirect:/admin/exam/marker");
|
|
if (subject != null && count > 0) {
|
|
if (subject != null && count > 0) {
|
|
- // markerService.batchCreate(subject, groupNumber, count, password);
|
|
|
|
|
|
+ markerService.batchCreate(subject, groupNumber, count, password);
|
|
}
|
|
}
|
|
view.addObject("subjectCode", subjectCode);
|
|
view.addObject("subjectCode", subjectCode);
|
|
if (groupNumber > 0) {
|
|
if (groupNumber > 0) {
|
|
@@ -195,15 +178,14 @@ public class MarkerController extends BaseExamController {
|
|
return view;
|
|
return view;
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员重置", type = LogType.UPDATE)
|
|
|
|
@RequestMapping(value = "/reset")
|
|
@RequestMapping(value = "/reset")
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
public String resetMarker(@RequestParam Integer id, Model model, RedirectAttributes redirectAttributes) {
|
|
public String resetMarker(@RequestParam Integer id, Model model, RedirectAttributes redirectAttributes) {
|
|
Marker marker = markerService.findById(id);
|
|
Marker marker = markerService.findById(id);
|
|
if (marker != null) {
|
|
if (marker != null) {
|
|
try {
|
|
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());
|
|
lockService.waitlock(LockType.MARKER, marker.getId());
|
|
|
|
|
|
markService.resetMarker(marker);
|
|
markService.resetMarker(marker);
|
|
@@ -221,7 +203,6 @@ public class MarkerController extends BaseExamController {
|
|
return "redirect:/admin/exam/marker";
|
|
return "redirect:/admin/exam/marker";
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员重置", type = LogType.UPDATE)
|
|
|
|
@RequestMapping(value = "/reset", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/reset", method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ResponseBody
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@@ -230,8 +211,8 @@ public class MarkerController extends BaseExamController {
|
|
JSONObject obj = new JSONObject();
|
|
JSONObject obj = new JSONObject();
|
|
if (marker != null) {
|
|
if (marker != null) {
|
|
try {
|
|
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());
|
|
lockService.waitlock(LockType.MARKER, marker.getId());
|
|
|
|
|
|
markService.resetMarker(marker);
|
|
markService.resetMarker(marker);
|
|
@@ -252,7 +233,6 @@ public class MarkerController extends BaseExamController {
|
|
return obj;
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员禁用/启用", type = LogType.UPDATE)
|
|
|
|
@RequestMapping(value = "/toggle", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/toggle", method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ResponseBody
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
@@ -270,7 +250,6 @@ public class MarkerController extends BaseExamController {
|
|
return obj;
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员导出", type = LogType.EXPORT)
|
|
|
|
@RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
public String exportFile(MarkerSearchQuery query, HttpServletRequest request, HttpServletResponse response,
|
|
public String exportFile(MarkerSearchQuery query, HttpServletRequest request, HttpServletResponse response,
|
|
RedirectAttributes redirectAttributes) {
|
|
RedirectAttributes redirectAttributes) {
|
|
@@ -294,8 +273,9 @@ public class MarkerController extends BaseExamController {
|
|
}
|
|
}
|
|
MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
|
|
if (group != null) {
|
|
if (group != null) {
|
|
- group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
|
- group.getSubjectCode(), false, group.getNumber()));
|
|
|
|
|
|
+ group.setQuestionList(questionService
|
|
|
|
+ .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, group.getSubjectCode(), false,
|
|
|
|
+ group.getNumber()));
|
|
marker.setGroupName(group.getNumber() + "-" + group.getTitle());
|
|
marker.setGroupName(group.getNumber() + "-" + group.getTitle());
|
|
} else {
|
|
} else {
|
|
marker.setGroupName("");
|
|
marker.setGroupName("");
|
|
@@ -309,25 +289,6 @@ public class MarkerController extends BaseExamController {
|
|
return "redirect:/admin/exam/marker?repage";
|
|
return "redirect:/admin/exam/marker?repage";
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员重置密码", type = LogType.UPDATE)
|
|
|
|
- @RequestMapping(value = "/reSetPassword", method = RequestMethod.POST)
|
|
|
|
- @ResponseBody
|
|
|
|
- public JSONObject reSetPassword(@RequestParam Integer id, @RequestParam String password) {
|
|
|
|
- Marker marker = markerService.findById(id);
|
|
|
|
- User user = userService.findById(marker.getUserId());
|
|
|
|
- JSONObject obj = new JSONObject();
|
|
|
|
- if (user != null) {
|
|
|
|
- user.setPassword(Md5EncryptUtils.md5(password));
|
|
|
|
- user = userService.save(user);
|
|
|
|
- obj.accumulate("success", true);
|
|
|
|
- } else {
|
|
|
|
- obj.accumulate("success", false);
|
|
|
|
- obj.accumulate("message", "该评卷员不存在");
|
|
|
|
- }
|
|
|
|
- return obj;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Logging(menu = "评卷员设置任务数量", type = LogType.UPDATE)
|
|
|
|
@RequestMapping(value = "/setTaskCount", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/setTaskCount", method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ResponseBody
|
|
public JSONObject setTaskCount(@RequestParam Integer id, @RequestParam Integer taskCount) {
|
|
public JSONObject setTaskCount(@RequestParam Integer id, @RequestParam Integer taskCount) {
|
|
@@ -358,105 +319,192 @@ public class MarkerController extends BaseExamController {
|
|
return "redirect:" + "/admin/exam/marker";
|
|
return "redirect:" + "/admin/exam/marker";
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员导入", type = LogType.IMPORT_FILE)
|
|
|
|
|
|
+ @RequestMapping(value = "/updateLoginNameTemplate")
|
|
|
|
+ public String updateLoginNameTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
|
|
|
+ try {
|
|
|
|
+ String fileName = "评卷员账号修改导入模板.xlsx";
|
|
|
|
+ List<MarkerDTO> list = Lists.newArrayList();
|
|
|
|
+ list.add(new MarkerDTO());
|
|
|
|
+ new ExportExcel("评卷员账号修改数据", MarkerDTO.class, 2).setDataList(list).write(response, fileName).dispose();
|
|
|
|
+ return null;
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ addMessage(redirectAttributes, "导入模板下载失败!失败信息:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ return "redirect:" + "/admin/exam/marker";
|
|
|
|
+ }
|
|
|
|
+
|
|
@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);
|
|
|
|
+ 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 + " 条记录!");
|
|
|
|
+ }
|
|
|
|
+ addMessage(redirectAttributes, "已成功导入 " + successNum + " 条评卷员" + failureMsg);
|
|
|
|
+ } 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;
|
|
|
|
- // }
|
|
|
|
|
|
+ @RequestMapping(value = "/importUpdate", method = RequestMethod.POST)
|
|
|
|
+ public String importUpdateFile(HttpServletRequest request, MultipartFile file,
|
|
|
|
+ RedirectAttributes redirectAttributes) {
|
|
|
|
+ try {
|
|
|
|
+ int successNum = 0;
|
|
|
|
+ int failureNum = 0;
|
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
|
+ ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
|
+ List<MarkerDTO> list = ei.getDataList(MarkerDTO.class);
|
|
|
|
+ List<Marker> saveList = new LinkedList<Marker>();
|
|
|
|
+ Map<String, Marker> current = null;
|
|
|
|
+ List<Marker> list2 = markerService.findMode("common");
|
|
|
|
+ if (list2.size() < 10000) {
|
|
|
|
+ current = new HashMap<String, Marker>();
|
|
|
|
+ for (Marker s : list2) {
|
|
|
|
+ current.put(s.getLoginName(), s);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (MarkerDTO markerDTO : list) {
|
|
|
|
+ if (StringUtils.isBlank(markerDTO.getSubjectCode()) || StringUtils.isBlank(markerDTO.getLoginName())
|
|
|
|
+ || StringUtils.isBlank(markerDTO.getNewLoginName()) || StringUtils
|
|
|
|
+ .isBlank(markerDTO.getPassword())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ MarkerExcelError markerExcelError = checkExcelData(markerDTO, current);
|
|
|
|
+ if (markerExcelError.equals(MarkerExcelError.MARKER)) {
|
|
|
|
+ Marker marker = null;
|
|
|
|
+ if (current != null) {
|
|
|
|
+ marker = current.get(markerDTO.getLoginName());
|
|
|
|
+ } else {
|
|
|
|
+ marker = markerService.findByLoginName(markerDTO.getLoginName());
|
|
|
|
+ }
|
|
|
|
+ marker.setLoginName(markerDTO.getNewLoginName());
|
|
|
|
+ marker.setPassword(markerDTO.getPassword());
|
|
|
|
+ saveList.add(marker);
|
|
|
|
+ } else {
|
|
|
|
+ failureMsg.append("<br/>科目代码(" + markerDTO.getSubjectCode() + ")原评卷员(" + markerDTO.getLoginName()
|
|
|
|
+ + ")更换新评卷员为(" + markerDTO.getNewLoginName() + ")失败!");
|
|
|
|
+ failureMsg.append("---->失败原因:(" + markerExcelError.getName() + ")");
|
|
|
|
+ failureNum++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ successNum = markerService.batchSave(saveList);
|
|
|
|
+ if (failureNum > 0) {
|
|
|
|
+ failureMsg.insert(0, ",失败 " + failureNum + " 条记录!");
|
|
|
|
+ }
|
|
|
|
+ addMessage(redirectAttributes, "已成功导入 " + successNum + " 条" + failureMsg);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("Batch import marker error!", e);
|
|
|
|
+ addMessage(redirectAttributes, "导入修改评卷员账号失败!失败信息:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ return "redirect:" + "/admin/exam/marker";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
|
|
// 校验excel中数据
|
|
// 校验excel中数据
|
|
|
|
+ public MarkerExcelError checkExcelData(MarkerDTO markerDTO, Map<String, Marker> current) {
|
|
|
|
+ if (markerDTO != null) {
|
|
|
|
+ Marker marker = null;
|
|
|
|
+ if (current == null) {
|
|
|
|
+ marker = markerService.findByLoginName(markerDTO.getLoginName());
|
|
|
|
+ } else {
|
|
|
|
+ marker = current.get(markerDTO.getLoginName());
|
|
|
|
+ }
|
|
|
|
+ if (markerDTO.getPassword().length() < 4) {
|
|
|
|
+ return MarkerExcelError.MARKERPWERROR;
|
|
|
|
+ }
|
|
|
|
+ if (marker != null) {
|
|
|
|
+ if (marker.getSubjectCode().equals(markerDTO.getSubjectCode())) {
|
|
|
|
+ if (markerService.countByLoginName(markerDTO.getNewLoginName()) > 0) {
|
|
|
|
+ return MarkerExcelError.MARKERNEWMISS;
|
|
|
|
+ } else {
|
|
|
|
+ return MarkerExcelError.MARKER;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return MarkerExcelError.MARKERCODEMISS;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return MarkerExcelError.MARKERMISS;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return MarkerExcelError.MARKERNOTINFO;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
@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) {
|
|
@@ -474,67 +522,61 @@ public class MarkerController extends BaseExamController {
|
|
return "redirect:/admin/exam/marker";
|
|
return "redirect:/admin/exam/marker";
|
|
}
|
|
}
|
|
|
|
|
|
- @Logging(menu = "评卷员班级绑定", type = LogType.UPDATE)
|
|
|
|
@RequestMapping(value = "/class/{markerId}", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/class/{markerId}", method = RequestMethod.POST)
|
|
public String classSave(@PathVariable Integer markerId, @RequestParam(required = false) String[] classes,
|
|
public String classSave(@PathVariable Integer markerId, @RequestParam(required = false) String[] classes,
|
|
Model model, RedirectAttributes redirectAttributes) {
|
|
Model model, RedirectAttributes redirectAttributes) {
|
|
Marker marker = markerService.findById(markerId);
|
|
Marker marker = markerService.findById(markerId);
|
|
if (marker != null) {
|
|
if (marker != null) {
|
|
classService.save(marker, classes);
|
|
classService.save(marker, classes);
|
|
- addMessage(redirectAttributes, "保存成功");
|
|
|
|
- return "redirect:" + "/admin/exam/marker?subjectCode=" + marker.getSubjectCode() + "&groupNumber="
|
|
|
|
- + marker.getGroupNumber();
|
|
|
|
|
|
+ addMessage(redirectAttributes, "保存'" + marker.getLoginName() + "'成功");
|
|
|
|
+ return "redirect:" + "/admin/exam/marker?subjectCode=" + marker.getSubjectCode() + "&groupNumber=" + marker
|
|
|
|
+ .getGroupNumber();
|
|
}
|
|
}
|
|
addMessage(redirectAttributes, "评卷员不存在");
|
|
addMessage(redirectAttributes, "评卷员不存在");
|
|
return "redirect:/admin/exam/marker";
|
|
return "redirect:/admin/exam/marker";
|
|
}
|
|
}
|
|
|
|
|
|
- // @RequestMapping(value = "/account/{markerId}")
|
|
|
|
- // public String editAccount(HttpServletRequest request, Model model,
|
|
|
|
- // RedirectAttributes redirectAttributes,
|
|
|
|
- // @PathVariable Integer markerId) {
|
|
|
|
- // Exam exam = examService.findById(getSessionExamId(request));
|
|
|
|
- // Marker marker = markerService.findById(markerId);
|
|
|
|
- // if (exam != null && marker != null &&
|
|
|
|
- // exam.getId().equals(marker.getExamId())) {
|
|
|
|
- // model.addAttribute("marker", marker);
|
|
|
|
- // model.addAttribute("openAccountList",
|
|
|
|
- // userService.listUnbindOpenAccount(exam.getSchoolId(),
|
|
|
|
- // marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber()));
|
|
|
|
- // return "modules/exam/markerAccount";
|
|
|
|
- // }
|
|
|
|
- // addMessage(redirectAttributes, "评卷员不存在");
|
|
|
|
- // return "redirect:/admin/exam/marker";
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @RequestMapping(value = "/account/bind", method = RequestMethod.POST)
|
|
|
|
- // @ResponseBody
|
|
|
|
- // @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
|
- // public boolean bindAccount(@RequestParam Integer markerId, @RequestParam
|
|
|
|
- // Integer accountId) {
|
|
|
|
- // Marker marker = markerService.findById(markerId);
|
|
|
|
- // if (marker == null) {
|
|
|
|
- // return false;
|
|
|
|
- // }
|
|
|
|
- // OpenAccount oa = userService.findOpenAccount(accountId);
|
|
|
|
- // if (oa == null || !oa.isEnable()) {
|
|
|
|
- // return false;
|
|
|
|
- // }
|
|
|
|
- // if
|
|
|
|
- // (markerService.countByExamAndSubjectAndGroupAndOpenAccount(marker.getExamId(),
|
|
|
|
- // marker.getSubjectCode(),
|
|
|
|
- // marker.getGroupNumber(), accountId) == 0) {
|
|
|
|
- // markerService.updateOpenAccountById(markerId, accountId);
|
|
|
|
- // return true;
|
|
|
|
- // }
|
|
|
|
- // return false;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @RequestMapping(value = "/account/unbind", method = RequestMethod.POST)
|
|
|
|
- // @ResponseBody
|
|
|
|
- // @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
|
- // public boolean unbindOpenAccount(@RequestParam Integer markerId) {
|
|
|
|
- // markerService.updateOpenAccountById(markerId, null);
|
|
|
|
- // return true;
|
|
|
|
- // }
|
|
|
|
|
|
+ @RequestMapping(value = "/account/{markerId}")
|
|
|
|
+ public String editAccount(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
|
|
+ @PathVariable Integer markerId) {
|
|
|
|
+ Exam exam = examService.findById(getSessionExamId(request));
|
|
|
|
+ Marker marker = markerService.findById(markerId);
|
|
|
|
+ if (exam != null && marker != null && exam.getId().equals(marker.getExamId())) {
|
|
|
|
+ model.addAttribute("marker", marker);
|
|
|
|
+ model.addAttribute("openAccountList", userService
|
|
|
|
+ .listUnbindOpenAccount(exam.getSchoolId(), marker.getExamId(), marker.getSubjectCode(),
|
|
|
|
+ marker.getGroupNumber()));
|
|
|
|
+ return "modules/exam/markerAccount";
|
|
|
|
+ }
|
|
|
|
+ addMessage(redirectAttributes, "评卷员不存在");
|
|
|
|
+ return "redirect:/admin/exam/marker";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "/account/bind", method = RequestMethod.POST)
|
|
|
|
+ @ResponseBody
|
|
|
|
+ @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
|
+ public boolean bindAccount(@RequestParam Integer markerId, @RequestParam Integer accountId) {
|
|
|
|
+ Marker marker = markerService.findById(markerId);
|
|
|
|
+ if (marker == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ OpenAccount oa = userService.findOpenAccount(accountId);
|
|
|
|
+ if (oa == null || !oa.isEnable()) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ if (markerService.countByExamAndSubjectAndGroupAndOpenAccount(marker.getExamId(), marker.getSubjectCode(),
|
|
|
|
+ marker.getGroupNumber(), accountId) == 0) {
|
|
|
|
+ markerService.updateOpenAccountById(markerId, accountId);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "/account/unbind", method = RequestMethod.POST)
|
|
|
|
+ @ResponseBody
|
|
|
|
+ @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
|
+ public boolean unbindOpenAccount(@RequestParam Integer markerId) {
|
|
|
|
+ markerService.updateOpenAccountById(markerId, null);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
}
|
|
}
|