|
@@ -2,8 +2,10 @@ package cn.com.qmth.scancloud.tools.service.impl;
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
@@ -11,26 +13,29 @@ import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
|
import cn.com.qmth.scancloud.tools.config.SysProperty;
|
|
import cn.com.qmth.scancloud.tools.config.SysProperty;
|
|
import cn.com.qmth.scancloud.tools.enums.TaskType;
|
|
import cn.com.qmth.scancloud.tools.enums.TaskType;
|
|
import cn.com.qmth.scancloud.tools.model.ExamStudent;
|
|
import cn.com.qmth.scancloud.tools.model.ExamStudent;
|
|
|
|
+import cn.com.qmth.scancloud.tools.multithread.producer.ExamStudentImportProducer;
|
|
import cn.com.qmth.scancloud.tools.service.AbstractTask;
|
|
import cn.com.qmth.scancloud.tools.service.AbstractTask;
|
|
import cn.com.qmth.scancloud.tools.service.CommonService;
|
|
import cn.com.qmth.scancloud.tools.service.CommonService;
|
|
import cn.com.qmth.scancloud.tools.utils.FileHelper;
|
|
import cn.com.qmth.scancloud.tools.utils.FileHelper;
|
|
-import cn.com.qmth.scancloud.tools.utils.HttpHelper;
|
|
|
|
-import cn.com.qmth.scancloud.tools.utils.JsonHelper;
|
|
|
|
import cn.com.qmth.scancloud.tools.utils.StatusException;
|
|
import cn.com.qmth.scancloud.tools.utils.StatusException;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 考生导入
|
|
* 考生导入
|
|
*/
|
|
*/
|
|
|
|
+@Service
|
|
public class ExamStudentImportTask extends AbstractTask {
|
|
public class ExamStudentImportTask extends AbstractTask {
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(ExamStudentImportTask.class);
|
|
private static final Logger log = LoggerFactory.getLogger(ExamStudentImportTask.class);
|
|
|
|
|
|
private static Pattern examNumberRex = Pattern.compile("^[0-9]{15}$");
|
|
private static Pattern examNumberRex = Pattern.compile("^[0-9]{15}$");
|
|
-
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ExamStudentImportProducer examStudentImportProducer;
|
|
@Override
|
|
@Override
|
|
protected String getTaskName() {
|
|
protected String getTaskName() {
|
|
return TaskType.EXAM_STUDENT_IMPORT.getTitle();
|
|
return TaskType.EXAM_STUDENT_IMPORT.getTitle();
|
|
@@ -90,29 +95,12 @@ public class ExamStudentImportTask extends AbstractTask {
|
|
if (!allExist) {
|
|
if (!allExist) {
|
|
throw new StatusException("科目信息有误!");
|
|
throw new StatusException("科目信息有误!");
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 分批保存
|
|
|
|
- int batchSize = 5000;
|
|
|
|
- List<ExamStudent> batchList = new ArrayList<>();
|
|
|
|
- String url = SysProperty.SCAN_SERVER_URL + "/api/tool/import/exam/student";
|
|
|
|
- for (int n = 0; n < list.size(); n++) {
|
|
|
|
- batchList.add(list.get(n));
|
|
|
|
-
|
|
|
|
- if (batchList.size() % batchSize == 0) {
|
|
|
|
- String json = JsonHelper.toJson(batchList);
|
|
|
|
- String result = HttpHelper.post(url, json);
|
|
|
|
- batchList.clear();
|
|
|
|
-
|
|
|
|
- float rate = (n + 1) * 100f / list.size();
|
|
|
|
- log.info("已处理数:{} 进度:{}% {}", n + 1, rate, result);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (CollectionUtils.isNotEmpty(batchList)) {
|
|
|
|
- String json = JsonHelper.toJson(batchList);
|
|
|
|
- String result = HttpHelper.post(url, json);
|
|
|
|
- log.info("已处理数:{} 进度:100% {}", list.size(), result);
|
|
|
|
- }
|
|
|
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
|
+ param.put("data", list);
|
|
|
|
+ Integer threadCount=SysProperty.THREAD_SIZE;
|
|
|
|
+ Integer batchSize=SysProperty.BATCH_SIZE;
|
|
|
|
+ param.put("batchSize", batchSize);
|
|
|
|
+ examStudentImportProducer.startDispose(threadCount,param, list.size());
|
|
}
|
|
}
|
|
|
|
|
|
private ExamStudent parseValues(int index, String line, Set<String> examNumbers) {
|
|
private ExamStudent parseValues(int index, String line, Set<String> examNumbers) {
|