ting.yin 4 年 前
コミット
04fde994b7

+ 0 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -115,7 +115,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
 
         for (ExamStudent student : list) {
             ExamSubject subject = null;
-            student.randomSecretNumber();
             student.setSubjectCode(StringUtils.trimToNull(student.getSubjectCode()));
             student.setSubjectName(StringUtils.trimToNull(student.getSubjectName()));
             if (!subjectMap.containsKey(student.getSubjectCode())) {

+ 16 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java

@@ -14,9 +14,12 @@ import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.common.enums.LockType;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+
 import com.aliyun.oss.common.utils.BinaryUtil;
+
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -24,7 +27,9 @@ import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 public class DataSyncThread implements Runnable {
 
@@ -70,9 +75,9 @@ public class DataSyncThread implements Runnable {
 
     public static final String SIZE = "size";
 
-    public DataSyncThread(DataSync dataSync, Integer pageSize, LockService lockService, DataSyncService dataSyncService,
-            ExamService examService, ExamStudentService studentService, ExamSubjectService subjectService,
-            FileService fileService) {
+    public DataSyncThread(DataSync dataSync, Integer pageSize, LockService lockService,
+            DataSyncService dataSyncService, ExamService examService, ExamStudentService studentService,
+            ExamSubjectService subjectService, FileService fileService) {
         this.dataSync = dataSync;
         this.lockService = lockService;
         this.dataSyncService = dataSyncService;
@@ -117,9 +122,8 @@ public class DataSyncThread implements Runnable {
                 JSONObject paperJson = JSONObject.fromObject(paperResult);
                 String paper = paperJson.getString("subjectivePaper");
                 byte[] paperData = paper.getBytes(StandardCharsets.UTF_8);
-                fileService
-                        .uploadPaper(new ByteArrayInputStream(paperData), BinaryUtil.encodeMD5(paperData), exam.getId(),
-                                subjectCode, FormatType.JSON);
+                fileService.uploadPaper(new ByteArrayInputStream(paperData), BinaryUtil.encodeMD5(paperData),
+                        exam.getId(), subjectCode, FormatType.JSON);
                 // 获取考生
                 Long startId = 0L;
                 ExamSubject examSubject = subjectService.find(exam.getId(), subjectCode);
@@ -152,6 +156,7 @@ public class DataSyncThread implements Runnable {
                     }
                     JSONArray studentArray = studentJson.getJSONArray(DATA_LIST);
                     List<ExamStudent> list = new ArrayList<ExamStudent>();
+                    Set<String> secretNumberSet = new HashSet<>();
                     Date now = new Date();
                     for (int j = 0; j < studentArray.size(); j++) {
                         JSONObject student = studentArray.getJSONObject(j);
@@ -167,7 +172,6 @@ public class DataSyncThread implements Runnable {
                         examStudent.setSubjectCode(subjectCode);
                         examStudent.setSubjectName(subjectName);
                         examStudent.setExamNumber(student.getString("examNumber"));
-                        examStudent.setSecretNumber(examStudent.getExamNumber());
                         examStudent.setPaperType(null);
 
                         examStudent.setSchoolId(exam.getSchoolId());
@@ -184,6 +188,11 @@ public class DataSyncThread implements Runnable {
                         examStudent.setAnswers(null);
                         examStudent.setBatchCode(null);
                         examStudent.setUploadTime(now);
+                        examStudent.randomSecretNumber();
+                        while (secretNumberSet.contains(examStudent.getSecretNumber())) {
+                            examStudent.randomSecretNumber();
+                        }
+                        secretNumberSet.add(examStudent.getSecretNumber());
                         list.add(examStudent);
 
                         String answerJson = student.getString(SUBJECTIVES);