xiaofei 1 年間 前
コミット
142f92d690

+ 21 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/WorkController.java

@@ -1,18 +1,25 @@
 package com.qmth.distributed.print.api;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.WorkResult;
+import com.qmth.distributed.print.business.entity.ExamTaskDetail;
+import com.qmth.distributed.print.business.service.ExamTaskDetailService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.GradeInitializeService;
+import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
+import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
+import com.qmth.teachcloud.common.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.service.MarkPaperService;
 import io.swagger.annotations.*;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -22,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
+import java.util.List;
 
 /**
  * @Description: 工作台 前端控制器
@@ -32,13 +40,15 @@ import javax.validation.constraints.Min;
  */
 @Api(tags = "工作台Controller")
 @RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX  + SystemConstant.PREFIX_URL_WORK)
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_WORK)
 @Validated
 public class WorkController {
 
     @Resource
     private ExamTaskService examTaskService;
     @Resource
+    private ExamTaskDetailService examTaskDetailService;
+    @Resource
     private MarkPaperService markPaperService;
     @Resource
     private GradeInitializeService gradeInitializeService;
@@ -80,7 +90,16 @@ public class WorkController {
     @RequestMapping(value = "/structure/task/ready", method = RequestMethod.POST)
     public Result list(@RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(markPaperService.listPaperSetting(null, null, null, false, pageNumber, pageSize));
+        Long schoolId = Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString());
+        IPage<MarkSettingDto> markSettingDtoIPage = markPaperService.listPaperSetting(null, null, null, false, pageNumber, pageSize);
+        for (MarkSettingDto record : markSettingDtoIPage.getRecords()) {
+            ExamTaskDetail examTaskDetail = examTaskDetailService.findByExamIdAndCourseCodeAndPaperNumber(schoolId, record.getExamId(), record.getCourseCode(), record.getPaperNumber());
+            List<PaperInfoVo> paperInfoVos = ExamTaskUtil.parsePaperAttachmentPath(examTaskDetail.getPaperAttachmentIds(), record.getPaperType());
+            if (CollectionUtils.isNotEmpty(paperInfoVos)) {
+                record.setCardId(paperInfoVos.get(0).getCardId());
+            }
+        }
+        return ResultUtil.ok(markSettingDtoIPage);
     }
 
     /**

+ 21 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkSettingController.java

@@ -3,7 +3,12 @@ package com.qmth.distributed.print.api.mark;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.entity.ExamTaskDetail;
+import com.qmth.distributed.print.business.service.ExamTaskDetailService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
+import com.qmth.teachcloud.common.util.ExamTaskUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -17,12 +22,14 @@ import com.qmth.teachcloud.mark.service.MarkTaskService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
+import java.util.List;
 
 /**
  * <p>
@@ -39,9 +46,10 @@ public class MarkSettingController {
 
     @Resource
     private MarkPaperService markPaperService;
-
     @Resource
     private MarkTaskService markTaskService;
+    @Resource
+    private ExamTaskDetailService examTaskDetailService;
 
     /**
      * 评卷设置数据列表
@@ -54,7 +62,15 @@ public class MarkSettingController {
                        @ApiParam(value = "提交状态") @RequestParam(required = false) Boolean groupStatus,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        Long schoolId = Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString());
         IPage<MarkSettingDto> markSettingDtoIPage = markPaperService.listPaperSetting(examId, courseCode, paperNumber, groupStatus, pageNumber, pageSize);
+        for (MarkSettingDto record : markSettingDtoIPage.getRecords()) {
+            ExamTaskDetail examTaskDetail = examTaskDetailService.findByExamIdAndCourseCodeAndPaperNumber(schoolId, record.getExamId(), record.getCourseCode(), record.getPaperNumber());
+            List<PaperInfoVo> paperInfoVos = ExamTaskUtil.parsePaperAttachmentPath(examTaskDetail.getPaperAttachmentIds(), record.getPaperType());
+            if (CollectionUtils.isNotEmpty(paperInfoVos)) {
+                record.setCardId(paperInfoVos.get(0).getCardId());
+            }
+        }
         return ResultUtil.ok(markSettingDtoIPage);
     }
 
@@ -112,10 +128,10 @@ public class MarkSettingController {
     @ApiOperation(value = "成绩检查数据列表")
     @RequestMapping(value = "/scoreList", method = RequestMethod.POST)
     public Result scoreList(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
-                       @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
-                       @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
-                       @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                       @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+                            @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
+                            @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
+                            @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                            @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         IPage<CheckScoreListDto> scoreListDtoIPage = markPaperService.listStudentScoreList(examId, courseCode, paperNumber, pageNumber, pageSize);
         return ResultUtil.ok(scoreListDtoIPage);
     }

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysUser.java

@@ -112,6 +112,8 @@ public class SysUser extends BaseEntity implements Serializable {
     @ApiModelProperty("历史用户名")
     private String historicName;
 
+    private String uiSetting;
+
     @TableField(exist = false)
     private String orgName;
 
@@ -269,4 +271,12 @@ public class SysUser extends BaseEntity implements Serializable {
     public void setOrgName(String orgName) {
         this.orgName = orgName;
     }
+
+    public String getUiSetting() {
+        return uiSetting;
+    }
+
+    public void setUiSetting(String uiSetting) {
+        this.uiSetting = uiSetting;
+    }
 }

+ 3 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/StudentObjectiveAnswerDto.java

@@ -8,7 +8,7 @@ public class StudentObjectiveAnswerDto {
     private Integer subNumber;
     private String answer;
     private Boolean exist;
-    private QuestionType questionType;
+    private Integer questionType;
 
     public Integer getMainNumber() {
         return mainNumber;
@@ -42,11 +42,11 @@ public class StudentObjectiveAnswerDto {
         this.exist = exist;
     }
 
-    public QuestionType getQuestionType() {
+    public Integer getQuestionType() {
         return questionType;
     }
 
-    public void setQuestionType(QuestionType questionType) {
+    public void setQuestionType(Integer questionType) {
         this.questionType = questionType;
     }
 }

+ 12 - 11
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkQuestion.java

@@ -2,9 +2,7 @@ package com.qmth.teachcloud.mark.entity;
 
 import java.io.Serializable;
 
-import com.baomidou.mybatisplus.annotation.EnumValue;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.mark.enums.ObjectivePolicy;
@@ -40,9 +38,10 @@ public class MarkQuestion implements Serializable {
     private String paperNumber;
 
     @ApiModelProperty(value = "是否客观题")
-    private Boolean isObjective;
+    private Boolean objective;
 
     @ApiModelProperty(value = "分组序号")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer groupNumber;
 
     @ApiModelProperty(value = "大题号")
@@ -69,7 +68,7 @@ public class MarkQuestion implements Serializable {
     private ObjectivePolicy objectivePolicy;
 
     @ApiModelProperty(value = "题型")
-    private QuestionType questionType;
+    private Integer questionType;
     
     private Integer paperIndex;
     
@@ -98,13 +97,15 @@ public class MarkQuestion implements Serializable {
     public void setPaperNumber(String paperNumber) {
         this.paperNumber = paperNumber;
     }
+
     public Boolean getObjective() {
-        return isObjective;
+        return objective;
     }
 
-    public void setObjective(Boolean isObjective) {
-        this.isObjective = isObjective;
+    public void setObjective(Boolean objective) {
+        this.objective = objective;
     }
+
     public Integer getGroupNumber() {
         return groupNumber;
     }
@@ -170,11 +171,11 @@ public class MarkQuestion implements Serializable {
     public void setObjectivePolicy(ObjectivePolicy objectivePolicy) {
         this.objectivePolicy = objectivePolicy;
     }
-    public QuestionType getQuestionType() {
+    public Integer getQuestionType() {
         return questionType;
     }
 
-    public void setQuestionType(QuestionType questionType) {
+    public void setQuestionType(Integer questionType) {
         this.questionType = questionType;
     }
     public String getName() {
@@ -210,7 +211,7 @@ public class MarkQuestion implements Serializable {
             "id=" + id +
             ", examId=" + examId +
             ", paperNumber=" + paperNumber +
-            ", isObjective=" + isObjective +
+            ", objective=" + objective +
             ", groupNumber=" + groupNumber +
             ", mainNumber=" + mainNumber +
             ", subNumber=" + subNumber +

+ 24 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/params/MarkObjectiveQuestionParams.java

@@ -10,13 +10,32 @@ import java.util.List;
  */
 public class MarkObjectiveQuestionParams implements Serializable {
 
-    private List<MarkQuestion> questions;
+    private Long examId;
+    private String paperNumber;
+    private List<MarkQuestion> objectiveInfo;
 
-    public List<MarkQuestion> getQuestions() {
-        return questions;
+    public Long getExamId() {
+        return examId;
     }
 
-    public void setQuestions(List<MarkQuestion> questions) {
-        this.questions = questions;
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public List<MarkQuestion> getObjectiveInfo() {
+        return objectiveInfo;
+    }
+
+    public void setObjectiveInfo(List<MarkQuestion> objectiveInfo) {
+        this.objectiveInfo = objectiveInfo;
     }
 }
+

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

@@ -50,4 +50,6 @@ public interface MarkQuestionService extends IService<MarkQuestion> {
 			Integer paperIndex, Integer pageIndex);
 
     MarkQuestionDto pageQuestionsByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType, boolean canCreate);
+
+    void updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(Integer newGroupNumber, Long examId, String paperNumber, Integer groupNumber);
 }

+ 41 - 13
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -101,11 +101,30 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
     @Transactional
     @Override
     public void deleteGroupByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
-        UpdateWrapper<MarkGroup> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().eq(MarkGroup::getExamId, examId)
+        // 删除分组
+        UpdateWrapper<MarkGroup> markGroupUpdateWrapper = new UpdateWrapper<>();
+        markGroupUpdateWrapper.lambda().eq(MarkGroup::getExamId, examId)
                 .eq(MarkGroup::getPaperNumber, paperNumber)
                 .eq(MarkGroup::getNumber, groupNumber);
-        this.remove(updateWrapper);
+        this.remove(markGroupUpdateWrapper);
+        // 删除评卷员
+        UpdateWrapper<MarkUserGroup> markUserGroupUpdateWrapper = new UpdateWrapper<>();
+        markUserGroupUpdateWrapper.lambda().eq(MarkUserGroup::getExamId, examId)
+                .eq(MarkUserGroup::getPaperNumber, paperNumber)
+                .eq(MarkUserGroup::getGroupNumber, groupNumber);
+        markUserGroupService.remove(markUserGroupUpdateWrapper);
+
+        // 清除题目分组号
+        UpdateWrapper<MarkQuestion> markQuestionUpdateWrapper = new UpdateWrapper<>();
+        markQuestionUpdateWrapper.lambda().set(MarkQuestion::getGroupNumber, null)
+                .eq(MarkQuestion::getExamId, examId)
+                .eq(MarkQuestion::getPaperNumber, paperNumber)
+                .eq(MarkQuestion::getGroupNumber, groupNumber);
+        markQuestionService.update(markQuestionUpdateWrapper);
+
+        // 更新MarkPaper中groupStatus
+        markPaperService.updateGroupStatusByExamIdAndPaperNumber(false, examId, paperNumber);
+
     }
 
     @Override
