Kaynağa Gözat

添加获取学生统计信息接口

lideyin 5 yıl önce
ebeveyn
işleme
40797166ad

+ 0 - 151
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamStatisticsCloudServiceProvider.java

@@ -1,151 +0,0 @@
-package cn.com.qmth.examcloud.core.oe.admin.api.provider;
-
-import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
-import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.core.oe.admin.api.ExamStatisticsCloudService;
-import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamCompletionBean;
-import cn.com.qmth.examcloud.core.oe.admin.api.request.GetExamCompletionStatisticsReq;
-import cn.com.qmth.examcloud.core.oe.admin.api.response.GetExamCompletionStatisticsResp;
-import cn.com.qmth.examcloud.core.oe.common.entity.ExamStudentEntity;
-import cn.com.qmth.examcloud.core.oe.common.repository.ExamStudentRepo;
-import cn.com.qmth.examcloud.web.support.ControllerSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @Description 考试统计类
- * @Author lideyin
- * @Date 2019/9/27 11:32
- * @Version 1.0
- */
-@Api(tags = "考试统计类")
-@RestController
-@RequestMapping("${$rmp.cloud.oe}/examStatistics")
-public class ExamStatisticsCloudServiceProvider extends ControllerSupport implements ExamStatisticsCloudService {
-
-    @Autowired
-    private ExamStudentRepo examStudentRepo;
-
-    @Override
-    @ApiOperation(value = "获取考试完成情况统计信息")
-    @PostMapping("/getExamCompletionStatistics")
-    public GetExamCompletionStatisticsResp getExamCompletionStatistics(@RequestBody GetExamCompletionStatisticsReq req) {
-        if (req.getPageNo()==null){
-            throw new StatusException("100001","当前页码不允许为空");
-        }
-        if (req.getPageSize()==null){
-            throw new StatusException("100002","每页条数不允许为空");
-        }
-        if (req.getRootOrgId()==null){
-            throw new StatusException("100003","学校id不允许为空");
-        }
-        GetExamCompletionStatisticsResp resp = new GetExamCompletionStatisticsResp();
-        PageInfo<ExamCompletionBeanW> examCompletionInfo = null;//TODO 调王伟接口获取
-        PageInfo<ExamCompletionBean> pagedList = getPageInfoFrom(examCompletionInfo);
-        resp.setPagedExamCompletionList(pagedList);
-        List<ExamCompletionBean> list = pagedList.getList();
-        for (ExamCompletionBean b : list) {
-
-            List<ExamStudentEntity> examStudentList = examStudentRepo.findByExamId(b.getExamId());
-            long completeCount = 0;
-            long planCount = 0;
-            long percent = 0;
-            if (examCompletionInfo != null && !examStudentList.isEmpty()) {
-                completeCount = examStudentList.stream().filter(p -> p.getFinished()).count();
-                planCount = examStudentList.size();
-                percent = completeCount * 100 / planCount;
-            }
-
-            b.setPlanNum(planCount);
-            b.setCompleteNum(completeCount);
-            b.setCompletePercent(percent);
-        }
-        return resp;
-    }
-
-    private PageInfo<ExamCompletionBean> getPageInfoFrom(PageInfo<ExamCompletionBeanW> examCompletionInfo) {
-        PageInfo<ExamCompletionBean> resultPageInfo = new PageInfo<>();
-        resultPageInfo.setTotal(examCompletionInfo.getTotal());
-        resultPageInfo.setIndex(examCompletionInfo.getIndex());
-        resultPageInfo.setLimit(examCompletionInfo.getLimit());
-        resultPageInfo.setPages(examCompletionInfo.getPages());
-        resultPageInfo.setSize(examCompletionInfo.getSize());
-        List<ExamCompletionBean> resultList = new ArrayList<>();
-        List<ExamCompletionBeanW> list = examCompletionInfo.getList();
-        if (list != null && !list.isEmpty()) {
-            for (ExamCompletionBeanW ni : list) {
-                ExamCompletionBean bean = new ExamCompletionBean();
-                bean.setExamId(ni.getExamId());
-                bean.setExamName(ni.getExamName());
-                bean.setExamType(ni.getExamType());
-                bean.setStartTime(ni.getStartTime());
-                bean.setEndTime(ni.getEndTime());
-                resultList.add(bean);
-            }
-        }
-        resultPageInfo.setList(resultList);
-        return resultPageInfo;
-    }
-
-    //TODO 临时用一下
-    private class ExamCompletionBeanW {
-        //考试id
-        private Long examId;
-        //考试名称
-        private String examName;
-        //考试类型
-        private String examType;
-        //考试开始时间
-        private String startTime;
-        //考试结束时间
-        private String endTime;
-
-        public Long getExamId() {
-            return examId;
-        }
-
-        public void setExamId(Long examId) {
-            this.examId = examId;
-        }
-
-        public String getExamName() {
-            return examName;
-        }
-
-        public void setExamName(String examName) {
-            this.examName = examName;
-        }
-
-        public String getExamType() {
-            return examType;
-        }
-
-        public void setExamType(String examType) {
-            this.examType = examType;
-        }
-
-        public String getStartTime() {
-            return startTime;
-        }
-
-        public void setStartTime(String startTime) {
-            this.startTime = startTime;
-        }
-
-        public String getEndTime() {
-            return endTime;
-        }
-
-        public void setEndTime(String endTime) {
-            this.endTime = endTime;
-        }
-    }
-}

