Browse Source

3.4.4 update-20250226,联调bug修复

xiaofei 3 tháng trước cách đây
mục cha
commit
8d0090ce12
17 tập tin đã thay đổi với 179 bổ sung39 xóa
  1. 1 1
      distributed-print-business/src/main/resources/mapper/ConditionMapper.xml
  2. 2 0
      distributed-print/install/mysql/upgrade/3.4.4.sql
  3. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkClassController.java
  4. 4 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkQuestionSubjectiveController.java
  5. 5 10
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkUserQuestionController.java
  6. 10 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/MarkUser.java
  7. 13 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkQuestion.java
  8. 63 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/mark/DoubleMarkParam.java
  9. 45 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/marker/MarkerAddParam.java
  10. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionService.java
  11. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserQuestionService.java
  12. 6 5
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java
  13. 4 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  14. 13 12
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserQuestionServiceImpl.java
  15. 3 1
      teachcloud-mark/src/main/resources/mapper/MarkUserQuestionMapper.xml
  16. 1 1
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/PrintFinishService.java
  17. 4 2
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

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

@@ -379,7 +379,7 @@
                 </if>
                 AND exists (select 1
                 FROM
-                mark_user_qeustion mug
+                mark_user_question mug
                 LEFT JOIN
                 mark_question mg ON mug.exam_id = mg.exam_id
                 AND mug.paper_number = mg.paper_number

+ 2 - 0
distributed-print/install/mysql/upgrade/3.4.4.sql

@@ -101,3 +101,5 @@ UPDATE `sys_privilege` SET `related` = '672,902,903,904,905,906,907,908,909,910,
 UPDATE `sys_privilege` SET `name` = '单双评设置', `url` = '/api/admin/mark/question/subjective/double/mark/update' WHERE (`id` = '905');
 UPDATE `sys_privilege` SET `url` = '/api/admin/mark/question/subjective/picture/config/update' WHERE (`id` = '962');
 UPDATE `sys_privilege` SET `url` = '/api/admin/mark/class/update' WHERE (`id` = '963');
+
+ALTER TABLE `mark_question` ADD COLUMN `course_id` BIGINT(20) NULL COMMENT '课程ID' AFTER `exam_id`;

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkClassController.java

@@ -36,7 +36,7 @@ public class MarkClassController extends BaseController {
      * 开启/关闭分班阅
      */
     @ApiOperation(value = "开启/关闭分班阅")
-    @RequestMapping(value = "/update_open_mark_class", method = RequestMethod.POST)
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
     @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "开启/关闭分班阅操作,考试ID:{{examId}}、试卷编号:{{paperNumber}}、是否开启分班阅:{{openMarkClass}}")
     public Result delete(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                          @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkQuestionSubjectiveController.java

@@ -7,10 +7,10 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.bean.params.mark.group.QuestionPictureConfigParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.mark.bean.mark.DoubleMarkParam;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupQuestionsDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupSummaryProgressDto;
@@ -69,9 +69,9 @@ public class MarkQuestionSubjectiveController extends BaseController {
     @ApiOperation(value = "评卷方式设置(单双评)")
     @RequestMapping(value = "/double/mark/update", method = RequestMethod.POST)
     @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "设置评卷区操作,考试ID:{{examId}}、试卷编号:{{paperNumber}}、分组号:{{groupNumber}}")
-    public Result saveDoubleMark(MarkQuestion markQuestion) {
-        validMarkPaperForMark(markQuestion.getExamId(), markQuestion.getPaperNumber());
-        markQuestionService.updateDoubleMarkByQuestionId(markQuestion);
+    public Result saveDoubleMark(@RequestBody DoubleMarkParam doubleMarkParam) {
+        validMarkPaperForMark(doubleMarkParam.getExamId(), doubleMarkParam.getPaperNumber());
+        markQuestionService.updateDoubleMarkByQuestionId(doubleMarkParam);
         return ResultUtil.ok(true);
     }
 

+ 5 - 10
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkUserQuestionController.java

@@ -9,16 +9,14 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.mark.bean.marker.MarkerAddParam;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkUserGroupProgressDto;
 import com.qmth.teachcloud.mark.entity.MarkUserQuestion;
 import com.qmth.teachcloud.mark.service.MarkUserQuestionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
@@ -74,12 +72,9 @@ public class MarkUserQuestionController extends BaseController {
     @ApiOperation(value = "绑定评卷员")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "绑定评卷员操作,考试ID:{{examId}}、试卷编号:{{paperNumber}}、分组号:{{groupNumber}}、评卷员ID集合:{{userIds}}")
-    public Result addMarker(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
-                            @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
-                            @ApiParam(value = "题目", required = true) @RequestParam List<Long> questionIds,
-                            @ApiParam(value = "评卷员ID集合", required = true) @RequestParam List<Long> userIds) {
-        validMarkPaperForMark(examId, paperNumber);
-        markUserQuestionService.addMarkUserQuestion(examId, paperNumber, questionIds, userIds);
+    public Result addMarker(@RequestBody MarkerAddParam markerAddParam) {
+        validMarkPaperForMark(markerAddParam.getExamId(), markerAddParam.getPaperNumber());
+        markUserQuestionService.addMarkUserQuestion(markerAddParam);
         return ResultUtil.ok(true);
     }
 

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/MarkUser.java

@@ -5,12 +5,22 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 
 public class MarkUser {
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long markUserQuestionId;
     @JsonSerialize(using = ToStringSerializer.class)
     private Long userId;
     private String loginName;
     private String name;
     private String orgName;
 
+    public Long getMarkUserQuestionId() {
+        return markUserQuestionId;
+    }
+
+    public void setMarkUserQuestionId(Long markUserQuestionId) {
+        this.markUserQuestionId = markUserQuestionId;
+    }
+
     public Long getUserId() {
         return userId;
     }

+ 13 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkQuestion.java

@@ -36,6 +36,10 @@ public class MarkQuestion extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "考试ID")
     private Long examId;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程ID")
+    private Long courseId;
+
     @ApiModelProperty(value = "试卷类型")
     private String paperNumber;
     @ApiModelProperty(value = "试卷卷型")
@@ -125,6 +129,15 @@ public class MarkQuestion extends BaseEntity implements Serializable {
     public void setExamId(Long examId) {
         this.examId = examId;
     }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getPaperNumber() {
         return paperNumber;
     }

+ 63 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/mark/DoubleMarkParam.java

@@ -0,0 +1,63 @@
+package com.qmth.teachcloud.mark.bean.mark;
+
+import com.qmth.teachcloud.common.enums.ScorePolicy;
+
+public class DoubleMarkParam {
+
+    private Long questionId;
+    private Long examId;
+    private String paperNumber;
+    private Double doubleRate;
+
+    private Double arbitrateThreshold;
+
+    private ScorePolicy scorePolicy;
+
+    public Long getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(Long questionId) {
+        this.questionId = questionId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public Double getDoubleRate() {
+        return doubleRate;
+    }
+
+    public void setDoubleRate(Double doubleRate) {
+        this.doubleRate = doubleRate;
+    }
+
+    public Double getArbitrateThreshold() {
+        return arbitrateThreshold;
+    }
+
+    public void setArbitrateThreshold(Double arbitrateThreshold) {
+        this.arbitrateThreshold = arbitrateThreshold;
+    }
+
+    public ScorePolicy getScorePolicy() {
+        return scorePolicy;
+    }
+
+    public void setScorePolicy(ScorePolicy scorePolicy) {
+        this.scorePolicy = scorePolicy;
+    }
+}

+ 45 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/marker/MarkerAddParam.java

@@ -0,0 +1,45 @@
+package com.qmth.teachcloud.mark.bean.marker;
+
+import com.qmth.teachcloud.common.bean.dto.mark.MarkUser;
+
+import java.util.List;
+
+public class MarkerAddParam {
+
+    private Long examId;
+    private String paperNumber;
+    private List<Long> questionIds;
+    private List<MarkUser> markers;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public List<Long> getQuestionIds() {
+        return questionIds;
+    }
+
+    public void setQuestionIds(List<Long> questionIds) {
+        this.questionIds = questionIds;
+    }
+
+    public List<MarkUser> getMarkers() {
+        return markers;
+    }
+
+    public void setMarkers(List<MarkUser> markers) {
+        this.markers = markers;
+    }
+}

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.params.mark.group.QuestionPictureConfigParams;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
+import com.qmth.teachcloud.mark.bean.mark.DoubleMarkParam;
 import com.qmth.teachcloud.mark.dto.mark.MarkQuestionAnswerVo;
 import com.qmth.teachcloud.mark.dto.mark.SubjectiveAnswerFileDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
@@ -118,5 +119,5 @@ public interface MarkQuestionService extends IService<MarkQuestion> {
 
     void updateMarkedCount(Long questionId, int count);
 
-    void updateDoubleMarkByQuestionId(MarkQuestion markQuestion);
+    void updateDoubleMarkByQuestionId(DoubleMarkParam doubleMarkParam);
 }

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserQuestionService.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.teachcloud.common.enums.mark.MarkMode;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.mark.bean.marker.MarkerAddParam;
 import com.qmth.teachcloud.mark.dto.mark.entrance.MarkEntranceDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityChartDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityDto;
@@ -32,7 +33,7 @@ public interface MarkUserQuestionService extends IService<MarkUserQuestion> {
     IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber,
             Long questionId, String loginName, String className, Integer pageNumber, Integer pageSize);
 
-    void addMarkUserQuestion(Long examId, String paperNumber, List<Long> questionIds, List<Long> userIds);
+    void addMarkUserQuestion(MarkerAddParam markerAddParam);
 
     void setTopCount(List<Long> markUserQuestionIds, Integer topCount);
 

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

@@ -22,6 +22,7 @@ import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.bean.mark.DoubleMarkParam;
 import com.qmth.teachcloud.mark.dto.mark.MarkQuestionAnswerVo;
 import com.qmth.teachcloud.mark.dto.mark.SubjectiveAnswerFileDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.*;
@@ -732,12 +733,12 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
     }
 
     @Override
-    public void updateDoubleMarkByQuestionId(MarkQuestion markQuestion) {
+    public void updateDoubleMarkByQuestionId(DoubleMarkParam doubleMarkParam) {
         UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(MarkQuestion::getDoubleRate, markQuestion.getDoubleRate())
-                .set(MarkQuestion::getArbitrateThreshold, markQuestion.getArbitrateThreshold())
-                .set(MarkQuestion::getScorePolicy, markQuestion.getScorePolicy())
-                .eq(MarkQuestion::getId, markQuestion.getId());
+        updateWrapper.lambda().set(MarkQuestion::getDoubleRate, doubleMarkParam.getDoubleRate())
+                .set(MarkQuestion::getArbitrateThreshold, doubleMarkParam.getArbitrateThreshold())
+                .set(MarkQuestion::getScorePolicy, doubleMarkParam.getScorePolicy())
+                .eq(MarkQuestion::getId, doubleMarkParam.getQuestionId());
         this.update(updateWrapper);
     }
 }

+ 4 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -442,6 +442,8 @@ public class MarkServiceImpl implements MarkService {
                     markTask.setCourseId(student.getCourseId());
                     markTask.setPaperNumber(student.getPaperNumber());
                     markTask.setQuestionId(markQuestion.getId());
+                    markTask.setMainNumber(markQuestion.getMainNumber());
+                    markTask.setSubNumber(markQuestion.getSubNumber());
                     markTask.setStudentId(student.getId());
                     markTask.setBasicStudentId(student.getBasicStudentId());
                     markTask.setStudentCode(student.getStudentCode());
@@ -471,6 +473,8 @@ public class MarkServiceImpl implements MarkService {
                             markTask.setCourseId(student.getCourseId());
                             markTask.setPaperNumber(student.getPaperNumber());
                             markTask.setQuestionId(markQuestion.getId());
+                            markTask.setMainNumber(markQuestion.getMainNumber());
+                            markTask.setSubNumber(markQuestion.getSubNumber());
                             markTask.setStudentId(student.getId());
                             markTask.setBasicStudentId(student.getBasicStudentId());
                             markTask.setStudentCode(student.getStudentCode());

+ 13 - 12
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserQuestionServiceImpl.java

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.common.enums.mark.MarkMode;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.bean.marker.MarkerAddParam;
 import com.qmth.teachcloud.mark.dto.mark.entrance.MarkEntranceDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityChartDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityDto;
@@ -126,14 +127,14 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
     }
 
     @Override
-    public void addMarkUserQuestion(Long examId, String paperNumber, List<Long> questionIds, List<Long> userIds) {
-        if (CollectionUtils.isNotEmpty(userIds)) {
+    public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
+        if (CollectionUtils.isNotEmpty(markerAddParam.getMarkers())) {
             List<MarkUserQuestion> markUserGroups = new ArrayList<>();
-            for (Long userId : userIds) {
-                for (Long questionId : questionIds) {
-                    MarkUserQuestion markUserGroup = this.getByExamIdAndPaperNumberAndQuestionIdAndUserId(examId, paperNumber, questionId, userId);
+            for (MarkUser markUser : markerAddParam.getMarkers()) {
+                for (Long questionId : markerAddParam.getQuestionIds()) {
+                    MarkUserQuestion markUserGroup = this.getByExamIdAndPaperNumberAndQuestionIdAndUserId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, markUser.getUserId());
                     if (markUserGroup == null) {
-                        markUserGroups.add(new MarkUserQuestion(examId, paperNumber, questionId, userId));
+                        markUserGroups.add(new MarkUserQuestion(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, markUser.getUserId()));
                     } else if (!markUserGroup.getEnable()) {
                         markUserGroup.setEnable(true);
                         markUserGroups.add(markUserGroup);
@@ -174,12 +175,12 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
 //        if (count > 0) {
 //            throw ExceptionResultEnum.ERROR.exception("删除评卷员失败,该评卷员已开始评卷");
 //        } else {
-            // 先回收,再删除
-            releaseMarker(Arrays.asList(markUserQuestion.getId()));
-            // 逻辑解绑
-            UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(MarkUserQuestion::getEnable, false).eq(MarkUserQuestion::getId, markUserQuestion.getId());
-            this.update(updateWrapper);
+        // 先回收,再删除
+        releaseMarker(Arrays.asList(markUserQuestion.getId()));
+        // 逻辑解绑
+        UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkUserQuestion::getEnable, false).eq(MarkUserQuestion::getId, markUserQuestion.getId());
+        this.update(updateWrapper);
 //        }
     }
 

+ 3 - 1
teachcloud-mark/src/main/resources/mapper/MarkUserQuestionMapper.xml

@@ -66,7 +66,9 @@
     <select id="listGroupUserByExamIdAndPaperNumberAndQuestionId"
             resultType="com.qmth.teachcloud.common.bean.dto.mark.MarkUser">
         SELECT
-            distinct su.id userId,
+            distinct
+            mug.id markUserQuestionId,
+            su.id userId,
             su.login_name loginName,
             su.real_name name,
             so.name orgName

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

@@ -20,7 +20,7 @@ public interface PrintFinishService {
 
     ScanAnswerCard insertScanAnswerCard(ExamDetailCourseInitMarkDto dto, String cardId, String content);
 
-    void insertMarkQuestion(Long examId, String paperNumber, String content, List<PaperInfoVo> paperInfoVoList);
+    void insertMarkQuestion(Long examId, Long courseId, String paperNumber, String content, List<PaperInfoVo> paperInfoVoList);
 
     void insertPaperAnswerFile(Long examId, String paperNumber, Integer serialNumber, Long paperId);
 

+ 4 - 2
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -163,7 +163,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                     continue;
                 }
                 // 解析卡格式中试卷结构并保存
-                this.insertMarkQuestion(dto.getExamId(), dto.getPaperNumber(), examCard.getContent(), paperInfoVoList);
+                this.insertMarkQuestion(dto.getExamId(), dto.getCourseId(), dto.getPaperNumber(), examCard.getContent(), paperInfoVoList);
                 // 生成并保存卡格式文件(后缀为.json)
                 ScanAnswerCard scanAnswerCard = this.insertScanAnswerCard(dto, cardId, examCard.getContent());
                 if (scanAnswerCard != null) {
@@ -248,7 +248,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
 
     @Transactional
     @Override
-    public void insertMarkQuestion(Long examId, String paperNumber, String content, List<PaperInfoVo> paperInfoVoList) {
+    public void insertMarkQuestion(Long examId, Long courseId, String paperNumber, String content, List<PaperInfoVo> paperInfoVoList) {
         try {
             List<Struct> structList = CardParseUtils.parseCardContent(content);
             if (CollectionUtils.isEmpty(structList)) {
@@ -276,6 +276,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                     MarkQuestion markQuestion = new MarkQuestion();
                     markQuestion.setId(SystemConstant.getDbUuid());
                     markQuestion.setExamId(examId);
+                    markQuestion.setCourseId(courseId);
                     markQuestion.setPaperNumber(paperNumber);
                     markQuestion.setObjective(struct.getObjective());
                     markQuestion.setMainNumber(struct.getMainNumber());
@@ -285,6 +286,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                     markQuestion.setQuestionType(struct.getType());
                     markQuestion.setPaperIndex(struct.getPaperIndex());
                     markQuestion.setPageIndex(struct.getPageIndex());
+                    markQuestion.setDoubleRate(0D);// 单评为0,双评为1
                     if (struct.getScore() != null) {
                         markQuestion.setTotalScore(struct.getScore());
                         // 间隔分(整数默认1,小数默认0.5)