@@ -294,20 +313,22 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
             throw ExceptionResultEnum.ERROR.exception("请选择评卷员");
         }
         List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
+        List<Long> userIds = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(markUserGroupList)) {
-            List<Long> userIds = markUserGroupList.stream().map(MarkUserGroup::getUserId).collect(Collectors.toList());
-            List<MarkUserGroup> markUserGroups = new ArrayList<>();
-            for (MarkUser marker : markGroupDto.getMarkers()) {
-                if (userIds.contains(marker.getUserId())) {
-                    continue;
-                }
-                markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId(), markPaper.getMarkMode()));
-            }
-            if (CollectionUtils.isNotEmpty(markUserGroups)) {
-                markUserGroupService.saveBatch(markUserGroups);
+            userIds = markUserGroupList.stream().map(MarkUserGroup::getUserId).collect(Collectors.toList());
+        }
+        List<MarkUserGroup> markUserGroups = new ArrayList<>();
+        for (MarkUser marker : markGroupDto.getMarkers()) {
+            if (userIds.contains(marker.getUserId())) {
+                continue;
             }
+            markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId(), markPaper.getMarkMode()));
+        }
+        if (CollectionUtils.isNotEmpty(markUserGroups)) {
+            markUserGroupService.saveBatch(markUserGroups);
         }
 
