xiaofei hai 1 ano
pai
achega
3033701a0c
Modificáronse 18 ficheiros con 138 adicións e 70 borrados
  1. 12 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/initMarkData/ExamDetailCourseInitMarkDto.java
  2. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  3. 4 1
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  4. 10 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/ApproveUserResult.java
  5. 5 0
      teachcloud-mark/pom.xml
  6. 16 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java
  7. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkFileService.java
  8. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java
  9. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkFileServiceImpl.java
  10. 14 6
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  11. 6 5
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java
  12. 3 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanBatchServiceImpl.java
  13. 3 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java
  14. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/FileStoreUtils.java
  15. 2 2
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/TeachcloudTaskApplication.java
  16. 4 4
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/PrintFinishService.java
  17. 35 12
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java
  18. 16 16
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/initMarkData/ExamDetailCourseInitMarkDto.java

@@ -8,11 +8,23 @@ import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
  */
 public class ExamDetailCourseInitMarkDto extends ExamDetailCourse {
 
+    private Long schoolId;
     private Long examDetailId;
     private Long examId;
     private String packageCode;
     private String examPlace;
     private String examRoom;
+
+    @Override
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    @Override
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
     @Override
     public Long getExamDetailId() {
         return examDetailId;

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1448,6 +1448,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                         examDetailCourse.setCourseCode(examTask.getCourseCode());
                         examDetailCourse.setCourseName(examTask.getCourseName());
                         examDetailCourse.setPaperNumber(paperNumber);
+                        examDetailCourse.setCoursePaperId(examTask.getCourseCode().concat(examTask.getSequence()));
                         examDetailCourse.setClazzId(examDetailList.getClassId());
                         examDetailCourse.setTotalSubjects(examDetailList.getStudentCount());
                         examDetailCourse.setCreateId(sysUser.getId());

+ 4 - 1
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -689,6 +689,7 @@
             resultType="com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto">
         SELECT
             ed.id examDetailId,
+            ed.school_id schoolId,
             ed.exam_id examId,
             edc.id,
             ed.package_code packageCode,
@@ -696,7 +697,9 @@
             ed.exam_room examRoom,
             edc.course_code courseCode,
             edc.course_name courseName,
-            edc.paper_number paperNumber
+            edc.paper_number paperNumber,
+            edc.course_paper_id coursePaperId,
+            edc.paper_type paperType
         FROM
             exam_detail ed
                 LEFT JOIN

+ 10 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/ApproveUserResult.java

@@ -19,8 +19,8 @@ import java.io.Serializable;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ApproveUserResult extends SysUser implements Serializable {
 
-    @ApiModelProperty(value = "机构名称")
-    private String orgName;
+//    @ApiModelProperty(value = "机构名称")
+//    private String orgName;
 
     @ApiModelProperty(value = "机构类型")
     private OrgTypeEnum orgType;
@@ -44,7 +44,7 @@ public class ApproveUserResult extends SysUser implements Serializable {
     }
 
     public ApproveUserResult(String orgName, OrgTypeEnum orgType, String loginName, String realName, Long schoolId, String code, String mobileNumber, Long createTime, String paperUrls) {
-        this.orgName = orgName;
+        setOrgName(orgName);
         this.orgType = orgType;
         setLoginName(loginName);
         setRealName(realName);
@@ -87,13 +87,13 @@ public class ApproveUserResult extends SysUser implements Serializable {
         this.paperUrls = paperUrls;
     }
 
-    public String getOrgName() {
-        return orgName;
-    }
-
-    public void setOrgName(String orgName) {
-        this.orgName = orgName;
-    }
+//    public String getOrgName() {
+//        return orgName;
+//    }
+//
+//    public void setOrgName(String orgName) {
+//        this.orgName = orgName;
+//    }
 
     public OrgTypeEnum getOrgType() {
         return orgType;

+ 5 - 0
teachcloud-mark/pom.xml

@@ -55,5 +55,10 @@
             <artifactId>spring-test</artifactId>
             <version>5.2.12.RELEASE</version>
         </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.6</version>
+        </dependency>
     </dependencies>
 </project>

+ 16 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java

@@ -10,6 +10,7 @@ import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
 import com.qmth.teachcloud.mark.utils.BigDecimalUtils;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang.math.RandomUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.Serializable;
@@ -31,6 +32,9 @@ public class MarkStudent implements Serializable {
 
     public static final String SPLIT = ";";
 
+    public static final int SECRET_NUMBER_START = 10000000;
+
+    public static final int SECRET_NUMBER_END = 99999999;
 
     private static final long serialVersionUID = 1L;
 
@@ -157,7 +161,7 @@ public class MarkStudent implements Serializable {
     public MarkStudent() {
     }
 
-    public MarkStudent(Long id, Long examId, String courseCode, String courseName, String paperNumber, String studentCode, String studentName, String packageCode, String examPlace, String examRoom, String className) {
+    public MarkStudent(Long id, Long examId, String courseCode, String courseName, String paperNumber, String studentCode, String studentName, String packageCode, String examPlace, String examRoom, String college, String className) {
         this.id = id;
         this.examId = examId;
         this.courseCode = courseCode;
@@ -168,7 +172,14 @@ public class MarkStudent implements Serializable {
         this.packageCode = packageCode;
         this.examPlace = examPlace;
         this.examRoom = examRoom;
+        this.college = college;
         this.className = className;
+        this.sheetCount = 0;
+        this.isUpload = false;
+        this.isAbsent = false;
+        this.isManualAbsent = false;
+        this.isBreach = false;
+        this.subjectiveStatus= SubjectiveStatus.UNMARK;
     }
 
     public Long getId() {
@@ -482,8 +493,10 @@ public class MarkStudent implements Serializable {
             return null;
         }
     }
-    
-    
+
+    public void randomSecretNumber() {
+        secretNumber = String.valueOf((int) (RandomUtils.nextDouble() * (SECRET_NUMBER_END - SECRET_NUMBER_START)) + SECRET_NUMBER_START);
+    }
 
     public Boolean getOmrAbsentChecked() {
 		return omrAbsentChecked;

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/FileService.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkFileService.java

@@ -2,7 +2,7 @@ package com.qmth.teachcloud.mark.service;
 
 import java.io.InputStream;
 
-public interface FileService {
+public interface MarkFileService {
 
 	String getAnswerCardUri(Long examId, String coursePaperId, Integer number);
 

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -66,4 +66,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
 	void updateStudentAndPaper(SysUser user, Long studentId, List<ScanStudentPaper> studentPaperList);
 
 	StudentVo findOne(StudentQuery query);
+
+    int countByExamIdAndSecretNumber(Long examId, String secretNumber);
 }

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/FileServiceImpl.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkFileServiceImpl.java

@@ -3,7 +3,7 @@ package com.qmth.teachcloud.mark.service.impl;
 import com.qmth.boot.core.exception.StatusException;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.mark.enums.FormatType;
-import com.qmth.teachcloud.mark.service.FileService;
+import com.qmth.teachcloud.mark.service.MarkFileService;
 import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -12,7 +12,7 @@ import java.io.IOException;
 import java.io.InputStream;
 
 @Service
-public class FileServiceImpl implements FileService {
+public class MarkFileServiceImpl implements MarkFileService {
 
     @Autowired
     private FileStoreUtils fileStoreUtils;

+ 14 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -406,11 +406,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         student.setObjectiveScore(info.getObjectiveScore());
         student.setScoreList(info.getScoreList(), true);
     }
-    
+
     @Override
     @Transactional
     public void updateStudentAndPaper(@NotNull SysUser user, @NotNull Long id,
-            @NotNull List<ScanStudentPaper> studentPaperList) {
+                                      @NotNull List<ScanStudentPaper> studentPaperList) {
         for (ScanStudentPaper studentPaper : studentPaperList) {
             studentPaper.setStudentId(id);
         }
@@ -422,8 +422,16 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         updateStudentByPaper(user.getId(), id, true);
     }
 
-	@Override
-	public StudentVo findOne(StudentQuery query) {
-		return baseMapper.findOne(query);
-	}
+    @Override
+    public StudentVo findOne(StudentQuery query) {
+        return baseMapper.findOne(query);
+    }
+
+    @Override
+    public int countByExamIdAndSecretNumber(Long examId, String secretNumber) {
+        QueryWrapper<MarkStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkStudent::getExamId, examId)
+                .eq(MarkStudent::getSecretNumber, secretNumber);
+        return this.count(queryWrapper);
+    }
 }

+ 6 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java

@@ -15,7 +15,7 @@ import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
 import com.qmth.teachcloud.mark.enums.CardSource;
 import com.qmth.teachcloud.mark.mapper.ScanAnswerCardMapper;
-import com.qmth.teachcloud.mark.service.FileService;
+import com.qmth.teachcloud.mark.service.MarkFileService;
 import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
 import com.qmth.teachcloud.mark.service.ScanPaperService;
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.List;
 
@@ -46,8 +47,8 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
     @Autowired
     private ScanPaperService scanPaperService;
 
-    @Autowired
-    private FileService fileService;
+    @Resource
+    private MarkFileService markFileService;
 
     @Override
     public ScanAnswerCard findByExamAndNumber(Long examId, Integer cardNumber) {
@@ -115,7 +116,7 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         }
         String filePath = null;
         try {
-            fileService.uploadAnswerCard(domain.getFile().getInputStream(), domain.getMd5(), domain.getExamId(), domain.getCoursePaperId(), domain.getNumber());
+            markFileService.uploadAnswerCard(domain.getFile().getInputStream(), domain.getMd5(), domain.getExamId(), domain.getCoursePaperId(), domain.getNumber());
         } catch (IOException e) {
             throw new ParameterException("文件上传失败", e);
         }
@@ -186,7 +187,7 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         }
         String filePath = null;
         try {
-            fileService.uploadAdapteFile(file.getInputStream(), md5, examId, coursePaperId, cardNumber);
+            markFileService.uploadAdapteFile(file.getInputStream(), md5, examId, coursePaperId, cardNumber);
         } catch (IOException e) {
             throw new ParameterException("文件上传失败", e);
         }

+ 3 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanBatchServiceImpl.java

@@ -34,7 +34,7 @@ import com.qmth.teachcloud.mark.entity.ScanStudentPaper;
 import com.qmth.teachcloud.mark.enums.BatchStatus;
 import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.mapper.ScanBatchMapper;
-import com.qmth.teachcloud.mark.service.FileService;
+import com.qmth.teachcloud.mark.service.MarkFileService;
 import com.qmth.teachcloud.mark.service.MarkStudentService;
 import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
 import com.qmth.teachcloud.mark.service.ScanBatchPaperService;
@@ -54,7 +54,7 @@ import com.qmth.teachcloud.mark.service.ScanPaperService;
 @Service
 public class ScanBatchServiceImpl extends ServiceImpl<ScanBatchMapper, ScanBatch> implements ScanBatchService {
 	@Autowired
-	private FileService fileService;
+	private MarkFileService markFileService;
 	@Autowired
 	private ConcurrentService concurrentService;
 	@Autowired
@@ -256,7 +256,7 @@ public class ScanBatchServiceImpl extends ServiceImpl<ScanBatchMapper, ScanBatch
 			Integer pageIndex, MultipartFile file, String md5) {
 		ScanBatch batch = checkBatchStatus(getById(batchId));
 		try {
-			String path = fileService.uploadSheet(file.getInputStream(), md5, batch.getExamId(), batchId, coursePaperId,
+			String path = markFileService.uploadSheet(file.getInputStream(), md5, batch.getExamId(), batchId, coursePaperId,
 					studentCode, paperNumber, pageIndex);
 			scanFilePropertyService.save(batch.getExamId(), path, md5, file.getSize());
 			return SheetUploadVo.create(path);

+ 3 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java

@@ -26,7 +26,7 @@ import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.ScanPackage;
 import com.qmth.teachcloud.mark.mapper.ScanPackageMapper;
-import com.qmth.teachcloud.mark.service.FileService;
+import com.qmth.teachcloud.mark.service.MarkFileService;
 import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.ScanFilePropertyService;
 import com.qmth.teachcloud.mark.service.ScanPackageService;
@@ -42,7 +42,7 @@ import com.qmth.teachcloud.mark.service.ScanPackageService;
 @Service
 public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanPackage> implements ScanPackageService {
 	@Autowired
-	private FileService fileService;
+	private MarkFileService markFileService;
 	@Autowired
 	private ScanFilePropertyService scanFilePropertyService;
 	@Autowired
@@ -81,7 +81,7 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 		for (MarkPaper mp : mps) {
 			String coursePaperId = mp.getCoursePaperId();
 			try {
-				String path = fileService.uploadPackage(file.getInputStream(), md5, examId, coursePaperId, packageCode,
+				String path = markFileService.uploadPackage(file.getInputStream(), md5, examId, coursePaperId, packageCode,
 						packageNo);
 				if (vo == null) {
 					vo = SheetUploadVo.create(path);

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/FileStoreUtils.java

@@ -288,12 +288,12 @@ public class FileStoreUtils {
             String type;
             //上传至oss
             if (oss || fssDomain.getConfig().startsWith(SystemConstant.START_PARENT)) {
-                this.ossUpload(fileName, inputStream, md5, uploadFileEnum.getFssType());
+                this.ossUpload(fileName, inputStream, fileMd5, uploadFileEnum.getFssType());
                 type = SystemConstant.OSS;
             }
             // 上传本地服务器
             else {
-                this.localUpload(fileName, inputStream, md5, uploadFileEnum.getFssType());
+                this.localUpload(fileName, inputStream, fileMd5, uploadFileEnum.getFssType());
                 type = SystemConstant.LOCAL;
             }
             return JSON.toJSONString(new FilePathVo(fileName, uploadFileEnum, type));

+ 2 - 2
teachcloud-task/src/main/java/com/qmth/teachcloud/task/TeachcloudTaskApplication.java

@@ -14,9 +14,9 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @SpringBootApplication(scanBasePackages = "com.qmth.*", exclude = {SecurityAutoConfiguration.class})
-@MapperScan({"com.qmth.distributed.print.business.mapper","com.qmth.teachcloud.report.business.mapper","com.qmth.teachcloud.common.mapper"})
+@MapperScan({"com.qmth.distributed.print.business.mapper","com.qmth.teachcloud.report.business.mapper","com.qmth.teachcloud.common.mapper", "com.qmth.teachcloud.mark.mapper"})
 //主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
-@EntityScan(basePackages = {"com.qmth.distributed.print.business.entity","com.qmth.teachcloud.report.business.entity","com.qmth.teachcloud.common.entity"}) // 用来扫描和发现指定包及其子包中的Entity定义
+@EntityScan(basePackages = {"com.qmth.distributed.print.business.entity","com.qmth.teachcloud.report.business.entity","com.qmth.teachcloud.common.entity", "com.qmth.teachcloud.mark.entity"}) // 用来扫描和发现指定包及其子包中的Entity定义
 @EnableTransactionManagement // spring开启事务支持
 @EnableAsync // 开启异步任务
 @EnableCaching // 开启缓存注解

+ 4 - 4
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/PrintFinishService.java

@@ -7,11 +7,11 @@ import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCours
  */
 public interface PrintFinishService {
 
-    public void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String packageCode);
+    void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String packageCode);
 
-    public void insertMarkStudent(ExamDetailCourseInitMarkDto examDetail);
+    void insertMarkStudent(ExamDetailCourseInitMarkDto examDetail);
 
-    public void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto);
+    void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto);
 
-    public void insertMarkQuestion(Long examId, String paperNumber, String content);
+    void insertMarkQuestion(Long examId, String paperNumber, String content);
 }

+ 35 - 12
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -24,6 +24,7 @@ import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import com.qmth.teachcloud.task.service.PrintFinishService;
 import org.apache.commons.codec.digest.DigestUtils;
 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;
@@ -34,7 +35,9 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 @Service
 public class PrintFinishServiceImpl implements PrintFinishService {
@@ -60,7 +63,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
     @Resource
     private FileStoreUtils fileStoreUtils;
     @Resource
-    private FileService fileService;
+    private MarkFileService markFileService;
 
     /**
      * 打印结束后,生成阅卷科目数据
@@ -83,17 +86,30 @@ public class PrintFinishServiceImpl implements PrintFinishService {
 
     @Override
     public void insertMarkStudent(ExamDetailCourseInitMarkDto dto) {
-        List<MarkStudent> markStudentList = new ArrayList<>();
-        List<ExamStudent> examStudentList = examStudentService.listByExamDetailCourseIdNotIntMarkStudent(dto.getId());
-        for (ExamStudent examStudent : examStudentList) {
-            MarkStudent markStudent = markStudentService.getById(examStudent.getId());
-            if (markStudent != null) {
-                continue;
+        try {
+            List<MarkStudent> markStudentList = new ArrayList<>();
+            List<ExamStudent> examStudentList = examStudentService.listByExamDetailCourseIdNotIntMarkStudent(dto.getId());
+            Set<String> secretNumberSet = new HashSet<>();
+            for (ExamStudent examStudent : examStudentList) {
+                MarkStudent markStudent = markStudentService.getById(examStudent.getId());
+                if (markStudent != null) {
+                    continue;
+                }
+                MarkStudent student = new MarkStudent(examStudent.getId(), dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), examStudent.getStudentCode(), examStudent.getStudentName(), dto.getPackageCode(), dto.getExamPlace(), dto.getExamRoom(), examStudent.getCollegeName(), examStudent.getStudentName());
+                if (student.getSecretNumber() == null) {
+                    student.randomSecretNumber();
+                    while (secretNumberSet.contains(student.getSecretNumber())
+                            || markStudentService.countByExamIdAndSecretNumber(student.getExamId(), student.getSecretNumber()) > 0) {
+                        student.randomSecretNumber();
+                    }
+                }
+                markStudentList.add(student);
             }
-            markStudentList.add(new MarkStudent(examStudent.getId(), dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), examStudent.getStudentCode(), examStudent.getStudentName(), dto.getPackageCode(), dto.getExamPlace(), dto.getExamRoom(), examStudent.getStudentName()));
-        }
-        if (CollectionUtils.isNotEmpty(markStudentList)) {
-            markStudentService.saveBatch(markStudentList);
+            if (CollectionUtils.isNotEmpty(markStudentList)) {
+                markStudentService.saveBatch(markStudentList);
+            }
+        } catch (Exception e) {
+            log.info("考生同步阅卷失败");
         }
     }
 
@@ -123,7 +139,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                             FileInputStream inputStream = new FileInputStream(jsonFile);
                             String md5 = DigestUtils.md5Hex(inputStream);
                             Integer number = scanAnswerCardService.findMaxCardNumberByExamId(dto.getExamId());
-                            String path = fileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
+                            String path = markFileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
                             String uploadPath = fileStoreUtils.uploadFile(inputStream, md5, UploadFileEnum.CARD, path);
 
                             scanAnswerCard = new ScanAnswerCard();
@@ -136,8 +152,15 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                             scanAnswerCard.setUri(uploadPath);
                             scanAnswerCard.setMd5(md5);
                             scanAnswerCard.setNeedAdapte(true);
+                            scanAnswerCardService.save(scanAnswerCard);
                         } catch (IOException e) {
                             log.info("考试[],试卷编号[],题卡ID[]同步阅卷失败", dto.getExamId(), dto.getPaperNumber(), paperInfoVo.getCardId());
+                        } finally {
+                            try {
+                                FileUtils.forceDeleteOnExit(jsonFile);
+                            } catch (IOException e) {
+                                throw new RuntimeException(e);
+                            }
                         }
                     }
                 }

+ 16 - 16
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -89,28 +89,28 @@ public class StartRunning implements CommandLineRunner {
         log.info("增加自动统分定时任务 end");
 
         // 每1分钟一次
-        log.info("增加更新评卷员质量监控指标定时任务 start");
-        Map qualityJobMap = new HashMap();
-        qualityJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
-        quartzService.deleteJob(JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name());
-        quartzService.addJob(SubjectCalculateJob.class, JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name(), "0 */1 * * * ?", qualityJobMap);
-        log.info("增加更新评卷员质量监控指标定时任务 end");
-
-
-        // 每1分钟一次
-        log.info("增加评卷任务生成定时任务 start");
-        Map buildMarkTaskJobMap = new HashMap();
-        buildMarkTaskJobMap.computeIfAbsent("name", v -> BuildMarkTaskJob.class.getName());
-        quartzService.deleteJob(JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name());
-        quartzService.addJob(BuildMarkTaskJob.class, JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name(), "0 */1 * * * ?", buildMarkTaskJobMap);
-        log.info("增加评卷任务生成定时任务 end");
+//        log.info("增加更新评卷员质量监控指标定时任务 start");
+//        Map qualityJobMap = new HashMap();
+//        qualityJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
+//        quartzService.deleteJob(JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name());
+//        quartzService.addJob(SubjectCalculateJob.class, JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name(), "0 */1 * * * ?", qualityJobMap);
+//        log.info("增加更新评卷员质量监控指标定时任务 end");
+//
+//
+//        // 每1分钟一次
+//        log.info("增加评卷任务生成定时任务 start");
+//        Map buildMarkTaskJobMap = new HashMap();
+//        buildMarkTaskJobMap.computeIfAbsent("name", v -> BuildMarkTaskJob.class.getName());
+//        quartzService.deleteJob(JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name());
+//        quartzService.addJob(BuildMarkTaskJob.class, JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name(), "0 */1 * * * ?", buildMarkTaskJobMap);
+//        log.info("增加评卷任务生成定时任务 end");
 
         // 每1分钟一次
         log.info("增加初始化阅卷数据定时任务 start");
         Map initMarkDataJobMap = new HashMap();
         initMarkDataJobMap.computeIfAbsent("name", v -> InitMarkDataJob.class.getName());
         quartzService.deleteJob(JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name());
-        quartzService.addJob(InitMarkDataJob.class, JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name(), "0 */1 * * * ?", initMarkDataJobMap);
+        quartzService.addJob(InitMarkDataJob.class, JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name(), "0 0/5 * * * ?", initMarkDataJobMap);
         log.info("增加初始化阅卷数据定时任务 end");
 
         log.info("服务器启动时执行 end");