Browse Source

Merge branch 'stmms_ft_dev' of http://git.qmth.com.cn/luoshi/stmms-ft into stmms_ft_dev

luoshi 6 years ago
parent
commit
cd27d82cc2

+ 12 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -60,6 +60,18 @@ public interface ExamStudentDao
     @Modifying
     @Query("update ExamStudent s set s.exception=?2 where s.id=?1")
     public void updateException(int id, boolean exception);
+    
+    @Modifying
+    @Query("update ExamStudent s set s.manualAbsent=?2 where s.id=?1")
+    public void updateManualAbsent(int id, boolean manualAbsent);
+
+    @Modifying
+    @Query("update ExamStudent s set s.manualAbsent=?3 where s.examId=?1 and s.examNumber=?2")
+    public void updateManualAbsent(int examId, String examNumber, boolean manualAbsent);
+
+    @Modifying
+    @Query("update ExamStudent s set s.manualAbsent=0 where s.examId=?1")
+    public void clearManualAbsent(int examId);
 
     @Modifying
     @Query("delete from ExamStudent s where s.examId=?1")

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java

@@ -47,6 +47,8 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
     private Boolean upload;
 
     private Boolean absent;
+    
+    private Boolean manualAbsent;
 
     private Boolean exception;
 
@@ -344,4 +346,12 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
 		this.breach = breach;
 	}
 
+	public Boolean getManualAbsent() {
+		return manualAbsent;
+	}
+
+	public void setManualAbsent(Boolean manualAbsent) {
+		this.manualAbsent = manualAbsent;
+	}
+
 }

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -59,6 +59,12 @@ public interface ExamStudentService {
     void updateSubjectInfo(ExamSubject subject);
 
     void updateSubjectiveScore(int id, double score, String scoreList);
+    
+    void updateManualAbsent(int id, boolean manualAbsent);
+
+    void updateManualAbsent(int examId, String examNumber, boolean manualAbsent);
+    
+    void clearManualAbsent(int examId);
 
     void updateException(int id, boolean exception);
 
@@ -98,4 +104,5 @@ public interface ExamStudentService {
     List<ExamStudent> findByExamId(int examId,int pageNumber,int pageSize);
 
     List<Object[]> statisticsByAbsentAndBreach(Integer examId, String code, Boolean upload,boolean absent,boolean breach);
+
 }

+ 18 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -338,6 +338,24 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public List<String> findDistinctPackageCode(int examId) {
         return studentDao.findDistinctPackageCode(examId);
     }
+    
+    @Override
+    @Transactional
+    public void updateManualAbsent(int id, boolean manualAbsent) {
+        studentDao.updateManualAbsent(id, manualAbsent);
+    }
+
+    @Override
+    @Transactional
+    public void updateManualAbsent(int examId, String examNumber, boolean manualAbsent) {
+        studentDao.updateManualAbsent(examId, examNumber, manualAbsent);
+    }
+    
+    @Override
+    @Transactional
+    public void clearManualAbsent(int examId) {
+        studentDao.clearManualAbsent(examId);
+    }
 
     @Override
     @Transactional

+ 33 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ExamStudentController.java

@@ -22,7 +22,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import cn.com.qmth.stmms.api.utils.AESUtil;
+import cn.com.qmth.stmms.api.utils.MenualAbsentDTO;
 import cn.com.qmth.stmms.biz.api.auth.annotation.AuthValidate;
+import cn.com.qmth.stmms.biz.api.auth.exception.ApiException;
 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;
@@ -59,6 +61,37 @@ public class ExamStudentController extends BaseApiController {
     
     @Autowired
     private ExamQuestionService questionService;
+    
+    @AuthValidate("adminUser")
+    @RequestMapping(value = "/student/manualAbsent/{examId}", method = RequestMethod.POST)
+    @ResponseBody
+    public Object updateManualAbsent(HttpServletRequest request, @PathVariable Integer examId,
+            @RequestBody MenualAbsentDTO[] datas) {
+        User user = RequestUtils.getApiUser(request);
+        Exam exam = examService.findById(examId);
+        if (exam != null && exam.getSchoolId().equals(user.getSchoolId())) {
+            for (MenualAbsentDTO dto : datas) {
+                examStudentService.updateManualAbsent(examId, dto.getExamNumber(), dto.isAbsent());
+            }
+            return true;
+        } else {
+            throw ApiException.EXAM_NOT_ACCESSIBLED;
+        }
+    }
+
+    @AuthValidate("adminUser")
+    @RequestMapping(value = "/student/manualAbsent/clear", method = RequestMethod.POST)
+    @ResponseBody
+    public Object clearManualAbsent(HttpServletRequest request, @RequestParam Integer examId) {
+        User user = RequestUtils.getApiUser(request);
+        Exam exam = examService.findById(examId);
+        if (exam != null && exam.getSchoolId().equals(user.getSchoolId())) {
+            examStudentService.clearManualAbsent(examId);
+            return true;
+        } else {
+            throw ApiException.EXAM_NOT_ACCESSIBLED;
+        }
+    }
 
     @AuthValidate({ "adminUser", "scanner" })
     @RequestMapping(value = "/exam/students/{examId}", method = RequestMethod.GET)

+ 24 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/utils/MenualAbsentDTO.java

@@ -0,0 +1,24 @@
+package cn.com.qmth.stmms.api.utils;
+
+public class MenualAbsentDTO {
+
+    private String examNumber;
+
+    private boolean absent;
+
+    public boolean isAbsent() {
+        return absent;
+    }
+
+    public void setAbsent(boolean absent) {
+        this.absent = absent;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+}

+ 3 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp

@@ -123,6 +123,9 @@
 				<c:if test="${student.upload==true}">
 				<a class="sheet-link" href="##" data-sheet-url="${student.sheetUrlString}" data-answer-url="<c:if test="${student.answerUrl!=null}">${cardServer}${student.answerUrl}</c:if>" data-title="${student.examNumber}&nbsp;&nbsp;${student.name}&nbsp;&nbsp;客观总分${student.objectiveScoreString}&nbsp;&nbsp;主观总分${student.subjectiveScoreString}&nbsp;&nbsp;全卷总分${student.totalScoreString}">已上传</a>
 				&nbsp;
+				<c:if test="${student.manualAbsent==true}">
+				人工指定
+				</c:if>
 				<c:if test="${student.absent==true}">
 				缺考
 				</c:if>