Bläddra i källkod

按考点统计新增导出

ting.yin 1 år sedan
förälder
incheckning
f78f56701c

+ 38 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScanController.java

@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Controller("scanInfoController")
 @RequestMapping("/admin/exam/scan")
@@ -197,8 +198,9 @@ public class ScanController extends BaseExamController {
     public ModelAndView examSite(HttpServletRequest request, ExamStudentSearchQuery query) {
         int examId = getSessionExamId(request);
         List<ScanInfoVO> list = new LinkedList<ScanInfoVO>();
+        List<String> result = studentService.findDistinctExamSite(examId);
+        result = result.stream().filter(s -> StringUtils.isNotBlank(s)).collect(Collectors.toList());
         if (StringUtils.isBlank(query.getExamSite())) {
-            List<String> result = studentService.findDistinctExamSite(examId);
             List<?> examSiteList = PageUtil.startPage(result, query.getPageNumber(), query.getPageSize());
             for (Object e : examSiteList) {
                 ScanInfoVO vo = new ScanInfoVO();
@@ -226,10 +228,44 @@ public class ScanController extends BaseExamController {
         }
 
         ModelAndView view = new ModelAndView("modules/exam/scanInfo");
-        view.addObject("examSiteList", studentService.findDistinctExamSite(examId));
+        view.addObject("examSiteList", result);
         view.addObject("infoList", list);
         view.addObject("query", query);
         view.addObject("type", "examSite");
         return view;
     }
+
+    @Logging(menu = "扫描进度导出", type = LogType.EXPORT)
+    @RequestMapping(value = "/examSite/export", method = RequestMethod.POST)
+    public String examSiteExport(ExamStudentSearchQuery query, HttpServletRequest request,
+            HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        List<ScanInfoVO> list = new LinkedList<ScanInfoVO>();
+        List<String> result = studentService.findDistinctExamSite(examId);
+        result = result.stream().filter(s -> StringUtils.isNotBlank(s)).collect(Collectors.toList());
+        if (StringUtils.isBlank(query.getExamSite())) {
+            List<?> examSiteList = PageUtil.startPage(result, query.getPageNumber(), query.getPageSize());
+            for (Object e : examSiteList) {
+                ScanInfoVO vo = new ScanInfoVO();
+                String examSite = (String) e;
+                vo.setName(examSite);
+                vo.setTotalCount(studentService.countByExamIdAndExamSite(examId, examSite));
+                vo.setScanCount(studentService.countByExamIdAndExamSite(examId, examSite, true));
+                vo.setScanSheetCount(studentService.countSheetCountByExamIdAndExamSite(examId, examSite) / 2);
+                list.add(vo);
+            }
+            query.setTotalCount(result.size());
+            query.setTotalPage(PageUtil.pageCount(result, query.getPageNumber(), query.getPageSize()));
+            query.setCurrentCount(examSiteList.size());
+        }
+        try {
+            String fileName = "扫描进度.xlsx";
+            new ExportExcel("扫描进度", ScanInfoVO.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            e.printStackTrace();
+            addMessage(redirectAttributes, "导出扫描进度失败!" + e.getMessage());
+            return "redirect:/admin/exam/scan/examSite";
+        }
+    }
 }