|
@@ -18,6 +18,8 @@ import java.util.concurrent.TimeUnit;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -62,6 +64,8 @@ import cn.com.qmth.scancentral.vo.subject.TaskIdVo;
|
|
|
@Service
|
|
|
public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity> implements SubjectService {
|
|
|
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(SubjectService.class);
|
|
|
+
|
|
|
private static ExecutorService exec;
|
|
|
|
|
|
@Autowired
|
|
@@ -295,6 +299,7 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
|
|
|
throw new StatusException("没有考生信息");
|
|
|
}
|
|
|
DataExportTaskVo vo = new DataExportTaskVo();
|
|
|
+ vo.setTotalCount(scount);
|
|
|
vo.setExamId(examId);
|
|
|
vo.setSubjectCode(subjectCode);
|
|
|
vo.setSuccess(true);
|
|
@@ -309,33 +314,56 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
|
|
|
|
|
|
@Override
|
|
|
public void answerDataExportDispose(DataExportTaskVo vo) {
|
|
|
- File temDir = new File("temp/" + FastUUID.get() + "/");
|
|
|
- temDir.mkdirs();
|
|
|
- ExportCetMarkingQueryVo req = new ExportCetMarkingQueryVo();
|
|
|
- req.setExamId(vo.getExamId());
|
|
|
- req.setPageSize(100000);
|
|
|
- int pageNumber = 0;
|
|
|
- req.setPageNumber(pageNumber);
|
|
|
- Set<String> examNumbers = new HashSet<>();
|
|
|
- Map<String, MarkSiteEntity> cms = readCetMarking(vo.getExamId());
|
|
|
- while (true) {
|
|
|
- req.setPageNumber(++pageNumber);
|
|
|
- List<ExportCetVo> list = studentService.exportCetData(req);
|
|
|
- if (CollectionUtils.isEmpty(list)) {
|
|
|
- break;
|
|
|
+ File[] files = null;
|
|
|
+ try {
|
|
|
+ File temDir = new File("temp/" + FastUUID.get() + "/");
|
|
|
+ temDir.mkdirs();
|
|
|
+ ExportCetMarkingQueryVo req = new ExportCetMarkingQueryVo();
|
|
|
+ req.setExamId(vo.getExamId());
|
|
|
+ req.setPageSize(100000);
|
|
|
+ int pageNumber = 0;
|
|
|
+ req.setPageNumber(pageNumber);
|
|
|
+ Set<String> examNumbers = new HashSet<>();
|
|
|
+ Map<String, MarkSiteEntity> cms = readCetMarking(vo.getExamId());
|
|
|
+ while (true) {
|
|
|
+ req.setPageNumber(++pageNumber);
|
|
|
+ List<ExportCetVo> list = studentService.exportCetData(req);
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ exportAnswer(examNumbers, temDir, list, cms, vo);
|
|
|
+ }
|
|
|
+ files = temDir.listFiles();
|
|
|
+ if (files.length > 0) {
|
|
|
+ File zip = new File(temDir.getAbsolutePath() + "/answer-data.zip");
|
|
|
+ FileUtil.dozip(zip, files);
|
|
|
+ vo.setFilePath(zip.getAbsolutePath());
|
|
|
+ }
|
|
|
+ } catch (StatusException e) {
|
|
|
+ vo.setSuccess(false);
|
|
|
+ vo.setErrMsg(e.getMessage());
|
|
|
+ } catch (Exception e) {
|
|
|
+ vo.setSuccess(false);
|
|
|
+ vo.setErrMsg("系统异常");
|
|
|
+ log.error("导出扫描答案DBF异常", e);
|
|
|
+ } finally {
|
|
|
+ if (files != null && files.length > 0) {
|
|
|
+ for (File file : files) {
|
|
|
+ FileUtil.deleteDirectory(file);
|
|
|
+ }
|
|
|
}
|
|
|
- exportAnswer(examNumbers, temDir, list, cms);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void exportAnswer(Set<String> examNumbers, File temDir, List<ExportCetVo> list,
|
|
|
- Map<String, MarkSiteEntity> cms) {
|
|
|
+ Map<String, MarkSiteEntity> cms, DataExportTaskVo vo) {
|
|
|
Map<String, List<String>> subjects = new HashMap<>();
|
|
|
for (ExportCetVo data : list) {
|
|
|
String key = data.getSubjectCode() + "-" + data.getExamNumber();
|
|
|
if (examNumbers.contains(key)) {
|
|
|
continue;
|
|
|
}
|
|
|
+ vo.setProgressCount(vo.getProgressCount() + 1);
|
|
|
examNumbers.add(key);
|
|
|
List<String> line = new ArrayList<>();
|
|
|
line.add(data.getExamNumber());
|