+ 35 - 8
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamStudentCloudServiceProvider.java

@@ -9,16 +9,11 @@ package cn.com.qmth.examcloud.core.oe.admin.api.provider;
 
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.oe.admin.api.OeExamStudentCloudService;
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamStudentCountBean;
 import cn.com.qmth.examcloud.core.oe.admin.api.bean.FindStudentType;
 import cn.com.qmth.examcloud.core.oe.admin.api.bean.OeExamStudentBean;
-import cn.com.qmth.examcloud.core.oe.admin.api.request.ExamStudentSyncAllDataReq;
-import cn.com.qmth.examcloud.core.oe.admin.api.request.ExamStudentSyncPartDataReq;
-import cn.com.qmth.examcloud.core.oe.admin.api.request.FindExamStudentInfoReq;
-import cn.com.qmth.examcloud.core.oe.admin.api.request.UnbindExamStudentReq;
-import cn.com.qmth.examcloud.core.oe.admin.api.response.ExamStudentSyncAllDataResp;
-import cn.com.qmth.examcloud.core.oe.admin.api.response.ExamStudentSyncPartDataResp;
-import cn.com.qmth.examcloud.core.oe.admin.api.response.FindExamStudentInfoResp;
-import cn.com.qmth.examcloud.core.oe.admin.api.response.UnbindExamStudentResp;
+import cn.com.qmth.examcloud.core.oe.admin.api.request.*;
+import cn.com.qmth.examcloud.core.oe.admin.api.response.*;
 import cn.com.qmth.examcloud.core.oe.common.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.common.repository.ExamStudentRepo;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
@@ -133,6 +128,38 @@ public class ExamStudentCloudServiceProvider extends ControllerSupport implement
         return resp;
     }
 
+    @Override
+    @ApiOperation(value = "根据考试批次等查询条件获取考生数量(一次最多返回100条数据)")
+    @PostMapping("/getExamStudentCount")
+    public GetExamStudentCountResp getExamStudentCount(@RequestBody GetExamStudentCountReq req) {
+        if (req.getExamIdList() == null || req.getExamIdList().size() == 0) {
+            throw new StatusException("100001", "考试id不允许为空");
+        }
+
+        if (req.getExamIdList().size() > 100) {
+            throw new StatusException("100002", "考试id个数不得超过100个");
+        }
+
+        Long count;
+        List<ExamStudentCountBean> countBeanList = new ArrayList<>();
+        for (Long examId : req.getExamIdList()) {
+            if (req.getFinishedExam() == null) {
+                count = examStudentRepo.countByExamId(examId);
+            } else {
+                count = examStudentRepo.countByExamIdAndFinished(examId, req.getFinishedExam());
+            }
+
+            ExamStudentCountBean countBean = new ExamStudentCountBean();
+            countBean.setExamId(examId);
+            countBean.setCount(count == null ? 0 : count);
+            countBeanList.add(countBean);
+        }
+
+        GetExamStudentCountResp resp = new GetExamStudentCountResp();
+        resp.setCountList(countBeanList);
+        return resp;
+    }
+
     private List<OeExamStudentBean> buildExamStudentBeans(List<ExamStudentEntity> examStudents) {
         List<OeExamStudentBean> examStudentBeans = new ArrayList<OeExamStudentBean>();
         for (ExamStudentEntity examStudent : examStudents) {