浏览代码

新增第三方接口查询考生数量;修复一些问题

ting.yin 4 年之前
父节点
当前提交
b5c9bb3cf5

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

@@ -74,6 +74,7 @@ public interface MarkerDao extends PagingAndSortingRepository<Marker, Integer>,
     @Query("select count(m) from Marker m where m.userId=?1")
     public long countByUserId(Integer userId);
 
-    public List<Marker> findByExamIdAndSubjectCodeAndUserId(Integer examId, String subjectCode, Integer userId);
+    public List<Marker> findByExamIdAndSubjectCodeAndUserIdAndEnable(Integer examId, String subjectCode,
+            Integer userId, boolean enable);
 
 }

+ 2 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java

@@ -41,5 +41,6 @@ public interface MarkerService {
 
     void save(MarkGroup group, Integer[] userIds);
 
-    List<Marker> findByExamAndSubjectAndUserId(Integer examId, String subjectCode, Integer userId);
+    List<Marker> findByExamAndSubjectAndUserIdAndEnable(Integer examId, String subjectCode, Integer userId,
+            boolean enable);
 }

+ 3 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java

@@ -196,7 +196,8 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
     }
 
     @Override
-    public List<Marker> findByExamAndSubjectAndUserId(Integer examId, String subjectCode, Integer userId) {
-        return markerDao.findByExamIdAndSubjectCodeAndUserId(examId, subjectCode, userId);
+    public List<Marker> findByExamAndSubjectAndUserIdAndEnable(Integer examId, String subjectCode, Integer userId,
+            boolean enable) {
+        return markerDao.findByExamIdAndSubjectCodeAndUserIdAndEnable(examId, subjectCode, userId, enable);
     }
 }

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

@@ -21,6 +21,7 @@ import cn.com.qmth.stmms.common.utils.RequestUtils;
 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;
@@ -84,7 +85,7 @@ public class TrialController extends BaseExamController {
             return "redirect:/admin/exam/mark";
         }
         query.setExamId(examId);
-        if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
+        if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
         }
         List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),

+ 36 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -363,4 +363,40 @@ public class CoreController extends BaseApiController {
         }
         return 1;
     }
+
+    @RequestMapping(value = "/exam/student/count", method = RequestMethod.POST)
+    @ResponseBody
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV })
+    public JSONObject examStudentCount(HttpServletRequest request, @RequestParam(required = false) Integer examId,
+            @RequestParam(required = false) String examCode, @RequestParam(required = false) String examNumber,
+            @RequestParam(required = false) String studentCode, @RequestParam(required = false) String subjectCode,
+            @RequestParam(required = false) String college, @RequestParam(required = false) String className,
+            @RequestParam(required = false) String teacher) {
+        ApiUser user = RequestUtils.getApiUser(request);
+        if (examId == null && examCode == null) {
+            throw ApiException.QUERY_PARAM_ERROR.replaceMessage("examId or examCode is required");
+        }
+        Exam exam = examService.findById(examId);
+        if (exam == null) {
+            exam = examService.findBySchoolAndCode(user.getSchoolId(), examCode);
+        }
+        if (exam == null) {
+            throw ApiException.QUERY_PARAM_ERROR.replaceMessage("exam unexists");
+        }
+        if (!exam.getSchoolId().equals(user.getSchoolId())) {
+            throw ApiException.EXAM_NOT_ACCESSIBLED;
+        }
+        ExamStudentSearchQuery query = new ExamStudentSearchQuery();
+        query.setExamId(exam.getId());
+        query.setExamNumber(StringUtils.trimToNull(examNumber));
+        query.setStudentCode(StringUtils.trimToNull(studentCode));
+        query.setSubjectCode(StringUtils.trimToNull(subjectCode));
+        query.setCollege(StringUtils.trimToNull(college));
+        query.setClassName(StringUtils.trimToNull(className));
+        query.setTeacher(StringUtils.trimToNull(teacher));
+        long count = studentService.countByQuery(query);
+        JSONObject result = new JSONObject();
+        result.accumulate("totalCount", count);
+        return result;
+    }
 }

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