+
         // 更新MarkPaper中groupStatus
         long groupNumberIsNull = markQuestionService.countQuestionByExamIdAndPaperNumberAndGroupNumberIsNull(examId, paperNumber, false);
         markPaperService.updateGroupStatusByExamIdAndPaperNumber(groupNumberIsNull == 0, examId, paperNumber);
@@ -342,6 +363,13 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
         markGroup.setPicList(JSON.toJSONString(markGroupDto.getPictureConfigs()));
         this.updateById(markGroup);
 
+        // 结构分组号
+        markQuestionService.updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(null, examId, paperNumber, markGroupDto.getGroupNumber());
+        for (MarkQuestion markQuestion : markGroupDto.getQuestions()) {
+            markQuestion.setGroupNumber(markGroupDto.getGroupNumber());
+            markQuestionService.updateById(markQuestion);
+        }
+
         List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
         if (CollectionUtils.isNotEmpty(markUserGroupList)) {
             MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);

+ 25 - 13
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -1,20 +1,21 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkQuestionDto;
-import com.qmth.teachcloud.mark.params.MarkObjectiveQuestionParams;
-import com.qmth.teachcloud.mark.params.MarkQuestionParams;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkQuestion;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.mark.mapper.MarkQuestionMapper;
+import com.qmth.teachcloud.mark.params.MarkObjectiveQuestionParams;
+import com.qmth.teachcloud.mark.params.MarkQuestionParams;
 import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
