Browse Source

考务接口修改

wangliang 5 years ago
parent
commit
9b56af589e

+ 37 - 4
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamStudentController.java

@@ -8,13 +8,17 @@ import com.qmth.themis.business.annotation.ApiJsonObject;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.entity.TBAttachment;
 import com.qmth.themis.business.entity.TBAttachment;
+import com.qmth.themis.business.entity.TBTaskHistory;
 import com.qmth.themis.business.entity.TBUser;
 import com.qmth.themis.business.entity.TBUser;
 import com.qmth.themis.business.entity.TEExamStudent;
 import com.qmth.themis.business.entity.TEExamStudent;
+import com.qmth.themis.business.enums.TaskTypeEnum;
+import com.qmth.themis.business.enums.TaskTypeExecEnum;
 import com.qmth.themis.business.service.TBAttachmentService;
 import com.qmth.themis.business.service.TBAttachmentService;
+import com.qmth.themis.business.service.TBTaskHistoryService;
 import com.qmth.themis.business.service.TEExamStudentService;
 import com.qmth.themis.business.service.TEExamStudentService;
 import com.qmth.themis.business.templete.TaskImportTemplete;
 import com.qmth.themis.business.templete.TaskImportTemplete;
 import com.qmth.themis.business.templete.impl.ExamStudentTemplete;
 import com.qmth.themis.business.templete.impl.ExamStudentTemplete;
-import com.qmth.themis.business.util.ExcelUtil;
+import com.qmth.themis.business.threadPool.MyThreadPool;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.exception.BusinessException;
@@ -115,6 +119,12 @@ public class TEExamStudentController {
         return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
         return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
     }
     }
 
 
+    @Resource
+    TBTaskHistoryService taskHistoryService;
+
+    @Resource
+    MyThreadPool myThreadPool;
+
     @ApiOperation(value = "考生导入接口")
     @ApiOperation(value = "考生导入接口")
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     @Transactional
     @Transactional
@@ -127,14 +137,35 @@ public class TEExamStudentController {
         long start = System.currentTimeMillis();
         long start = System.currentTimeMillis();
         Map<String, Object> mapParameter = BackendConstant.getAttachmentEnv(type);
         Map<String, Object> mapParameter = BackendConstant.getAttachmentEnv(type);
         TBAttachment tbAttachment = null;
         TBAttachment tbAttachment = null;
+        TBTaskHistory tbTaskHistory = null;
         try {
         try {
             TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
             TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
             tbAttachment = tbAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), ServletUtil.getRequestPath(), mapParameter, tbUser.getOrgId(), tbUser.getId());
             tbAttachment = tbAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), ServletUtil.getRequestPath(), mapParameter, tbUser.getOrgId(), tbUser.getId());
             if (Objects.isNull(tbAttachment)) {
             if (Objects.isNull(tbAttachment)) {
                 throw new BusinessException(ExceptionResultEnum.ATTACHMENT_ERROR);
                 throw new BusinessException(ExceptionResultEnum.ATTACHMENT_ERROR);
+            } else {
+                //往任务表里插一条数据
+                tbTaskHistory = new TBTaskHistory();
+                tbTaskHistory.setType(TaskTypeEnum.import_exam_student.ordinal());
+                tbTaskHistory.setEntityId(tbAttachment.getId());
+                tbTaskHistory.setStatus(TaskTypeExecEnum.init.ordinal());
+                tbTaskHistory.setProgress(0d);
+                tbTaskHistory.setImportFileName(tbAttachment.getName());
+                tbTaskHistory.setImportFilePath(tbAttachment.getPath());
+                tbTaskHistory.setCreateId(tbUser.getId());
+                tbTaskHistory.setStartTime(new Date());
+                taskHistoryService.save(tbTaskHistory);
             }
             }
