1
0
ting.yin 4 лет назад
Родитель
Сommit
946209aabb

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java

@@ -95,4 +95,8 @@ public interface ExamQuestionDao extends JpaRepository<ExamQuestion, Integer>, J
     public void resetByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(Integer examId, String subjectCode,
             boolean objective, Integer number);
 
+    @Query("select count(q) from ExamQuestion q where q.examId=?1 and q.subjectCode=?2 and q.objective=?3 and q.groupNumber is null ")
+    public long countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(int examId, String subjectCode,
+            boolean objective);
+
 }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkLibrary.java

@@ -235,6 +235,9 @@ public class MarkLibrary implements Serializable {
                         }
                     }
                 }
+                if (scoreList.endsWith(",")) {
+                    list.add(new ScoreItem(false));
+                }
             } catch (Exception e) {
             }
         }

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

@@ -224,9 +224,12 @@ public class MarkServiceImpl implements MarkService {
         // 删除分组
         releaseByGroup(group);
         groupDao.delete(group);
+        // 未分组的题目
+        long unGroupQuestionCount = questionDao.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
+                group.getExamId(), group.getSubjectCode(), false);
         // 考生整体状态与总分更新
         long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
-        if (groupCount == 0) {
+        if (groupCount == 0 || unGroupQuestionCount >= 0) {
             studentService.updateSubjectiveStatusAndScoreAndInspectorId(group.getExamId(), group.getSubjectCode(),
                     SubjectiveStatus.UNMARK, 0, null, null, null);
         } else {

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java

@@ -308,7 +308,7 @@ public class ArbitrateController extends BaseExamController {
 
                 history.setUserId(wu.getUser().getId());
                 history.setTotalScore(markResult.getMarkerScore());
-                // history.setScoreList(task.getScoreList());
+                history.setScoreList(markResult.getScoreList());
                 history.setStatus(HistoryStatus.MARKED);
                 history.setUpdateTime(new Date());
                 markService.processArbitrate(history);

+ 2 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -295,7 +295,6 @@ public class LibraryController extends BaseExamController {
             @RequestParam Integer groupNumber, @RequestParam(required = false) Integer libraryId) {
         WebUser wu = RequestUtils.getWebUser(request);
         JSONObject obj = new JSONObject();
-        obj.accumulate("success", false);
         if (libraryId != null) {
             releaseLibrary(libraryId);
             obj.accumulate("success", true);
@@ -315,8 +314,8 @@ public class LibraryController extends BaseExamController {
         int examId = getSessionExamId(request);
         MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
         query.setExamId(examId);
-        query.setSubjectCode(query.getSubjectCode());
-        query.setGroupNumber(query.getGroupNumber());
+        query.setSubjectCode(subjectCode);
+        query.setGroupNumber(groupNumber);
         query.addStatus(LibraryStatus.MARKED);
         long inspectedCount = libraryService.countByQuery(query);
         status.accumulate("totalCount", inspectedCount);

+ 39 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -4,10 +4,12 @@ import cn.com.qmth.stmms.api.exception.ApiException;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 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.ExamStudentSearchQuery;
 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.file.service.FileService;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
@@ -55,11 +57,15 @@ public class CoreController extends BaseApiController {
     @Autowired
     private FileService fileService;
 
+    @Autowired
+    private ExamSubjectService subjectService;
+
     @RequestMapping(value = "/exam/save", method = RequestMethod.POST)
     @ResponseBody
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV })
     public JSONObject examSave(HttpServletRequest request, @RequestParam(required = false) Integer id,
-            @RequestParam(required = false) String code, @RequestParam String name, @RequestParam String examTime) {
+            @RequestParam(required = false) String code, @RequestParam String name, @RequestParam String examTime,
+            @RequestParam String type) {
         ApiUser user = RequestUtils.getApiUser(request);
         JSONObject result = new JSONObject();
         // 输入字段预处理并初步校验
@@ -92,6 +98,7 @@ public class CoreController extends BaseApiController {
             current.setForbiddenInfo(false);
             current.setObjectiveStatus(ObjectiveStatus.WAITING);
             current.setCreateTime(new Date());
+            current.setType(ExamType.valueOf(type));
         } else if (!current.getSchoolId().equals(user.getSchoolId()) || current.getStatus() != ExamStatus.START) {
             throw ApiException.EXAM_NOT_ACCESSIBLED;
         }
@@ -407,4 +414,35 @@ public class CoreController extends BaseApiController {
         result.accumulate("totalCount", count);
         return result;
     }
+
+    @RequestMapping(value = "/exam/subject/save", method = RequestMethod.POST)
+    @ResponseBody
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV })
+    public JSONObject subjectSave(HttpServletRequest request, @RequestParam Integer examId, @RequestParam String code,
+            @RequestParam String name, @RequestParam(required = false) String remark) {
+        ApiUser user = RequestUtils.getApiUser(request);
+        JSONObject result = new JSONObject();
+        // 输入字段预处理并初步校验
+        code = validate("code", code, true, 32);
+        name = validate("name", name, true, 32);
+        remark = validate("remark", remark, false, 64);
+        Exam exam = examService.findById(examId);
+        if (exam == null) {
+            throw ApiException.QUERY_PARAM_ERROR.replaceMessage("examId invalid");
+        } else if (!exam.getSchoolId().equals(user.getSchoolId()) || exam.getStatus() != ExamStatus.START) {
+            throw ApiException.EXAM_NOT_ACCESSIBLED;
+        }
+        ExamSubject subject = subjectService.find(examId, code);
+        if (subject == null) {
+            subject = new ExamSubject();
+            subject.setCode(code);
+            subject.setExamId(examId);
+        }
+        subject.setName(name);
+        subject.setRemark(remark);
+        subject = subjectService.save(subject);
+        result.accumulate("updateTime", DateUtils.formatDateTime(new Date()));
+        return result;
+    }
+
 }

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

@@ -67,7 +67,7 @@
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
         <c:if test="${examType!='MULTI_MEDIA'}">
-            <a target="_blank" href="${ctx}/admin/exam/library/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}" class="btn">待复核:${inspectedCount }</a>
+            <a target="_blank" href="${ctx}/web/admin/exam/library/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}" class="btn">待复核:${inspectedCount }</a>
         </c:if>
     </div>
 </form>