Pārlūkot izejas kodu

3.2.7 bug修改

xiaofei 1 gadu atpakaļ
vecāks
revīzija
38314c7dbc

+ 3 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskSync.java

@@ -22,7 +22,6 @@ import java.util.Map;
  * <p>
  * <p>
  * 数据同步
  * 数据同步
  * </p>
  * </p>
- *
  */
  */
 @TableName("exam_task_sync")
 @TableName("exam_task_sync")
 public class ExamTaskSync implements Serializable {
 public class ExamTaskSync implements Serializable {
@@ -75,7 +74,7 @@ public class ExamTaskSync implements Serializable {
     /**
     /**
      * 云阅卷考试ID
      * 云阅卷考试ID
      */
      */
-    @TableField("third_relate_id")
+    @TableField(value = "third_relate_id", updateStrategy = FieldStrategy.IGNORED)
     private Integer thirdRelateId;
     private Integer thirdRelateId;
     /**
     /**
      * 同步状态
      * 同步状态
@@ -104,7 +103,7 @@ public class ExamTaskSync implements Serializable {
     public ExamTaskSync() {
     public ExamTaskSync() {
     }
     }
 
 
-    public ExamTaskSync(Long schoolId, Long examId, String courseCode, String paperNumber, String paperType, String totalPaperType, String orgCode, Integer thirdRelateId, ExamTaskSyncStatusEnum syncStatus, Long syncUserId, Long syncStartTime, Long syncEndTime) {
+    public ExamTaskSync(Long schoolId, Long examId, String courseCode, String paperNumber, String paperType, String totalPaperType, String orgCode, Long thirdRelateId, ExamTaskSyncStatusEnum syncStatus, Long syncUserId, Long syncStartTime, Long syncEndTime) {
         this.id = SystemConstant.getDbUuid();
         this.id = SystemConstant.getDbUuid();
         this.schoolId = schoolId;
         this.schoolId = schoolId;
         this.examId = examId;
         this.examId = examId;
@@ -113,7 +112,7 @@ public class ExamTaskSync implements Serializable {
         this.paperType = paperType;
         this.paperType = paperType;
         this.totalPaperType = totalPaperType;
         this.totalPaperType = totalPaperType;
         this.orgCode = orgCode;
         this.orgCode = orgCode;
-        this.thirdRelateId = thirdRelateId;
+        this.thirdRelateId = thirdRelateId != null ? Math.toIntExact(thirdRelateId) : null;
         this.syncStatus = syncStatus;
         this.syncStatus = syncStatus;
         this.syncUserId = syncUserId;
         this.syncUserId = syncUserId;
         this.syncStartTime = syncStartTime;
         this.syncStartTime = syncStartTime;

+ 18 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.ExamDetailCourseDto;
 import com.qmth.distributed.print.business.bean.dto.ExamDetailCourseDto;
+import com.qmth.distributed.print.business.bean.dto.RelatePaperDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.bean.marking.status.ExamPaperStructureStatus;
 import com.qmth.distributed.print.business.bean.marking.status.ExamPaperStructureStatus;
@@ -134,11 +135,17 @@ public class DataSyncServiceImpl implements DataSyncService {
 
 
                 // 前置方法已经校验过各课程下是否有学院代码
                 // 前置方法已经校验过各课程下是否有学院代码
                 // 同步考试
                 // 同步考试
-                thirdRelateId = saveExam(schoolId, objectId, orgCode, thirdRelateId, thirdRelateName, examTime);
+                String saveExamErrorMessage = null;
+                try {
+                    thirdRelateId = saveExam(schoolId, objectId, orgCode, thirdRelateId, thirdRelateName, examTime);
+                } catch (Exception e) {
+                    saveExamErrorMessage = e.getMessage();
+                }
 
 
                 Long examTaskId = Long.valueOf(syncExamTaskDto.getExamTaskId());
                 Long examTaskId = Long.valueOf(syncExamTaskDto.getExamTaskId());
                 ExamTask examTask = examTaskService.getById(examTaskId);
                 ExamTask examTask = examTaskService.getById(examTaskId);
 
 
+                Set<String> errorMsgSet = new HashSet<>();
                 for (String paperType : syncExamTaskDto.getPaperType().split(",")) {
                 for (String paperType : syncExamTaskDto.getPaperType().split(",")) {
                     ExamTaskSync examTaskSync = examTaskSyncService.getBySchoolIdAndOrgCodeAndPaperNumberAndPaperType(schoolId, examTask.getExamId(), orgCode, examTask.getPaperNumber(), paperType);
                     ExamTaskSync examTaskSync = examTaskSyncService.getBySchoolIdAndOrgCodeAndPaperNumberAndPaperType(schoolId, examTask.getExamId(), orgCode, examTask.getPaperNumber(), paperType);
                     if (examTaskSync != null && ExamTaskSyncStatusEnum.STARTING.equals(examTaskSync.getSyncStatus())) {
                     if (examTaskSync != null && ExamTaskSyncStatusEnum.STARTING.equals(examTaskSync.getSyncStatus())) {
@@ -146,9 +153,9 @@ public class DataSyncServiceImpl implements DataSyncService {
                     }
                     }
                     ExamTaskSyncStatusEnum syncStatus = ExamTaskSyncStatusEnum.STARTING;
                     ExamTaskSyncStatusEnum syncStatus = ExamTaskSyncStatusEnum.STARTING;
                     if (examTaskSync == null) {
                     if (examTaskSync == null) {
-                        examTaskSync = new ExamTaskSync(schoolId, examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), paperType, syncExamTaskDto.getPaperType(), orgCode, Math.toIntExact(thirdRelateId), syncStatus, sysUser.getId(), System.currentTimeMillis(), null);
+                        examTaskSync = new ExamTaskSync(schoolId, examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), paperType, syncExamTaskDto.getPaperType(), orgCode, thirdRelateId, syncStatus, sysUser.getId(), System.currentTimeMillis(), null);
                     } else {
                     } else {
-                        examTaskSync.setThirdRelateId(Math.toIntExact(thirdRelateId));
+                        examTaskSync.setThirdRelateId(thirdRelateId != null ? Math.toIntExact(thirdRelateId) : null);
                         examTaskSync.setSyncStatus(syncStatus);
                         examTaskSync.setSyncStatus(syncStatus);
                         examTaskSync.setSyncStartTime(System.currentTimeMillis());
                         examTaskSync.setSyncStartTime(System.currentTimeMillis());
                         examTaskSync.setSyncUserId(sysUser.getId());
                         examTaskSync.setSyncUserId(sysUser.getId());
@@ -159,6 +166,10 @@ public class DataSyncServiceImpl implements DataSyncService {
                     String errorMsg = null;
                     String errorMsg = null;
                     ExamTaskSyncStatusEnum taskSyncStatusEnum = null;
                     ExamTaskSyncStatusEnum taskSyncStatusEnum = null;
                     try {
                     try {
+                        // 考试未创建成功,则抛出异常,把数据状态改为失败
+                        if (thirdRelateId == null && StringUtils.isNotBlank(saveExamErrorMessage)) {
+                            throw ExceptionResultEnum.ERROR.exception(saveExamErrorMessage);
+                        }
                         List<Long> printPlanIds = Arrays.asList(syncExamTaskDto.getPrintPlanIds().split(",")).stream().map(m -> Long.parseLong(m)).collect(Collectors.toList());
                         List<Long> printPlanIds = Arrays.asList(syncExamTaskDto.getPrintPlanIds().split(",")).stream().map(m -> Long.parseLong(m)).collect(Collectors.toList());
                         List<ExamDetailCourseDto> examDetailCourseList = examDetailCourseService.listByPrintPlanIdAndExamTaskId(printPlanIds, examTaskId, paperType);
                         List<ExamDetailCourseDto> examDetailCourseList = examDetailCourseService.listByPrintPlanIdAndExamTaskId(printPlanIds, examTaskId, paperType);
                         // 同步考生
                         // 同步考生
@@ -179,11 +190,11 @@ public class DataSyncServiceImpl implements DataSyncService {
                             saveStudent(schoolId, thirdRelateId, syncExamStudentDtoList);
                             saveStudent(schoolId, thirdRelateId, syncExamStudentDtoList);
                         }
                         }
 
 
-                        // 同步题卡
                         // 同步题卡(只上传当前卷型)
                         // 同步题卡(只上传当前卷型)
                         cardUpload(schoolId, thirdRelateId, examTask, paperType);
                         cardUpload(schoolId, thirdRelateId, examTask, paperType);
                     } catch (Exception e) {
                     } catch (Exception e) {
                         errorMsg = e.getMessage();
                         errorMsg = e.getMessage();
+                        errorMsgSet.add(errorMsg);
                         taskSyncStatusEnum = ExamTaskSyncStatusEnum.FAIL;
                         taskSyncStatusEnum = ExamTaskSyncStatusEnum.FAIL;
                     } finally {
                     } finally {
                         examTaskSync.setErrorMsg(errorMsg);
                         examTaskSync.setErrorMsg(errorMsg);
@@ -192,10 +203,9 @@ public class DataSyncServiceImpl implements DataSyncService {
                     }
                     }
                     examTaskSync.setSyncEndTime(System.currentTimeMillis());
                     examTaskSync.setSyncEndTime(System.currentTimeMillis());
                     examTaskSyncService.saveOrUpdate(examTaskSync);
                     examTaskSyncService.saveOrUpdate(examTaskSync);
-
-                    if (StringUtils.isNotBlank(errorMsg)) {
-                        throw ExceptionResultEnum.ERROR.exception(errorMsg);
-                    }
+                }
+                if (!CollectionUtils.isEmpty(errorMsgSet)) {
+                    throw ExceptionResultEnum.ERROR.exception(String.join(";", errorMsgSet));
                 }
                 }
                 // 任务结果
                 // 任务结果
                 result = TaskResultEnum.SUCCESS;
                 result = TaskResultEnum.SUCCESS;