浏览代码

1.0.4 优化联调bug

xiaofei 1 年之前
父节点
当前提交
84a453dc69

+ 1 - 1
paper-library-business/src/main/java/com/qmth/paper/library/business/service/ExamCourseService.java

@@ -17,7 +17,7 @@ import java.util.List;
  */
 public interface ExamCourseService extends IMppService<ExamCourse> {
 
-    void saveBatchStudentCourse(Long examId, List<ExamStudent> basicStudentList);
+    List<ExamCourse> saveBatchStudentCourse(Long examId, List<ExamStudent> basicStudentList);
 
     void removeByExamIdAndCourseCode(Long examId, String courseCode);
 

+ 3 - 2
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.paper.library.business.bean.result.PaperScanTaskDetailResult;
 import com.qmth.paper.library.business.bean.result.PaperScanTaskResult;
+import com.qmth.paper.library.business.entity.ExamCourse;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
@@ -33,9 +34,9 @@ public interface PaperScanTaskService extends IService<PaperScanTask> {
      */
     void clearScanData(Long paperScanTaskId);
 
-    void addBatchScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamStudent> basicStudentList);
+    void addBatchScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamCourse> examCourses, List<ExamStudent> basicStudentList);
 
-    void removeBySchoolId(Long schoolId);
+    void removeByExamId(Long schoolId);
 
     List<PaperScanTask> listByExamId(Long examId);
 

+ 12 - 2
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamCourseServiceImpl.java

@@ -6,14 +6,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
 import com.qmth.paper.library.business.bean.result.SelectResult;
 import com.qmth.paper.library.business.entity.ExamCourse;
+import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.mapper.ExamCourseMapper;
 import com.qmth.paper.library.business.service.ExamCourseService;
+import com.qmth.paper.library.business.service.PaperScanTaskService;
 import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -30,16 +33,23 @@ import java.util.stream.Collectors;
 @Service
 public class ExamCourseServiceImpl extends MppServiceImpl<ExamCourseMapper, ExamCourse> implements ExamCourseService {
 
+    @Resource
+    private PaperScanTaskService paperScanTaskService;
+
     @Transactional
     @Override
-    public void saveBatchStudentCourse(Long examId, List<ExamStudent> basicStudentList) {
-        this.removeByExamIdAndCourseCode(examId, null);
+    public List<ExamCourse> saveBatchStudentCourse(Long examId, List<ExamStudent> basicStudentList) {
         Map<String, String> stringMap = basicStudentList.stream().collect(Collectors.toMap(ExamStudent::getCourseCode, ExamStudent::getCourseName, (oldValue, newValue) -> oldValue));
         List<ExamCourse> examCourses = new ArrayList<>();
         for (Map.Entry<String, String> entry : stringMap.entrySet()) {
+            PaperScanTask paperScanTask = paperScanTaskService.getByExamIdAndCourseCode(examId, entry.getKey());
+            if (paperScanTask != null) {
+                throw ExceptionResultEnum.ERROR.exception(String.format("课程[%s(%s)]已创建扫描任务,不能导入该课程考生,请手动添加", entry.getValue(), entry.getKey()));
+            }
             examCourses.add(new ExamCourse(examId, entry.getKey(), entry.getValue()));
         }
         this.saveOrUpdateBatchByMultiId(examCourses);
+        return examCourses;
     }
 
     @Override

+ 5 - 6
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamStudentServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.tools.excel.ExcelReader;
 import com.qmth.boot.tools.excel.enums.ExcelType;
+import com.qmth.paper.library.business.entity.ExamCourse;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.mapper.ExamStudentMapper;
 import com.qmth.paper.library.business.service.ExamCourseService;
@@ -194,14 +195,12 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
             List<ExamStudent> basicStudentList = excelReader.getObjectList(ExamStudent.class);
             // 校验excel内容
             validStudentData(semesterId, examId, basicStudentList, storeType, sysUser);
-            // 删除
-            this.removeByExamId(examId);
-            // 保存学生
-            this.saveBatch(basicStudentList);
             // 保存课程
-            examCourseService.saveBatchStudentCourse(examId, basicStudentList);
+            List<ExamCourse> examCourses = examCourseService.saveBatchStudentCourse(examId, basicStudentList);
             // 新建任务
-            paperScanTaskService.addBatchScanTask(examId, recognitionType, storeType, basicStudentList);
+            paperScanTaskService.addBatchScanTask(examId, recognitionType, storeType, examCourses,  basicStudentList);
+            // 保存学生
+            this.saveBatch(basicStudentList);
         } catch (IOException e) {
             throw new RuntimeException(e);
         } catch (Exception e) {

+ 9 - 4
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.paper.library.business.bean.vo.FilePathVo;
 import com.qmth.paper.library.business.bean.vo.PathSequenceVo;
 import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.entity.PaperScanTask;
+import com.qmth.paper.library.business.service.BasicExamService;
 import com.qmth.paper.library.business.service.BusinessCacheService;
 import com.qmth.paper.library.business.service.FileUploadService;
 import com.qmth.paper.library.business.service.PaperLibraryCommonService;
@@ -54,7 +55,9 @@ import java.util.*;
 public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService {
     private final static Logger log = LoggerFactory.getLogger(PaperLibraryCommonServiceImpl.class);
     @Resource
-    private CommonCacheService commonCacheService;
+    private BasicSemesterService basicSemesterService;
+    @Resource
+    private BasicExamService basicExamService;
     @Resource
     private BusinessCacheService businessCacheService;
     @Resource
@@ -266,12 +269,14 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
     @Override
     public PathSequenceVo saveLibraryFile(PaperScanTask paperScanTask, ExamStudent examStudent, UploadFileEnum uploadFileEnum, MultipartFile... files) {
         BasicSchool basicSchool = basicSchoolService.getById(paperScanTask.getSchoolId());
+        BasicExam basicExam = basicExamService.getById(paperScanTask.getExamId());
+        BasicSemester basicSemester = basicSemesterService.getById(basicExam.getSemesterId());
         String courseNameCode = String.format("%s(%s)", paperScanTask.getCourseName(), paperScanTask.getCourseCode());
         String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode);
         if (StoreTypeEnum.ROOM.equals(paperScanTask.getStoreType())) {
-            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode, examStudent.getExamRoom());
+            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getName(), basicSemester.getName(), basicExam.getName(), courseNameCode, examStudent.getExamRoom());
         } else if (StoreTypeEnum.CLASS.equals(paperScanTask.getStoreType())) {
-            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode, examStudent.getClassName());
+            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getName(), basicSemester.getName(), basicExam.getName(), courseNameCode, examStudent.getClassName());
         }
         // 根目录
         List<FilePathVo> objects = new ArrayList<>();