@@ -63,8 +63,8 @@ public class ExamStudentController extends BaseApiController {
     @ResponseBody
     public JSONObject checkStudent(HttpServletRequest request, @RequestBody ExamStudent examStudent) {
         JSONObject obj = new JSONObject();
-        ExamStudent student = studentService
-                .findByExamIdAndExamNumber(examStudent.getExamId(), examStudent.getExamNumber());
+        ExamStudent student = studentService.findByExamIdAndExamNumber(examStudent.getExamId(),
+                examStudent.getExamNumber());
         if (student != null) {
             obj.accumulate("examId", examStudent.getExamId());
             obj.accumulate("campusCode", "0");
@@ -88,7 +88,7 @@ public class ExamStudentController extends BaseApiController {
     }
 
     @RoleRequire({ Role.SCHOOL_ADMIN })
-    @RequestMapping("/exam/student/count")
+    @RequestMapping("/exam/students/count")
     @ResponseBody
     public long getStudentCount(HttpServletRequest request, ExamStudentSearchQuery query) {
         ApiUser user = RequestUtils.getApiUser(request);
@@ -104,8 +104,7 @@ public class ExamStudentController extends BaseApiController {
     @ResponseBody
     public JSONArray getStudent(HttpServletRequest request, ExamStudentSearchQuery query,
             @RequestParam(required = false) Boolean withScoreDetail,
-            @RequestParam(required = false) Boolean withMarkTrack,
-            @RequestParam(required = false) Boolean withSheetUrl) {
+            @RequestParam(required = false) Boolean withMarkTrack, @RequestParam(required = false) Boolean withSheetUrl) {
         ApiUser user = RequestUtils.getApiUser(request);
         JSONArray array = new JSONArray();
         if (query.getExamId() == null) {
@@ -153,9 +152,8 @@ public class ExamStudentController extends BaseApiController {
                         // 构造客观题得分明细
                         JSONArray objective = new JSONArray();
                         List<ScoreItem> scoreList = student.getScoreList(true);
-                        List<ExamQuestion> questionList = questionService
-                                .findByExamAndSubjectAndObjectiveAndPaperType(student.getExamId(),
-                                        student.getSubjectCode(), true, student.getPaperType());
+                        List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndPaperType(
+                                student.getExamId(), student.getSubjectCode(), true, student.getPaperType());
                         int i = 0;
                         for (ScoreItem item : scoreList) {
                             i++;
@@ -178,8 +176,8 @@ public class ExamStudentController extends BaseApiController {
                         // 构造主观题得分明细
                         JSONArray subjective = new JSONArray();
                         scoreList = student.getScoreList(false);
-                        questionList = questionService
-                                .findByExamAndSubjectAndObjective(student.getExamId(), student.getSubjectCode(), false);
+                        questionList = questionService.findByExamAndSubjectAndObjective(student.getExamId(),
+                                student.getSubjectCode(), false);
                         i = 0;
                         for (ScoreItem item : scoreList) {
                             i++;
@@ -206,10 +204,13 @@ public class ExamStudentController extends BaseApiController {
                     }
                     // 返回原图下载地址
                     if (withSheetUrl != null && withSheetUrl.booleanValue()) {
-                        obj.accumulate("sheetUrls", fileService
-                                .getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount())
-                                .stream().map(uri -> fileService.getFileServer().concat(uri))
-                                .collect(Collectors.toList()));
+                        obj.accumulate(
+                                "sheetUrls",
+                                fileService
+                                        .getSheetUris(student.getExamId(), student.getExamNumber(), 1,
+                                                student.getSheetCount()).stream()
+                                        .map(uri -> fileService.getFileServer().concat(uri))
+                                        .collect(Collectors.toList()));
                     }
                     array.add(obj);
                 } catch (Exception e) {
@@ -261,9 +262,8 @@ public class ExamStudentController extends BaseApiController {
             if (Strings.isNullOrEmpty(examSeqCode)) {
                 student = studentService.findBySchoolIdAndSubjectCodeAndStudentCode(schoolId, subjectCode, studentCode);
             } else {
-                student = studentService
-                        .findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode, studentCode,
-                                examSeqCode);
+                student = studentService.findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode,
+                        studentCode, examSeqCode);
             }
             if (student != null) {
                 DecimalFormat df = new DecimalFormat("####.###");

+ 2 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -271,8 +271,8 @@ public class MarkController extends BaseController {
         releaseMarker(marker);
 
         List<ProblemType> problemTypes = problemTypeService.findByExamId(marker.getExamId());
-        List<Marker> markers = markerService.findByExamAndSubjectAndUserId(marker.getExamId(), marker.getSubjectCode(),
-                marker.getUserId());
+        List<Marker> markers = markerService.findByExamAndSubjectAndUserIdAndEnable(marker.getExamId(),
+                marker.getSubjectCode(), marker.getUserId(), true);
         markers.remove(marker);
         for (Marker m : markers) {
             m.setMarkSetting(null);