-import com.qmth.teachcloud.common.service.TeachcloudCommonService;
-import com.qmth.teachcloud.common.util.FileStoreUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -110,6 +111,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                             throw ExceptionResultEnum.ERROR.exception("间隔分必须大于0");
                         }
                         markQuestion.setTotalScore(question.getTotalScore());
+                        markQuestion.setIntervalScore(question.getIntervalScore());
                         saveOrUpdateList.add(markQuestion);
                         markQuestionList.remove(markQuestion);
                     } else {
@@ -129,24 +131,24 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
 
     @Override
     public List<MarkQuestion> listQuestionByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer number, Boolean isObjective) {
-        QueryWrapper<MarkQuestion> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(MarkQuestion::getExamId, examId)
+        LambdaQueryWrapper<MarkQuestion> lambdaQueryWrapper = new QueryWrapper<MarkQuestion>().lambda();
+        lambdaQueryWrapper.eq(MarkQuestion::getExamId, examId)
                 .eq(MarkQuestion::getPaperNumber, paperNumber);
         if (number != null) {
-            queryWrapper.lambda().eq(MarkQuestion::getGroupNumber, number);
+            lambdaQueryWrapper.eq(MarkQuestion::getGroupNumber, number);
         }
         if (isObjective != null) {
-            queryWrapper.lambda().eq(MarkQuestion::getObjective, isObjective);
+            lambdaQueryWrapper.eq(MarkQuestion::getObjective, isObjective);
         }
-        queryWrapper.lambda().orderByAsc(MarkQuestion::getMainNumber)
+        lambdaQueryWrapper.orderByAsc(MarkQuestion::getMainNumber)
                 .orderByAsc(MarkQuestion::getSubNumber);
-        return this.list(queryWrapper);
+        return this.list(lambdaQueryWrapper);
     }
 
     @Transactional
     @Override
     public void saveObjectiveQuestions(MarkObjectiveQuestionParams markObjectiveQuestionParams) {
-        for (MarkQuestion question : markObjectiveQuestionParams.getQuestions()) {
+        for (MarkQuestion question : markObjectiveQuestionParams.getObjectiveInfo()) {
             if (StringUtils.isBlank(question.getAnswer())) {
                 throw ExceptionResultEnum.ERROR.exception("答案不能为空");
             }
@@ -230,4 +232,14 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         markQuestionDto.setQuestions(markQuestionList);
         return markQuestionDto;
     }
+
+    @Override
+    public void updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(Integer newGroupNumber, Long examId, String paperNumber, Integer groupNumber) {
+        UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkQuestion::getGroupNumber, newGroupNumber)
+                .eq(MarkQuestion::getExamId, examId)
+                .eq(MarkQuestion::getPaperNumber, paperNumber)
+                .eq(MarkQuestion::getGroupNumber, groupNumber);
+        this.update(updateWrapper);
+    }
 }

+ 2 - 2
teachcloud-mark/src/main/resources/mapper/MarkQuestionMapper.xml

@@ -7,7 +7,7 @@
         <id column="id" property="id" />
         <result column="exam_id" property="examId" />
         <result column="paper_number" property="paperNumber" />
-        <result column="is_objective" property="isObjective" />
+        <result column="objective" property="objective" />
         <result column="group_number" property="groupNumber" />
         <result column="main_number" property="mainNumber" />
         <result column="sub_number" property="subNumber" />
@@ -28,7 +28,7 @@
             mq.exam_id = #{examId}
           AND mq.paper_number = #{paperNumber}
           AND mq.group_number = #{groupNumber}
-          AND mq.is_objective = false
+          AND mq.objective = false
         ORDER BY mq.main_number , mq.sub_number
     </select>
     <select id="sumTotalScoreByGroupNumber" resultType="java.lang.Double">

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

@@ -186,7 +186,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                 markQuestion.setMainNumber(struct.getMainNumber());
                 markQuestion.setSubNumber(struct.getSubNumber());
                 markQuestion.setMainTitle(struct.getMainTitle());
-                markQuestion.setQuestionType(QuestionType.findByValue(struct.getType()));
+                markQuestion.setQuestionType(struct.getType());
                 markQuestion.setPaperIndex(struct.getPaperIndex());
                 markQuestion.setPageIndex(struct.getPageIndex());
                 markQuestions.add(markQuestion);
@@ -211,7 +211,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                         if (struct.getMainNumber() == markQuestion.getMainNumber()
                                 && struct.getSubNumber() == markQuestion.getSubNumber()
                                 && struct.getObjective().equals(markQuestion.getObjective())
-                                && struct.getType() == markQuestion.getQuestionType().getValue()
+                                && struct.getType() == markQuestion.getQuestionType()
                                 && struct.getMainTitle().equals(markQuestion.getMainTitle())) {
                             continue;
                         }