|
@@ -5,31 +5,45 @@ import java.util.List;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
+import net.sf.json.JSONArray;
|
|
|
+import net.sf.json.JsonConfig;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringEscapeUtils;
|
|
|
+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.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.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
|
|
|
import cn.com.qmth.stmms.admin.vo.ExamInfoVO;
|
|
|
+import cn.com.qmth.stmms.biz.campus.model.Campus;
|
|
|
+import cn.com.qmth.stmms.biz.campus.service.CampusService;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamSearchQuery;
|
|
|
+import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
|
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.MarkerService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
|
|
|
import cn.com.qmth.stmms.biz.user.model.User;
|
|
|
import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
import cn.com.qmth.stmms.common.enums.ExamStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
|
import cn.com.qmth.stmms.common.utils.Paginator;
|
|
|
+import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
|
@Controller
|
|
@@ -49,6 +63,12 @@ public class ExamController extends BaseExamController {
|
|
|
|
|
|
@Autowired
|
|
|
private ExamSubjectService examSubjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CampusService campusService;
|
|
|
+
|
|
|
+ @Value("${sheet.image.server}")
|
|
|
+ private String imageServer;
|
|
|
|
|
|
@RequestMapping(value = { "/exam-list" })
|
|
|
public String examList(Model model, HttpServletRequest request, ExamSearchQuery query) {
|
|
@@ -80,6 +100,7 @@ public class ExamController extends BaseExamController {
|
|
|
Exam exam = examService.findById(examId);
|
|
|
model.addAttribute("exam", exam);
|
|
|
model.addAttribute("statusList", ExamStatus.values());
|
|
|
+ model.addAttribute("pictureConfig", buildPictureConfig(exam.getSheetConfig()));
|
|
|
return "modules/exam/examEdit";
|
|
|
}
|
|
|
|
|
@@ -95,9 +116,11 @@ public class ExamController extends BaseExamController {
|
|
|
return "redirect:/admin/exam-list";
|
|
|
}
|
|
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
@RequestMapping(value = "/exam-edit", method = RequestMethod.POST)
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
- public String examEdit(HttpServletRequest request, Exam exam, int StatusValue, RedirectAttributes redirectAttributes) {
|
|
|
+ public String examEdit(HttpServletRequest request, Exam exam, int StatusValue, @RequestParam String picList,
|
|
|
+ RedirectAttributes redirectAttributes) {
|
|
|
User user = RequestUtils.getWebUser(request).getUser();
|
|
|
Exam oldExam = examService.findById(exam.getId());
|
|
|
if (oldExam != null && oldExam.getCreatorId().intValue() == user.getId().intValue()) {
|
|
@@ -108,6 +131,10 @@ public class ExamController extends BaseExamController {
|
|
|
oldExam.setForceSpecialTag(exam.isForceSpecialTag());
|
|
|
oldExam.setPassScore(exam.getPassScore());
|
|
|
oldExam.setExcellentScore(exam.getExcellentScore());
|
|
|
+ String sheetConfig = StringEscapeUtils.unescapeHtml(picList);
|
|
|
+ JSONArray array = JSONArray.fromObject(sheetConfig);
|
|
|
+ List<PictureConfigItem> list = JSONArray.toList(array, new PictureConfigItem(), new JsonConfig());
|
|
|
+ oldExam.setSheetConfig(list==null?null:StringUtils.join(list, PictureConfigItem.DB_ITEM_JOINER));
|
|
|
examService.save(oldExam);
|
|
|
}
|
|
|
return "redirect:/admin/exam-list";
|
|
@@ -193,5 +220,34 @@ public class ExamController extends BaseExamController {
|
|
|
exam.setStatus(ExamStatus.FINISH);
|
|
|
examService.save(exam);
|
|
|
}
|
|
|
+
|
|
|
+ @RequestMapping("/exam/getSheetConfig")
|
|
|
+ @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
+ public String get(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
|
+ @RequestParam Integer examId,@RequestParam(required=false) String subjectCode) {
|
|
|
+ Exam exam = examService.findById(examId);
|
|
|
+ ExamSubject subject = examSubjectService.find(examId, subjectCode);
|
|
|
+ ExamStudentSearchQuery query = new ExamStudentSearchQuery();
|
|
|
+ query.setExamId(examId);
|
|
|
+ query.setSubjectCode(subjectCode);
|
|
|
+ query.setUpload(true);
|
|
|
+ List<ExamStudent> examStudents = examStudentService.findByQuery(query).getResult();
|
|
|
+ if (examStudents.size() > 0) {
|
|
|
+ model.addAttribute("picUrls", buildPicUrl(examStudents.get(0)));
|
|
|
+ String sheetConfig = subject!=null? subject.getSheetConfig():exam.getSheetConfig();
|
|
|
+ model.addAttribute("pictureConfig", buildPictureConfig(sheetConfig));
|
|
|
+ model.addAttribute("imageServer", imageServer);
|
|
|
+ return "modules/mark/picConfig";
|
|
|
+ } else {
|
|
|
+ addMessage(redirectAttributes, "参数有误");
|
|
|
+ return "redirect:/admin/exam-list";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ private List<String> buildPicUrl(ExamStudent examStudent) {
|
|
|
+ Campus campus = campusService.findBySchoolAndName(examStudent.getSchoolId(), examStudent.getCampusName());
|
|
|
+ List<String> picUrls = PictureUrlBuilder.getSheetUrls(examStudent.getExamId(), campus.getId(),
|
|
|
+ examStudent.getSubjectCode(), examStudent.getExamNumber(), examStudent.getSheetCount());
|
|
|
+ return picUrls;
|
|
|
+ }
|
|
|
}
|