-            TaskImportTemplete examStudentTemplete = new ExamStudentTemplete();
-            examStudentTemplete.importTask(file);
+            //异步插入数据
+            TBTaskHistory finalTbTaskHistory = tbTaskHistory;
+            myThreadPool.arbitratePoolTaskExecutor.submit(() -> {
+                TaskImportTemplete examStudentTemplete = new ExamStudentTemplete();
+                try {
+                    examStudentTemplete.importTask(file, finalTbTaskHistory);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            });
             long end = System.currentTimeMillis();
             long end = System.currentTimeMillis();
             log.info("考生导入结束,============耗时============:{}秒", (end - start) / 1000);
             log.info("考生导入结束,============耗时============:{}秒", (end - start) / 1000);
         } catch (Exception e) {
         } catch (Exception e) {
@@ -153,6 +184,8 @@ public class TEExamStudentController {
                 throw new RuntimeException(e);
                 throw new RuntimeException(e);
             }
             }
         }
         }
-        return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
+        Map map = new HashMap();
+        map.put(SystemConstant.TASK_ID, tbTaskHistory.getId());
+        return ResultUtil.ok(map);
     }
     }
 }
 }

+ 1 - 0
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -51,6 +51,7 @@ public class SystemConstant {
     public static final String OSS = "oss";
     public static final String OSS = "oss";
     public static final String PATH = "path";
     public static final String PATH = "path";
     public static final String ID = "id";
     public static final String ID = "id";
+    public static final String TASK_ID = "taskId";
     public static final String MD5 = "md5";
     public static final String MD5 = "md5";
     public static final String ATTACHMENT_TYPE = "attachmentType";
     public static final String ATTACHMENT_TYPE = "attachmentType";
     public static final String UPLOAD_TYPE = "uploadType";
     public static final String UPLOAD_TYPE = "uploadType";

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/dao/TOeTaskHistoryMapper.java → themis-business/src/main/java/com/qmth/themis/business/dao/TBTaskHistoryMapper.java

@@ -1,7 +1,7 @@
 package com.qmth.themis.business.dao;
 package com.qmth.themis.business.dao;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qmth.themis.business.entity.TOeTaskHistory;
+import com.qmth.themis.business.entity.TBTaskHistory;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
 /**
 /**
@@ -12,6 +12,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @Date: 2020/7/9
  * @Date: 2020/7/9
  */
  */
 @Mapper
 @Mapper
-public interface TOeTaskHistoryMapper extends BaseMapper<TOeTaskHistory> {
+public interface TBTaskHistoryMapper extends BaseMapper<TBTaskHistory> {
 
 
 }
 }

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/entity/TBExamInvigilateUser.java

@@ -14,7 +14,7 @@ import java.io.Serializable;
  * @Author: wangliang
  * @Author: wangliang
  * @Date: 2020/7/9
  * @Date: 2020/7/9
  */
  */
-@ApiModel(value = "t_oe_exam_invigilate_user", description = "监考员设置")
+@ApiModel(value = "t_b_exam_invigilate_user", description = "监考员设置")
 public class TBExamInvigilateUser implements Serializable {
 public class TBExamInvigilateUser implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/entity/TOeTaskHistory.java → themis-business/src/main/java/com/qmth/themis/business/entity/TBTaskHistory.java

@@ -16,8 +16,8 @@ import java.util.Date;
  * @Author: wangliang
  * @Author: wangliang
  * @Date: 2020/7/9
  * @Date: 2020/7/9
  */
  */
-@ApiModel(value = "t_oe_task_history", description = "异步任务")
-public class TOeTaskHistory implements Serializable {
+@ApiModel(value = "t_b_task_history", description = "异步任务")
+public class TBTaskHistory implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
     @ApiModelProperty(value = "主键")
     @ApiModelProperty(value = "主键")

+ 46 - 0
themis-business/src/main/java/com/qmth/themis/business/enums/TaskTypeEnum.java

@@ -0,0 +1,46 @@
+package com.qmth.themis.business.enums;
+
+/**
+ * @Description: 任务类型
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/15
+ */
+public enum TaskTypeEnum {
+
+    /**
+     * 考试重新算分
+     */
+    calculate_exam_score(0),
+
+    /**
+     * 导入考生
+     */
+    import_exam_student(1),
+
+    /**
+     * 导入试卷
+     */
+    import_exam_paper(2),
+
+    /**
+     * 导入监考员
+     */
+    import_invigilate_user(3),
+
+    /**
+     * 导出监考员
+     */
+    export_invigilate_user(4);
+
+    private int id;
+
+    private TaskTypeEnum(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+}

+ 36 - 0
themis-business/src/main/java/com/qmth/themis/business/enums/TaskTypeExecEnum.java

@@ -0,0 +1,36 @@
+package com.qmth.themis.business.enums;
+
+/**
+ * @Description: 任务执行类型
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/15
+ */
+public enum TaskTypeExecEnum {
+
+    /**
+     * 未开始
+     */
+    init(0),
+
+    /**
+     * 开始执行
+     */
+    running(1),
+
+    /**
+     * 执行结束
+     */
+    finish(2);
+
+    private int id;
+
+    private TaskTypeExecEnum(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+}

+ 84 - 0
themis-business/src/main/java/com/qmth/themis/business/forkjoin/ForkJoinTask.java

@@ -0,0 +1,84 @@
+package com.qmth.themis.business.forkjoin;
+
+import com.google.gson.Gson;
+import com.qmth.themis.business.dto.ExamStudentDtoImport;
+import com.qmth.themis.business.entity.TBTaskHistory;
+import com.qmth.themis.business.entity.TEExamStudent;
+import com.qmth.themis.business.enums.TaskTypeExecEnum;
+import com.qmth.themis.business.service.TBTaskHistoryService;
+import com.qmth.themis.business.service.TEExamStudentService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.RecursiveTask;
+
+@Component
+public class ForkJoinTask extends RecursiveTask<List<TEExamStudent>> {
+    private final static Logger log = LoggerFactory.getLogger(ForkJoinTask.class);
+
+    private int threshold = 500, start, end;//阀值,开始,结束,类型
+    private List<Object> examStudentDtoImportList;
+    private TBTaskHistory tbTaskHistory = null;
+
+    public ForkJoinTask() {
+
+    }
+
+    public ForkJoinTask(int threshold, int start, int end, List<Object> examStudentDtoImportList, TBTaskHistory tbTaskHistory) {
+        this.threshold = threshold;
+        this.start = start;
+        this.end = end;
+        this.examStudentDtoImportList = examStudentDtoImportList;
+        this.tbTaskHistory = tbTaskHistory;
+    }
+
+    @Resource
+    TEExamStudentService teExamStudentService;
+
+    @Resource
+    TBTaskHistoryService tbTaskHistoryService;
+
+    @Override
+    protected List<TEExamStudent> compute() {
+        Gson gson = new Gson();
+        List<TEExamStudent> teExamStudentList = new ArrayList<>();
+        if ((end - start) <= threshold) {
+            for (int i = start; i <= end; i++) {
+                ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) examStudentDtoImportList.get(i);
+                TEExamStudent teExamStudent = gson.fromJson(gson.toJson(examStudentDtoImport), TEExamStudent.class);
+                teExamStudentList.add(teExamStudent);
+            }
+            BigDecimal bigDecimal = new BigDecimal(100);
+            int size = examStudentDtoImportList.size();
+            BigDecimal endBigDecimal = new BigDecimal(end);
+            BigDecimal progress = new BigDecimal(Double.valueOf(endBigDecimal.divide(new BigDecimal(size), 2, BigDecimal.ROUND_HALF_UP).multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())).setScale(0, BigDecimal.ROUND_HALF_UP);
+            teExamStudentService.saveBatch(teExamStudentList);
+            if (progress.intValue() == 100) {
+                tbTaskHistory.setStatus(TaskTypeExecEnum.finish.ordinal());
+                tbTaskHistory.setSummary("共处理了" + size + "条数据");
+                tbTaskHistory.setFinishTime(new Date());
+            } else {
+                tbTaskHistory.setStatus(TaskTypeExecEnum.running.ordinal());
+                tbTaskHistory.setSummary("正在处理第" + start + "条至" + end + "条数据");
+            }
+            tbTaskHistory.setProgress(progress.doubleValue());
+            tbTaskHistoryService.updateById(tbTaskHistory);
+            log.info("start:{},end:{}", start, end);
+        } else {
+            // 将大任务分解成两个小任务
+            int middle = (start + end) / 2;
+            ForkJoinTask left = new ForkJoinTask(threshold, start, middle, examStudentDtoImportList, tbTaskHistory);
+            ForkJoinTask right = new ForkJoinTask(threshold, middle + 1, end, examStudentDtoImportList, tbTaskHistory);
+            invokeAll(left, right);
+            teExamStudentList.addAll(left.join());
+            teExamStudentList.addAll(right.join());
+        }
+        return teExamStudentList;
+    }
+}

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/service/TOeTaskHistoryService.java → themis-business/src/main/java/com/qmth/themis/business/service/TBTaskHistoryService.java

@@ -1,7 +1,7 @@
 package com.qmth.themis.business.service;
 package com.qmth.themis.business.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.themis.business.entity.TOeTaskHistory;
+import com.qmth.themis.business.entity.TBTaskHistory;
 
 
 /**
 /**
  * @Description: 异步任务 服务类
  * @Description: 异步任务 服务类
@@ -10,6 +10,6 @@ import com.qmth.themis.business.entity.TOeTaskHistory;
  * @Author: wangliang
  * @Author: wangliang
  * @Date: 2020/7/9
  * @Date: 2020/7/9
  */
  */
-public interface TOeTaskHistoryService extends IService<TOeTaskHistory> {
+public interface TBTaskHistoryService extends IService<TBTaskHistory> {
 
 
 }
 }

+ 19 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TBTaskHistoryServiceImpl.java

@@ -0,0 +1,19 @@
+package com.qmth.themis.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.themis.business.dao.TBTaskHistoryMapper;
+import com.qmth.themis.business.entity.TBTaskHistory;
+import com.qmth.themis.business.service.TBTaskHistoryService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 异步任务 服务实现类
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/9
+ */
+@Service
+public class TBTaskHistoryServiceImpl extends ServiceImpl<TBTaskHistoryMapper, TBTaskHistory> implements TBTaskHistoryService {
+
+}

+ 0 - 19
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeTaskHistoryServiceImpl.java

@@ -1,19 +0,0 @@
-package com.qmth.themis.business.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.themis.business.dao.TOeTaskHistoryMapper;
-import com.qmth.themis.business.entity.TOeTaskHistory;
-import com.qmth.themis.business.service.TOeTaskHistoryService;
-import org.springframework.stereotype.Service;
-
-/**
- * @Description: 异步任务 服务实现类
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/9
- */
-@Service
-public class TOeTaskHistoryServiceImpl extends ServiceImpl<TOeTaskHistoryMapper, TOeTaskHistory> implements TOeTaskHistoryService {
-
-}

+ 2 - 1
themis-business/src/main/java/com/qmth/themis/business/templete/TaskImportTemplete.java

@@ -1,5 +1,6 @@
 package com.qmth.themis.business.templete;
 package com.qmth.themis.business.templete;
 
 
+import com.qmth.themis.business.entity.TBTaskHistory;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.Result;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
@@ -14,5 +15,5 @@ import java.io.IOException;
  */
  */
 public interface TaskImportTemplete {
 public interface TaskImportTemplete {
 
 
-    Result importTask(MultipartFile file) throws IOException;
+    Result importTask(MultipartFile file, TBTaskHistory tbTaskHistory) throws IOException;
 }
 }

+ 35 - 7
themis-business/src/main/java/com/qmth/themis/business/templete/impl/ExamStudentTemplete.java

@@ -3,23 +3,26 @@ package com.qmth.themis.business.templete.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.qmth.themis.business.dto.ExamStudentDtoImport;
 import com.qmth.themis.business.dto.ExamStudentDtoImport;
+import com.qmth.themis.business.entity.TBTaskHistory;
+import com.qmth.themis.business.entity.TEExamStudent;
+import com.qmth.themis.business.forkjoin.ForkJoinTask;
 import com.qmth.themis.business.templete.TaskImportTemplete;
 import com.qmth.themis.business.templete.TaskImportTemplete;
-import com.qmth.themis.business.threadPool.MyThreadPool;
 import com.qmth.themis.business.util.ExcelCallback;
 import com.qmth.themis.business.util.ExcelCallback;
 import com.qmth.themis.business.util.ExcelError;
 import com.qmth.themis.business.util.ExcelError;
 import com.qmth.themis.business.util.ExcelUtil;
 import com.qmth.themis.business.util.ExcelUtil;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import com.qmth.themis.common.util.ResultUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
-import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.Future;
 
 
 /**
 /**
  * @Description: 考生导入模版
  * @Description: 考生导入模版
@@ -29,9 +32,10 @@ import java.util.Map;
  * @Date: 2020/7/15
  * @Date: 2020/7/15
  */
  */
 public class ExamStudentTemplete implements TaskImportTemplete {
 public class ExamStudentTemplete implements TaskImportTemplete {
+    private final static Logger log = LoggerFactory.getLogger(ExamStudentTemplete.class);
 
 
     @Override
     @Override
-    public Result importTask(MultipartFile file) throws IOException {
+    public Result importTask(MultipartFile file, TBTaskHistory tbTaskHistory) throws IOException {
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(ExamStudentDtoImport.class), new ExcelCallback() {
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(ExamStudentDtoImport.class), new ExcelCallback() {
             @Override
             @Override
             public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException {
             public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException {
@@ -39,6 +43,7 @@ public class ExamStudentTemplete implements TaskImportTemplete {
                 for (int i = 0; i < finalList.size(); i++) {
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
                     LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
                     List<Object> examStudentDtoImportList = map.get(i);
                     List<Object> examStudentDtoImportList = map.get(i);
+                    log.info("examStudentDtoImportList.size:{}", examStudentDtoImportList.size());
                     for (int y = 0; y < examStudentDtoImportList.size(); y++) {
                     for (int y = 0; y < examStudentDtoImportList.size(); y++) {
                         ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) examStudentDtoImportList.get(y);
                         ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) examStudentDtoImportList.get(y);
                         List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentDtoImport, y, i);
                         List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentDtoImport, y, i);
@@ -53,6 +58,29 @@ public class ExamStudentTemplete implements TaskImportTemplete {
                 return finalList;
                 return finalList;
             }
             }
         });
         });
+        //保存数据到数据库
+        if (Objects.nonNull(finalList) && finalList.size() > 0) {
+            log.info("开始forkjoin数据拆分");
+            long start = System.currentTimeMillis();
+            for (int i = 0; i < finalList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
+                List<Object> examStudentDtoImportList = map.get(i);
+                ForkJoinTask forkJoinTask = new ForkJoinTask(500, 0, examStudentDtoImportList.size() - 1, examStudentDtoImportList, tbTaskHistory);
+                ForkJoinPool forkJoinPool = new ForkJoinPool();
+                Future<List<TEExamStudent>> result = forkJoinPool.submit(forkJoinTask);
+                if (forkJoinTask.isCompletedAbnormally()) { // 来检查任务是否已经抛出异常或已经被取消了,要注意此方法。由于提交任务之后,检测该任务是否有异常,不是阻塞的。所以需要上面的等待任务的完成。才能正确的获取到是否有异常
+                    throw new BusinessException(forkJoinTask.getException().getMessage());
+                }
+                try {
+                    List<TEExamStudent> list = result.get();
+                    log.info("list.size:{}", list.size());
+                } catch (ExecutionException | InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+            long end = System.currentTimeMillis();
+            log.info("forkjoin数据拆分结束,============耗时============:{}秒", (end - start) / 1000);
+        }
         Map map = new HashMap<>();
         Map map = new HashMap<>();
         return ResultUtil.ok(map);
         return ResultUtil.ok(map);
     }
     }

+ 1 - 1
themis-business/src/main/resources/mapper/TOeTaskHistoryMapper.xml → themis-business/src/main/resources/mapper/TBTaskHistoryMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qmth.themis.business.dao.TOeTaskHistoryMapper">
+<mapper namespace="com.qmth.themis.business.dao.TBTaskHistoryMapper">
 
 
 </mapper>
 </mapper>