浏览代码

paperType改为不做处理;分离libraryCount和markedCount;修复subject的uploadCount更新

ting.yin 6 年之前
父节点
当前提交
e4a1affec7

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

@@ -125,7 +125,7 @@ public interface ExamStudentDao
     public List<ExamStudent> findUnTrialStudent(Integer examId, String subjectCode, Integer groupNumber, Pageable page);
 
     @Query("select s from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and (s.absent=true or s.breach=true) and "
-            + "exists (select l.id from MarkLibrary l where l.studentId=s.id)")
+            + " (exists (select l.id from MarkLibrary l where l.studentId=s.id) or exists (select t.id from TrialLibrary t where t.studentId=s.id)) ")
     public List<ExamStudent> findAbsentOrBreachLibraryStudent(Integer examId, String subjectCode);
 
     @Query("select sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 49.9 then 1 else 0 end),"

+ 21 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -760,18 +760,31 @@ public class MarkServiceImpl implements MarkService {
     @Transactional
     public void updateLibraryCount(MarkGroup group) {
         if (group.getStatus() == MarkStatus.FORMAL) {
-            groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
-                    (int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
-                            group.getSubjectCode(), group.getNumber()));
             groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
             		(int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndStatus(group.getExamId(),
                             group.getSubjectCode(), group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED));
+        } else if (group.getStatus() == MarkStatus.TRIAL) {
+            groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
+                     (int) trialLibraryDao.countMarked(group.getExamId(), group.getSubjectCode(), group.getNumber()));
+        }
+    }
+    
+    /**
+     * 更新某个大题评卷任务数量
+     * 
+     * @param group
+     */
+    @Override
+    @Transactional
+    public void updateTotalCount(MarkGroup group) {
+        if (group.getStatus() == MarkStatus.FORMAL) {
+            groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
+                    (int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
+                            group.getSubjectCode(), group.getNumber()));
         } else if (group.getStatus() == MarkStatus.TRIAL) {
             groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
                     (int) trialLibraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
                             group.getSubjectCode(), group.getNumber()));
-            groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
-                     (int) trialLibraryDao.countMarked(group.getExamId(), group.getSubjectCode(), group.getNumber()));
         }
     }
 
@@ -788,6 +801,7 @@ public class MarkServiceImpl implements MarkService {
         List<MarkGroup> groups = groupDao.findByExamIdAndSubjectCode(examId, subjectCode);
         for (MarkGroup group : groups) {
             updateLibraryCount(group);
+            updateTotalCount(group);
         }
     }
 
@@ -833,7 +847,7 @@ public class MarkServiceImpl implements MarkService {
         }
         group.setBuildTime(student.getUploadTime());
         groupDao.updateBuildTime(group.getExamId(), group.getSubjectCode(), group.getNumber(), student.getUploadTime());
-        updateLibraryCount(group);
+        updateTotalCount(group);
     }
 
     /**
@@ -860,7 +874,7 @@ public class MarkServiceImpl implements MarkService {
             library.setStudentId(student.getId());
             library.setExamNumber(student.getExamNumber());
             trialLibraryDao.save(library);
-            updateLibraryCount(group);
+            updateTotalCount(group);
         }
     }
 

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java

@@ -145,6 +145,13 @@ public interface MarkService {
      * @param group
      */
     void updateLibraryCount(MarkGroup group);
+    
+    /**
+     * 更新某个大题评卷任务总数量
+     * 
+     * @param group
+     */
+    void updateTotalCount(MarkGroup group);
 
     /**
      * 更新某个大题评卷任务数量

+ 1 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ObjectiveQuestionDTO.java

@@ -50,9 +50,7 @@ public class ObjectiveQuestionDTO implements QuestionDTO {
     public ExamQuestion transform() {
         ExamQuestion question = new ExamQuestion();
         question.setSubjectCode(StringUtils.trimToNull(subjectCode));
-        if(StringUtils.trimToNull(paperType)!=null){
-        	question.setPaperType(StringUtils.trimToNull(paperType).toUpperCase());
-        }
+        question.setPaperType(StringUtils.trimToNull(paperType));
         question.setMainNumber(mainNumber);
         question.setSubNumber(subNumber);
         question.setObjective(true);

+ 0 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/AnswerCheckController.java

@@ -11,7 +11,6 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -97,7 +96,6 @@ public class AnswerCheckController extends BaseExamController {
 
     @RequestMapping("/save")
     @ResponseBody
-    @Transactional
     public Object save(HttpServletRequest request, @RequestParam Integer studentId, @RequestParam String answers,
             @RequestParam(required = false) Boolean absent) {
         ExamStudent student = studentService.findById(studentId);

+ 4 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java

@@ -2,12 +2,14 @@ package cn.com.qmth.stmms.api.controller;
 
 import javax.servlet.http.HttpServletRequest;
 
+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.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,8 +26,6 @@ import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 
 @Controller
 @RequestMapping("/api/scan")
@@ -51,7 +51,6 @@ public class ScanController extends BaseApiController {
     @AuthValidate({ "adminUser", "scanner" })
     @RequestMapping(value = "/student/{examId}", method = RequestMethod.POST)
     @ResponseBody
-    @Transactional
     public JSONArray saveStudent(HttpServletRequest request, @PathVariable Integer examId,
             @RequestBody ScanStudentParameter[] scStudentParameter) {
         User user = RequestUtils.getApiUser(request);
@@ -71,9 +70,7 @@ public class ScanController extends BaseApiController {
                     student.setBatchCode(sc.getBatchCode());
                     student.setSliceCount(sc.getSliceCount());
                     student.setSheetCount(sc.getSheetCount());
-                    if(StringUtils.trimToNull(sc.getPaperType())!=null){
-                    	student.setPaperType(StringUtils.trimToNull(sc.getPaperType()).toUpperCase());
-                    }
+                    student.setPaperType(StringUtils.trimToNull(sc.getPaperType()));
                     // 同步更新评卷任务
                     if (saveUploadStudent(student)) {
                         JSONObject obj = new JSONObject();

+ 4 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/BaseController.java

@@ -155,8 +155,10 @@ public class BaseController {
     protected boolean saveUploadStudent(ExamStudent student) {
         calculateObjectiveScore(student);
         boolean success = studentService.updateScanInfo(student);
-        subjectService.updateUploadCount(student.getExamId(), student.getSubjectCode(), (int) studentService
-                .countUploadedByExamIdAndSubjectCode(student.getExamId(), student.getSubjectCode()));
+        if(success){
+        	subjectService.updateUploadCount(student.getExamId(), student.getSubjectCode(), (int) studentService
+        			.countUploadedByExamIdAndSubjectCode(student.getExamId(), student.getSubjectCode()));
+        }
         return success;
     }
 

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentForm.jsp

@@ -45,7 +45,7 @@
 		<div class="control-group">
 			<label class="control-label">准考证号</label>
 			<div class="controls">
-				<input path="examNumber" htmlEscape="false" maxlength="200" class="required" <c:if test="${student.upload }">readonly="readonly"</c:if> value="${student.examNumber }"/>
+				<input name="examNumber" htmlEscape="false" maxlength="200" class="required" <c:if test="${student.upload }">readonly="readonly"</c:if> value="${student.examNumber }"/>
 			</div>
 		</div>
 		<div class="control-group">