deason 11 mesiacov pred
rodič
commit
a832554eb7

+ 18 - 38
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/controller/ExamAuditController.java

@@ -1,33 +1,9 @@
-/*
- * *************************************************
- * Copyright (c) 2018 QMTH. All Rights Reserved.
- * Created by Deason on 2018-08-27 16:16:29.
- * *************************************************
- */
-
 package cn.com.qmth.examcloud.core.oe.admin.api.controller;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletResponse;
-
-import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
-import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordIllegallyService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.GetMapping;
-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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
 import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.enums.DataRuleType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.commons.util.JsonMapper;
 import cn.com.qmth.examcloud.core.oe.admin.base.Constants;
@@ -37,11 +13,10 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.IllegallyTypeRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.IllegallyTypeEntity;
-import cn.com.qmth.examcloud.core.oe.admin.dao.enums.SelectType;
 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.ExamRecordIllegallyService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.UserDataRules;
-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;
@@ -57,6 +32,15 @@ import cn.com.qmth.examcloud.web.security.DataRule;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * 考试记录审核相关接口
@@ -84,15 +68,14 @@ public class ExamAuditController extends ControllerSupport {
     @Autowired
     private AsyncExportService asyncExportService;
 
-    
-    @DataRule(type = {DataRuleType.COURSE,DataRuleType.ORG})
+    @DataRule(type = {DataRuleType.COURSE, DataRuleType.ORG})
     @PostMapping("/list")
     @ApiOperation(value = "查询“监考已审”列表(分页)")
     public Page<ExamAuditInfo> getExamAuditList(@RequestBody ExamAuditQuery query) {
         User user = getAccessUser();
         query.setRootOrgId(user.getRootOrgId());
-        UserDataRules uds=new UserDataRules(getUserDataRule(DataRuleType.ORG), getUserDataRule(DataRuleType.COURSE));
-        Page<ExamAuditInfo> examAuditList = examAuditService.getExamAuditList(uds,query);
+        UserDataRules uds = new UserDataRules(getUserDataRule(DataRuleType.ORG), getUserDataRule(DataRuleType.COURSE));
+        Page<ExamAuditInfo> examAuditList = examAuditService.getExamAuditList(uds, query);
 
         examAuditList.getContent().forEach(p -> {
             p.setIdentityNumber(IdentityNumberHelper.conceal(user.getRootOrgId(), p.getIdentityNumber()));
@@ -110,7 +93,7 @@ public class ExamAuditController extends ControllerSupport {
         ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE13.getDesc(), "导出条件:" + query));
     }
 
-    @DataRule(type = {DataRuleType.COURSE,DataRuleType.ORG})
+    @DataRule(type = {DataRuleType.COURSE, DataRuleType.ORG})
     @PostMapping("/discipline/list")
     @ApiOperation(value = "查询“违纪名单”列表(分页)")
     public Page<ExamAuditInfo> getExamAuditUnPassList(@RequestBody ExamAuditQuery query) {
@@ -126,19 +109,16 @@ public class ExamAuditController extends ControllerSupport {
         return examAuditList;
     }
 
-    @DataRule(type = {DataRuleType.COURSE,DataRuleType.ORG})
+    @DataRule(type = {DataRuleType.COURSE, DataRuleType.ORG})
     @GetMapping("/discipline/list/export")
     @ApiOperation(value = "导出“违纪名单”列表(Excel)", notes = "参数示例:query={\"pageNo\":1,\"pageSize\":10,\"examId\":123, ...}")
     public void exportExamAuditUnPassList(@RequestParam String query, HttpServletResponse response) throws Exception {
         ExamAuditQuery newQuery = new JsonMapper().parseJson(query, ExamAuditQuery.class);
         Check.isNull(newQuery, "请求参数不能为空!");
-        newQuery.setSelectType(SelectType.EXPORT);
-
         UserDataRule courseRule = super.getUserDataRule(DataRuleType.COURSE);
         UserDataRule orgRule = super.getUserDataRule(DataRuleType.ORG);
 
-        Page<ExamAuditInfo> page = examRecordIllegallyService.getExamRecordIllegallyList(newQuery, courseRule, orgRule);
-        List<ExamAuditExcel> list = ExamAuditEntityConvert.ofExcel(page);
+        List<ExamAuditExcel> list = examRecordIllegallyService.getExamRecordIllegallyListForExport(newQuery, courseRule, orgRule);
         ExportUtils.exportEXCEL("违纪名单列表", ExamAuditExcel.class, list, response);
     }
 
@@ -228,7 +208,7 @@ public class ExamAuditController extends ControllerSupport {
         //原需求:已经生成了评卷任务,不能重新审为不通过,但是可以审核为已通过
         //20191220,需求临时调整:已经生成了评卷任务,均不可重审
         //20200923,需求调整,恢复至原需求:已经生成了评卷任务,不能重新审为不通过,但是可以审核为已通过
-        if(redoAuditInfo.getFromMarking() == null || !redoAuditInfo.getFromMarking()){
+        if (redoAuditInfo.getFromMarking() == null || !redoAuditInfo.getFromMarking()) {
             String markingTaskBuilt =
                     ExamCacheTransferHelper.getDefaultCachedExamProperty(examId, ExamProperties.MARKING_TASK_BUILDED.name()).getValue();
             if (StringUtils.isNotBlank(markingTaskBuilt) && Constants.isTrue.equals(markingTaskBuilt)) {

+ 8 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamRecordIllegallyService.java

@@ -1,10 +1,13 @@
 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;
 
+import java.util.List;
+
 public interface ExamRecordIllegallyService {
 
     /**
@@ -12,4 +15,9 @@ public interface ExamRecordIllegallyService {
      */
     Page<ExamAuditInfo> getExamRecordIllegallyList(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule);
 
+    /**
+     * 查询“违纪名单”列表(导出Excel)
+     */
+    List<ExamAuditExcel> getExamRecordIllegallyListForExport(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule);
+
 }

+ 5 - 3
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/examaudit/ExamAuditEntityConvert.java

@@ -13,6 +13,7 @@ import java.util.*;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.beanutils.converters.*;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 
 import com.google.common.collect.Lists;
@@ -74,12 +75,13 @@ public class ExamAuditEntityConvert {
 		return list;
 	}
 
-	public static List<ExamAuditExcel> ofExcel(Page<ExamAuditInfo> page) {
+	public static List<ExamAuditExcel> ofExcel(List<ExamAuditInfo> values) {
 		List<ExamAuditExcel> list = new ArrayList<>();
-		if (page == null || page.getContent() == null) {
+		if (CollectionUtils.isEmpty(values)) {
 			return list;
 		}
-		page.getContent().forEach(e -> {
+
+		values.forEach(e -> {
 			ExamAuditExcel excel = new ExamAuditExcel();
 			excel.setExamId(e.getExamId());
 			excel.setExamRecordDataId(e.getExamRecordDataId());

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

@@ -7,6 +7,8 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.enums.CourseLevel;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.SelectType;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordIllegallyService;
 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;
@@ -24,6 +26,7 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,8 +43,7 @@ public class ExamRecordIllegallyServiceImpl implements ExamRecordIllegallyServic
     private JdbcTemplate jdbcTemplate;
 
     @Override
-    public Page<ExamAuditInfo> getExamRecordIllegallyList(ExamAuditQuery query, UserDataRule courseRule,
-                                                          UserDataRule orgRule) {
+    public Page<ExamAuditInfo> getExamRecordIllegallyList(ExamAuditQuery query, UserDataRule courseRule, UserDataRule orgRule) {
         Check.isNull(query, "请求参数不能为空!");
         Check.isNull(query.getExamId(), "请先选择考试!");
 
@@ -56,14 +58,6 @@ public class ExamRecordIllegallyServiceImpl implements ExamRecordIllegallyServic
         String pageSql = querySql + " limit " + offset + "," + query.getPageSize();
         log.debug(pageSql);
 
-        if (SelectType.EXPORT == query.getSelectType()) {
-            // 仅导出结果
-            List<ExamAuditInfo> list = jdbcTemplate.query(querySql, new BeanPropertyRowMapper(ExamAuditInfo.class));
-            // 填充其它信息
-            this.fillOtherInfo(list, query.getExamId());
-            return new PageImpl<>(list, pageable, list.size());
-        }
-
         Long totalElements = jdbcTemplate.queryForObject(countSql, Long.class);
         if (totalElements == null || totalElements == 0) {
             return Page.empty(pageable);
@@ -80,6 +74,27 @@ public class ExamRecordIllegallyServiceImpl implements ExamRecordIllegallyServic
         return new PageImpl<>(list, pageable, totalElements);
     }
 
+    @Override
+    public List<ExamAuditExcel> getExamRecordIllegallyListForExport(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.queryExamRecordIllegallyListSql(query, false, courseRule, orgRule);
+        log.debug(querySql);
+        List<ExamAuditInfo> list = jdbcTemplate.query(querySql, new BeanPropertyRowMapper(ExamAuditInfo.class));
+
+        // 填充其它信息
+        this.fillOtherInfo(list, query.getExamId());
+
+        return ExamAuditEntityConvert.ofExcel(list);
+    }
+
     private void fillOtherInfo(List<ExamAuditInfo> list, Long examId) {
         ExamSettingsCacheBean examCache = CacheHelper.getExamSettings(examId);
         Map<Long, String> orgMaps = new HashMap<>();
@@ -202,8 +217,11 @@ public class ExamRecordIllegallyServiceImpl implements ExamRecordIllegallyServic
 
         if (!isCount) {
             // sql.append(" group by rd.id");
-            // sql.append(" order by rd.update_time desc");
-            sql.append(" order by rd.id desc");
+
+            if (SelectType.EXPORT != query.getSelectType()) {
+                // sql.append(" order by rd.id desc");
+                sql.append(" order by rd.update_time desc");
+            }
         }
 
         return sql.toString();