Browse Source

学校、考试在线人数概况

deason 2 năm trước cách đây
mục cha
commit
75a8b403cc

+ 17 - 12
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/ExamDataController.java

@@ -1,33 +1,38 @@
 package cn.com.qmth.examcloud.core.reports.api.controller;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.core.reports.base.bean.ExamDataBean;
+import cn.com.qmth.examcloud.core.reports.base.bean.OnlineStatisticBean;
 import cn.com.qmth.examcloud.core.reports.service.ExamDataService;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @Api(tags = "考试数据")
-@RequestMapping("${$rmp.ctr.reports}/" + "examData")
+@RequestMapping("${$rmp.ctr.reports}/examData")
 public class ExamDataController extends ControllerSupport {
 
     @Autowired
     private ExamDataService examDataService;
 
-    @GetMapping("page/{pageNo}/{pageSize}")
+    @GetMapping("/page/{pageNo}/{pageSize}")
     @ApiOperation(value = "分页查询考试在线人数及完成情况")
     public PageInfo<ExamDataBean> queryPage(@RequestParam Long rootOrgId,
-            @RequestParam(required = false) String examName,
-            @PathVariable @ApiParam(value = "pageNo = 1,2,3...") Integer pageNo, @PathVariable Integer pageSize) {
+                                            @RequestParam(required = false) String examName,
+                                            @PathVariable @ApiParam(value = "pageNo:1、2、3...") Integer pageNo,
+                                            @PathVariable Integer pageSize) {
         return examDataService.queryPage(rootOrgId, examName, pageNo, pageSize);
     }
-}
+
+    @PostMapping("/online/statistic")
+    @ApiOperation(value = "学校、考试在线人数概况")
+    public OnlineStatisticBean onlineStatistic(@RequestParam Long rootOrgId,
+                                               @RequestParam Long examId) {
+        return examDataService.onlineStatistic(rootOrgId, examId);
+    }
+
+}

+ 43 - 0
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/bean/OnlineStatisticBean.java

@@ -0,0 +1,43 @@
+package cn.com.qmth.examcloud.core.reports.base.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModelProperty;
+
+public class OnlineStatisticBean implements JsonSerializable {
+
+    private static final long serialVersionUID = 3392394929374130898L;
+
+    @ApiModelProperty(value = "全校在线人数")
+    private Integer allOnlineCount;
+
+    @ApiModelProperty(value = "全校在考人数")
+    private Integer allExamOnlineCount;
+
+    @ApiModelProperty(value = "在考人数")
+    private Integer examOnlineCount;
+
+    public Integer getAllOnlineCount() {
+        return allOnlineCount;
+    }
+
+    public void setAllOnlineCount(Integer allOnlineCount) {
+        this.allOnlineCount = allOnlineCount;
+    }
+
+    public Integer getAllExamOnlineCount() {
+        return allExamOnlineCount;
+    }
+
+    public void setAllExamOnlineCount(Integer allExamOnlineCount) {
+        this.allExamOnlineCount = allExamOnlineCount;
+    }
+
+    public Integer getExamOnlineCount() {
+        return examOnlineCount;
+    }
+
+    public void setExamOnlineCount(Integer examOnlineCount) {
+        this.examOnlineCount = examOnlineCount;
+    }
+
+}

+ 4 - 1
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/ExamStudentCountRepo.java

@@ -11,8 +11,10 @@ import cn.com.qmth.examcloud.core.reports.dao.entity.ExamStudentCountEntity;
 
 public interface ExamStudentCountRepo extends JpaRepository<ExamStudentCountEntity, Long>,
 		JpaSpecificationExecutor<ExamStudentCountEntity> {
+	public List<ExamStudentCountEntity> findByRootOrgId(Long rootOrgId);
+
 	public ExamStudentCountEntity findByRootOrgIdAndExamId(Long rootOrgId,Long examId);
-	
+
 	@Modifying
 	@Query(value = "update ec_r_exam_student_count set online_count=0", nativeQuery = true)
 	public void resetAllCount();
@@ -22,4 +24,5 @@ public interface ExamStudentCountRepo extends JpaRepository<ExamStudentCountEnti
 	
 	@Query(value = "select * from ec_r_exam_student_count where exam_id in(?1) and root_org_id=(?2)", nativeQuery = true)
 	public List<ExamStudentCountEntity> getByExamIdsRootOrgId(List<Long> examIds,Long rootOrgId);
+
 }