@@ -304,7 +309,7 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
     public PathSequenceVo saveLibraryOtherFile(PaperScanTask paperScanTask, UploadFileEnum uploadFileEnum, MultipartFile... files) {
         BasicSchool basicSchool = basicSchoolService.getById(paperScanTask.getSchoolId());
         String courseNameCode = String.format("%s(%s)", paperScanTask.getCourseName(), paperScanTask.getCourseCode());
-        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode);
+        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode, "other");
         // 根目录
         List<FilePathVo> objects = new ArrayList<>();
         try {

+ 3 - 5
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskServiceImpl.java

@@ -86,9 +86,8 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
 
     @Transactional
     @Override
-    public void addBatchScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamStudent> basicStudentList) {
+    public void addBatchScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamCourse> examCourses, List<ExamStudent> basicStudentList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        List<ExamCourse> examCourses = examCourseService.listByExamId(examId);
         List<PaperScanTask> paperScanTaskList = new ArrayList<>();
         for (ExamCourse examCourse : examCourses) {
             int studentCount = Math.toIntExact(basicStudentList.stream().filter(m -> m.getCourseCode().equals(examCourse.getCourseCode())).count());
@@ -96,14 +95,13 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
             String scanTaskCode = paperLibraryCommonService.getScanTaskCode(schoolId);
             paperScanTaskList.add(new PaperScanTask(schoolId, examId, scanTaskCode, scanTaskName, examCourse.getCourseCode(), examCourse.getCourseName(), recognitionType, storeType, studentCount));
         }
-        this.removeBySchoolId(schoolId);
         this.saveBatch(paperScanTaskList);
     }
 
     @Override
-    public void removeBySchoolId(Long schoolId) {
+    public void removeByExamId(Long examId) {
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId);
+        queryWrapper.lambda().eq(PaperScanTask::getExamId, examId);
         this.remove(queryWrapper);
     }