Bläddra i källkod

监考已审列表导出

deason 11 månader sedan
förälder
incheckning
787800fd0f

+ 1 - 2
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamRecordAlreadyAuditService.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.examcloud.core.oe.admin.service;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
-import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditExcel;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditQuery;
 import org.springframework.data.domain.Page;
@@ -18,6 +17,6 @@ public interface ExamRecordAlreadyAuditService {
     /**
      * 查询“监考已审”列表(导出Excel)
      */
-    List<ExamAuditExcel> getExamRecordAlreadyAuditListForExport(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule);
+    List<ExamAuditInfo> getExamRecordAlreadyAuditListForExport(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule);
 
 }

+ 7 - 15
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/AsyncExportServiceImpl.java

@@ -1,8 +1,3 @@
-/*
- * Copyright (c) 2020 QMTH All Rights Reserved.
- * Created by Deason on 2020-08-12 16:19:32
- */
-
 package cn.com.qmth.examcloud.core.oe.admin.service.impl;
 
 import java.io.File;
@@ -14,6 +9,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.UUID;
 
+import cn.com.qmth.examcloud.core.oe.admin.service.*;
 import cn.com.qmth.examcloud.support.fss.FssFactory;
 import cn.com.qmth.examcloud.support.fss.model.FssFileInfo;
 import org.apache.commons.collections.CollectionUtils;
@@ -40,12 +36,6 @@ import cn.com.qmth.examcloud.core.oe.admin.base.utils.RoleUtil;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExportTaskEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExportTaskStatus;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExportTaskType;
-import cn.com.qmth.examcloud.core.oe.admin.service.AsyncExportService;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExamAuditService;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordService;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExamScoreService;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExamStudentService;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExportTaskService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.UserDataRules;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditQuery;
@@ -91,7 +81,7 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 	private ExamStudentService examStudentService;
 
 	@Autowired
-	private ExamAuditService examAuditService;
+	private ExamRecordAlreadyAuditService examRecordAlreadyAuditService;
 
 	@Autowired
 	private UserCloudService userCloudService;
@@ -360,15 +350,17 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 		List<ExamAuditInfo> auditInfos;
 		try {
 			ExportTaskEntity task = exportTaskService.findById(taskId);
-			UserDataRules uds = new UserDataRules(getUserDataRule(task.getCreator(), DataRuleType.ORG),
-					getUserDataRule(task.getCreator(), DataRuleType.COURSE));
 			req.setTaskId(taskId);
-			auditInfos = examAuditService.getExamAudit(uds, req);
 
+			UserDataRule courseRule = this.getUserDataRule(task.getCreator(), DataRuleType.COURSE);
+			UserDataRule orgRule = this.getUserDataRule(task.getCreator(), DataRuleType.ORG);
+
+			auditInfos = examRecordAlreadyAuditService.getExamRecordAlreadyAuditListForExport(req, courseRule, orgRule);
 			if (CollectionUtils.isEmpty(auditInfos)) {
 				exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.ERROR, "当前条件暂无数据,任务终止");
 				return;
 			}
+
 			for (ExamAuditInfo examAuditInfo : auditInfos) {
 				examAuditInfo.setIdentityNumber(
 						IdentityNumberHelper.conceal(req.getRootOrgId(), examAuditInfo.getIdentityNumber()));

+ 32 - 12
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamRecordAlreadyAuditServiceImpl.java

@@ -10,9 +10,8 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.enums.CourseLevel;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.IsSuccess;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.SelectType;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordAlreadyAuditService;
+import cn.com.qmth.examcloud.core.oe.admin.service.ExportTaskService;
 import cn.com.qmth.examcloud.core.oe.admin.service.IllegallyTypeService;
-import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditEntityConvert;
-import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditExcel;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAuditQuery;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
@@ -44,6 +43,9 @@ public class ExamRecordAlreadyAuditServiceImpl implements ExamRecordAlreadyAudit
     @Autowired
     private IllegallyTypeService illegallyTypeService;
 
+    @Autowired
+    private ExportTaskService exportTaskService;
+
     @Autowired
     private JdbcTemplate jdbcTemplate;
 
@@ -80,24 +82,41 @@ public class ExamRecordAlreadyAuditServiceImpl implements ExamRecordAlreadyAudit
     }
 
     @Override
-    public List<ExamAuditExcel> getExamRecordAlreadyAuditListForExport(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule) {
+    public List<ExamAuditInfo> getExamRecordAlreadyAuditListForExport(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule) {
         Check.isNull(query, "请求参数不能为空!");
         Check.isNull(query.getExamId(), "请先选择考试!");
-        query.setSelectType(SelectType.EXPORT);
 
         if (courseRule.assertEmptyQueryResult() || orgRule.assertEmptyQueryResult()) {
             return new ArrayList<>();
         }
 
-        // 仅导出结果
-        String querySql = this.queryExamRecordAlreadyAuditListSql(query, false, courseRule, orgRule);
-        log.debug(querySql);
-        List<ExamAuditInfo> list = jdbcTemplate.query(querySql, new BeanPropertyRowMapper(ExamAuditInfo.class));
+        query.setSelectType(SelectType.EXPORT);
+        query.setPageNo(1);
+        query.setPageSize(1000);
+
+        List<ExamAuditInfo> result = new ArrayList<>();
+        while (true) {
+            // 检查是否终止导出
+            exportTaskService.checkStopExportTaskById(query.getTaskId());
+
+            int offset = (query.getPageNo() - 1) * query.getPageSize();
+            String querySql = this.queryExamRecordAlreadyAuditListSql(query, false, courseRule, orgRule);
+            String pageSql = querySql + " limit " + offset + "," + query.getPageSize();
+            log.warn("导出监考已审:{}", pageSql);
+
+            List<ExamAuditInfo> list = jdbcTemplate.query(pageSql, new BeanPropertyRowMapper(ExamAuditInfo.class));
+            if (CollectionUtils.isEmpty(list)) {
+                break;
+            }
+
+            result.addAll(list);
+            query.setPageNo(query.getPageNo() + 1);
+        }
 
         // 填充其它信息
-        this.fillOtherInfo(list, query.getExamId());
+        this.fillOtherInfo(result, query.getExamId());
 
-        return ExamAuditEntityConvert.ofExcel(list);
+        return result;
     }
 
     private void fillOtherInfo(List<ExamAuditInfo> list, Long examId) {
@@ -294,8 +313,9 @@ public class ExamRecordAlreadyAuditServiceImpl implements ExamRecordAlreadyAudit
         if (!isCount) {
             sql.append(" group by rd.id");
 
-            if (SelectType.EXPORT != query.getSelectType()) {
-                // sql.append(" order by rd.id desc");
+            if (SelectType.EXPORT == query.getSelectType()) {
+                sql.append(" order by rd.id desc");
+            } else {
                 sql.append(" order by rd.update_time desc");
             }
         }