+ 6 - 2
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/ExamDataService.java

@@ -3,10 +3,14 @@ package cn.com.qmth.examcloud.core.reports.service;
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.core.reports.api.request.SaveExamDataReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.ExamDataBean;
+import cn.com.qmth.examcloud.core.reports.base.bean.OnlineStatisticBean;
 
 public interface ExamDataService {
 
-    public PageInfo<ExamDataBean> queryPage(Long rootOrgId, String examName, Integer pageNo, Integer pageSize);
+    PageInfo<ExamDataBean> queryPage(Long rootOrgId, String examName, Integer pageNo, Integer pageSize);
+
+    void save(SaveExamDataReq req);
+
+    OnlineStatisticBean onlineStatistic(Long rootOrgId, Long examId);
 
-    public void save(SaveExamDataReq req);
 }

+ 48 - 20
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/ExamDataServiceImpl.java

@@ -1,34 +1,29 @@
 package cn.com.qmth.examcloud.core.reports.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import javax.persistence.criteria.Predicate;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.google.common.collect.Lists;
-
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.reports.api.request.SaveExamDataReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.ExamDataBean;
+import cn.com.qmth.examcloud.core.reports.base.bean.OnlineStatisticBean;
 import cn.com.qmth.examcloud.core.reports.dao.ExamDataRepo;
 import cn.com.qmth.examcloud.core.reports.dao.ExamStudentCountRepo;
+import cn.com.qmth.examcloud.core.reports.dao.StudentCountRepo;
 import cn.com.qmth.examcloud.core.reports.dao.entity.ExamDataEntity;
 import cn.com.qmth.examcloud.core.reports.dao.entity.ExamStudentCountEntity;
+import cn.com.qmth.examcloud.core.reports.dao.entity.StudentCountEntity;
 import cn.com.qmth.examcloud.core.reports.service.ExamDataService;
+import com.google.common.collect.Lists;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.criteria.Predicate;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ExamDataServiceImpl implements ExamDataService {
@@ -36,6 +31,9 @@ public class ExamDataServiceImpl implements ExamDataService {
     @Autowired
     private ExamDataRepo examDataRepo;
 
+    @Autowired
+    private StudentCountRepo studentCountRepo;
+
     @Autowired
     private ExamStudentCountRepo examStudentCountRepo;
 
@@ -186,4 +184,34 @@ public class ExamDataServiceImpl implements ExamDataService {
             return column;
         }
     }
+
+    @Override
+    public OnlineStatisticBean onlineStatistic(Long rootOrgId, Long examId) {
+        // 在线人数
+        int allOnlineCount = 0;
+        StudentCountEntity onlineCount = studentCountRepo.findByRootOrgId(rootOrgId);
+        if (onlineCount != null) {
+            allOnlineCount = onlineCount.getOnlineCount();
+        }
+
+        // 在考人数
+        int allExamOnlineCount = 0;
+        int examOnlineCount = 0;
+        List<ExamStudentCountEntity> examOnlineCounts = examStudentCountRepo.findByRootOrgId(rootOrgId);
+        if (CollectionUtils.isNotEmpty(examOnlineCounts)) {
+            for (ExamStudentCountEntity x : examOnlineCounts) {
+                if (x.getExamId().equals(examId)) {
+                    examOnlineCount = x.getOnlineCount();
+                }
+                allExamOnlineCount += x.getOnlineCount();
+            }
+        }
+
+        OnlineStatisticBean result = new OnlineStatisticBean();
+        result.setAllOnlineCount(allOnlineCount);
+        result.setAllExamOnlineCount(allExamOnlineCount);
+        result.setExamOnlineCount(examOnlineCount);
+        return result;
+    }
+
 }