YuanPan 7 年之前
父節點
當前提交
4219b75078

+ 46 - 0
exam-work-api/src/main/java/cn/com/qmth/examcloud/service/examwork/api/ExamStudentApi.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -282,4 +283,49 @@ public class ExamStudentApi {
 
         return result;
     }
+
+    @ApiOperation(value = "按学习中心统计完成数量", notes = "按学习中心统计完成数量")
+    @GetMapping("/count-by-campus")
+    public List<Map<String, Object>> countByCampus(@RequestParam Long examId) {
+
+        List<Object[]> resultList = examStudentRepo.countByCampusAndFinished(examId);
+        List<Map<String, Object>> returnList = new ArrayList<>();
+        for (Object[] objects : resultList) {
+            Long orgId = ((BigInteger) objects[0]).longValue();
+            Boolean finished = (Boolean) objects[1];
+            Integer count = (Integer) objects[2];
+
+
+            boolean found = false;
+            for (Map<String, Object> m : returnList) {
+                if (m.get("orgId").equals(orgId)) {
+                    found = true;
+
+                    if (finished) {
+                        m.put("finished", count);
+                    } else {
+                        m.put("unFinished", count);
+                    }
+
+                    break;
+                }
+            }
+            if (!found) {
+                Map<String, Object> map = new HashMap<>();
+
+                map.put("orgId", orgId);
+                if (finished) {
+                    map.put("finished", count);
+                } else {
+                    map.put("unFinished", count);
+                }
+
+                returnList.add(map);
+            }
+
+        }
+
+        return returnList;
+
+    }
 }

+ 3 - 0
exam-work-domain/src/main/java/cn/com/qmth/examcloud/service/examwork/dao/ExamStudentRepo.java

@@ -61,4 +61,7 @@ public interface ExamStudentRepo extends JpaRepository<ExamStudent, Long>, Query
     void deleteByExamId(Long examId);
 
     int countByExamIdAndFinished(Long examId, Boolean finished);
+
+    @Query(nativeQuery = true,value = "select org_id,finished, count(id) from ecs_exam_student  where exam_id = :examId group by org_id,finished")
+    List<Object[]> countByCampusAndFinished(@Param("examId") Long examId);
 }