浏览代码

3.3.0 分组接口

xiaofei 1 年之前
父节点
当前提交
966f3d8ca3
共有 24 个文件被更改,包括 667 次插入45 次删除
  1. 4 2
      distributed-print/install/mysql/upgrade/3.3.0.sql
  2. 25 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkClassController.java
  3. 60 12
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkGroupController.java
  4. 7 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkSettingController.java
  5. 81 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkGroupDto.java
  6. 43 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkGroupTaskDto.java
  7. 41 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkUser.java
  8. 43 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkUserClassDto.java
  9. 50 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/PictureConfig.java
  10. 51 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/mark/setting/GroupPictureConfigParams.java
  11. 12 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkPaper.java
  12. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkQuestion.java
  13. 3 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/MarkQuestionService.java
  14. 23 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/MarkQuestionServiceImpl.java
  15. 31 16
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserClass.java
  16. 5 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkUserGroupMapper.java
  17. 12 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkGroupService.java
  18. 6 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserClassService.java
  19. 5 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserGroupService.java
  20. 109 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java
  21. 25 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserClassServiceImpl.java
  22. 8 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java
  23. 2 1
      teachcloud-mark/src/main/resources/mapper/MarkUserClassMapper.xml
  24. 18 0
      teachcloud-mark/src/main/resources/mapper/MarkUserGroupMapper.xml

+ 4 - 2
distributed-print/install/mysql/upgrade/3.3.0.sql

@@ -25,7 +25,8 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('897', '评卷设置', 'MarkSetting', 'MENU', '486', '2', 'AUTH', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('898', '列表', 'List', 'LIST', '897', '1', 'AUTH', '900', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('899', '查询', 'Select', 'BUTTON', '897', '2', 'AUTH', '900', '1', '0', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('901', '评卷参数设置', 'MarkParamSetting', 'LINK', '897', '3', 'AUTH', '902,903,904,905,906,907,908,909,910,911,912,913', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('900', '查询', '/api/admin/mark/setting/summary', 'URL', '897', '1', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('901', '评卷参数设置', 'MarkParamSetting', 'LINK', '897', '3', 'AUTH', '902,903,904,905,906,907,908,909,910,911,912,913,962,963', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('902', '结构查询', '/api/admin/mark/question/list', 'URL', '897', '1', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('903', '结构提交', '/api/admin/mark/question/save', 'URL', '897', '2', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('904', '评卷任务查询', '/api/admin/mark/group/list', 'URL', '897', '3', 'AUTH', '1', '1', '1');
@@ -38,7 +39,6 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('911', '客观题标答提交', '/api/admin/mark/objective/save', 'URL', '897', '10', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('912', '主观题标答查询', '/api/admin/mark/subjective/list', 'URL', '897', '11', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('913', '主观题标答提交', '/api/admin/mark/subjective/save', 'URL', '897', '12', 'AUTH', '1', '1', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('900', '查询', '/api/admin/mark/setting/summary', 'URL', '897', '1', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('914', '评卷设置', 'MarkConfig', 'LINK', '897', '4', 'AUTH', '915,916', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('915', '数据获取', '/api/admin/mark/setting/paper/get', 'URL', '897', '13', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('916', '数据保存', '/api/admin/mark/setting/paper/save', 'URL', '897', '14', 'AUTH', '1', '1', '1');
@@ -87,6 +87,8 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('959', '客观题检查-获取任务', '/api/admin/mark/check/answer/getTask', 'URL', '946', '8', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('960', '客观题检查-保存任务', '/api/admin/mark/check/answer/saveTask', 'URL', '946', '9', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('961', '签到表列表', '/api/admin/mark/package/list', 'URL', '946', '10', 'AUTH', '1', '1', '1');
+INSERT INTO `teachcloud_db_dev`.`sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('962', '评卷区设置', '/api/admin/mark/group/update_picture_config', 'URL', '897', '13', 'AUTH', '1', '1', '1');
+INSERT INTO `teachcloud_db_dev`.`sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('963', '开启/关闭分班阅', '/api/admin/mark/group/update_open_mark_class', 'URL', '897', '14', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `sequence`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('970', '扫描端', 'scan', 'MENU', '11', '971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005', '1', '0', '0');
 UPDATE `sys_privilege` SET `name` = '打印端', `related` = '200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,973,974,975' WHERE (`id` = '199');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('971', '心跳接口', '/api/scan/server/heartbeat', 'URL', '970', '1', 'AUTH', '1', '1', '1');

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

@@ -2,12 +2,23 @@ package com.qmth.distributed.print.api.mark;
 
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupTaskDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUserClassDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.mark.service.MarkUserClassService;
 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 javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  * 评卷班级(分班阅) 前端控制器
@@ -21,4 +32,17 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/class")
 public class MarkClassController {
 
+    @Resource
+    MarkUserClassService markUserClassService;
+
+    /**
+     * 查询
+     */
+    @ApiOperation(value = "查询")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public Result list(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                       @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
+        List<MarkUserClassDto> markUserClassDtoList = markUserClassService.listMarkUserClassByExamIdAndPaperNumber(examId, paperNumber);
+        return ResultUtil.ok(markUserClassDtoList);
+    }
 }

+ 60 - 12
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkGroupController.java

@@ -2,18 +2,22 @@ package com.qmth.distributed.print.api.mark;
 
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupTaskDto;
+import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.MarkQuestion;
+import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.qmth.teachcloud.mark.entity.MarkGroup;
+import com.qmth.teachcloud.mark.service.MarkGroupService;
+import io.swagger.annotations.*;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -25,14 +29,58 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Api(tags = "评卷-分组管理")
 @RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/mark-group")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/group")
 public class MarkGroupController {
 
+    @Resource
+    MarkGroupService markGroupService;
+
+    /**
+     * 分组查询
+     */
     @ApiOperation(value = "查询")
-    @RequestMapping(value = "/query", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result list() {
-        return ResultUtil.ok();
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public Result list(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                       @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
+        MarkGroupTaskDto markGroupList = markGroupService.listGroupTaskByExamIdAndPaperNumber(examId, paperNumber);
+        return ResultUtil.ok(markGroupList);
+    }
+
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
+    public Result delete(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                         @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
+                         @ApiParam(value = "分组号", required = true) @RequestParam Integer groupNumber) {
+        markGroupService.deleteGroupByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber);
+        return ResultUtil.ok(true);
+    }
+
+    /**
+     * 评卷区设置
+     */
+    @ApiOperation(value = "评卷区设置")
+    @RequestMapping(value = "/update_picture_config", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result updatePictureConfig(@RequestBody GroupPictureConfigParams groupPictureConfigParams) {
+        markGroupService.updatePicListByExamIdAndPaperNumberAndGroupNumber(groupPictureConfigParams);
+        return ResultUtil.ok(true);
+    }
+
+    /**
+     * 开启/关闭分班阅
+     */
+    @ApiOperation(value = "开启/关闭分班阅")
+    @RequestMapping(value = "/update_open_mark_class", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result delete(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                         @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
+                         @ApiParam(value = "是否开启分班阅", required = true) @RequestParam Boolean openMarkClass) {
+        markGroupService.updateOpenMarkClassByExamIdAndPaperNumber(examId, paperNumber, openMarkClass);
+        return ResultUtil.ok(true);
     }
 
 }

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

@@ -3,10 +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.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.bean.dto.mark.entrance.MarkEntranceDto;
 import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkSettingDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.MarkPaper;
+import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.MarkPaperService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -51,9 +53,9 @@ public class MarkSettingController {
     }
 
     /**
-     * 评设置数据获取
+     * 评设置数据获取
      */
-    @ApiOperation(value = "评设置数据获取")
+    @ApiOperation(value = "评设置数据获取")
     @RequestMapping(value = "/paper/get", method = RequestMethod.POST)
     public Result paperGet(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                            @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
@@ -61,10 +63,11 @@ public class MarkSettingController {
     }
 
     /**
-     * 评判设置数据获取
+     * 评判设置数据保存
      */
-    @ApiOperation(value = "评判设置数据获取")
+    @ApiOperation(value = "评卷设置数据保存")
     @RequestMapping(value = "/paper/save", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
     public Result paperSave(@RequestBody MarkPaper markPaper) {
         markPaperService.savePaperSetting(markPaper);
         return ResultUtil.ok(true);

+ 81 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkGroupDto.java

@@ -0,0 +1,81 @@
+package com.qmth.teachcloud.common.bean.dto.mark.setting;
+
+import com.qmth.teachcloud.common.entity.MarkQuestion;
+
+import java.util.List;
+
+public class MarkGroupDto {
+
+    private Integer groupNumber;
+    private Double doubleRate;
+    private Double arbitrateThreshold;
+    private String scorePolicy;
+    private List<MarkUser> markers;
+    private List<PictureConfig> pictureConfigs;
+    private List<MarkQuestion> questions;
+    private String groupQuestions;
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    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 String getScorePolicy() {
+        return scorePolicy;
+    }
+
+    public void setScorePolicy(String scorePolicy) {
+        this.scorePolicy = scorePolicy;
+    }
+
+    public List<MarkUser> getMarkers() {
+        return markers;
+    }
+
+    public void setMarkers(List<MarkUser> markers) {
+        this.markers = markers;
+    }
+
+    public List<PictureConfig> getPictureConfigs() {
+        return pictureConfigs;
+    }
+
+    public void setPictureConfigs(List<PictureConfig> pictureConfigs) {
+        this.pictureConfigs = pictureConfigs;
+    }
+
+    public List<MarkQuestion> getQuestions() {
+        return questions;
+    }
+
+    public void setQuestions(List<MarkQuestion> questions) {
+        this.questions = questions;
+    }
+
+    public String getGroupQuestions() {
+        return groupQuestions;
+    }
+
+    public void setGroupQuestions(String groupQuestions) {
+        this.groupQuestions = groupQuestions;
+    }
+}

+ 43 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkGroupTaskDto.java

@@ -0,0 +1,43 @@
+package com.qmth.teachcloud.common.bean.dto.mark.setting;
+
+import java.util.List;
+
+public class MarkGroupTaskDto {
+
+    private Long examId;
+    private String paperNumber;
+    private List<MarkGroupDto> groups;
+    private Boolean openMarkClass;
+
+    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<MarkGroupDto> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(List<MarkGroupDto> groups) {
+        this.groups = groups;
+    }
+
+    public Boolean getOpenMarkClass() {
+        return openMarkClass;
+    }
+
+    public void setOpenMarkClass(Boolean openMarkClass) {
+        this.openMarkClass = openMarkClass;
+    }
+}

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

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.common.bean.dto.mark.setting;
+
+public class MarkUser {
+
+    private Long userId;
+    private String loginName;
+    private String name;
+    private String orgName;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+}

+ 43 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/MarkUserClassDto.java

@@ -0,0 +1,43 @@
+package com.qmth.teachcloud.common.bean.dto.mark.setting;
+
+import java.util.List;
+
+public class MarkUserClassDto {
+
+    private Integer groupNumber;
+    private String groupQuestions;
+    private List<MarkUser> markerList;
+    private List<MarkUser> classMarkerList;
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getGroupQuestions() {
+        return groupQuestions;
+    }
+
+    public void setGroupQuestions(String groupQuestions) {
+        this.groupQuestions = groupQuestions;
+    }
+
+    public List<MarkUser> getMarkerList() {
+        return markerList;
+    }
+
+    public void setMarkerList(List<MarkUser> markerList) {
+        this.markerList = markerList;
+    }
+
+    public List<MarkUser> getClassMarkerList() {
+        return classMarkerList;
+    }
+
+    public void setClassMarkerList(List<MarkUser> classMarkerList) {
+        this.classMarkerList = classMarkerList;
+    }
+}

+ 50 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/setting/PictureConfig.java

@@ -0,0 +1,50 @@
+package com.qmth.teachcloud.common.bean.dto.mark.setting;
+
+public class PictureConfig {
+
+    private int i;
+    private Double x;
+    private Double y;
+    private Double w;
+    private Double h;
+
+    public int getI() {
+        return i;
+    }
+
+    public void setI(int i) {
+        this.i = i;
+    }
+
+    public Double getX() {
+        return x;
+    }
+
+    public void setX(Double x) {
+        this.x = x;
+    }
+
+    public Double getY() {
+        return y;
+    }
+
+    public void setY(Double y) {
+        this.y = y;
+    }
+
+    public Double getW() {
+        return w;
+    }
+
+    public void setW(Double w) {
+        this.w = w;
+    }
+
+    public Double getH() {
+        return h;
+    }
+
+    public void setH(Double h) {
+        this.h = h;
+    }
+}

+ 51 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/mark/setting/GroupPictureConfigParams.java

@@ -0,0 +1,51 @@
+package com.qmth.teachcloud.common.bean.params.mark.setting;
+
+import com.qmth.teachcloud.common.bean.dto.mark.setting.PictureConfig;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 评卷区设置请求参数
+ */
+public class GroupPictureConfigParams implements Serializable {
+
+    private Long examId;
+
+    private String paperNumber;
+    private Integer groupNumber;
+
+    private List<PictureConfig> pictureConfigs;
+
+    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 Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public List<PictureConfig> getPictureConfigs() {
+        return pictureConfigs;
+    }
+
+    public void setPictureConfigs(List<PictureConfig> pictureConfigs) {
+        this.pictureConfigs = pictureConfigs;
+    }
+}

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkPaper.java

@@ -90,6 +90,9 @@ public class MarkPaper implements Serializable {
     @ApiModelProperty(value = "评卷分组是否提交")
     private Boolean groupStatus;
 
+    @ApiModelProperty(value = "是否开启分班阅")
+    private Boolean openMarkClass;
+
     public Long getExamId() {
         return examId;
     }
@@ -251,6 +254,14 @@ public class MarkPaper implements Serializable {
         this.groupStatus = groupStatus;
     }
 
+    public Boolean getOpenMarkClass() {
+        return openMarkClass;
+    }
+
+    public void setOpenMarkClass(Boolean openMarkClass) {
+        this.openMarkClass = openMarkClass;
+    }
+
     @Override
     public String toString() {
         return "MarkPaper{" +
@@ -276,6 +287,7 @@ public class MarkPaper implements Serializable {
             ", sheetView=" + sheetView +
             ", showObjectScore=" + showObjectScore +
             ", groupStatus=" + groupStatus +
+            ", openMarkClass=" + openMarkClass +
         "}";
     }
 }

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

@@ -46,7 +46,7 @@ public class MarkQuestion implements Serializable {
     private Integer mainNumber;
 
     @ApiModelProperty(value = "小题号")
-    private String subNumber;
+    private Integer subNumber;
 
     @ApiModelProperty(value = "大题名称")
     private String mainTitle;
@@ -110,11 +110,11 @@ public class MarkQuestion implements Serializable {
     public void setMainNumber(Integer mainNumber) {
         this.mainNumber = mainNumber;
     }
-    public String getSubNumber() {
+    public Integer getSubNumber() {
         return subNumber;
     }
 
-    public void setSubNumber(String subNumber) {
+    public void setSubNumber(Integer subNumber) {
         this.subNumber = subNumber;
     }
     public String getMainTitle() {

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/MarkQuestionService.java

@@ -23,9 +23,11 @@ public interface MarkQuestionService extends IService<MarkQuestion> {
      * @param paperNumber 试卷编号
      * @param groupNumber 分组号
      */
-    String groupQuestionsByExamIdAndPaperNumberAndNumber(Long examId, String paperNumber, Integer groupNumber);
+    String getGroupQuestionsByExamIdAndPaperNumberAndNumber(Long examId, String paperNumber, Integer groupNumber);
 
     List<MarkQuestion> listQuestionByExamIdAndPaperNumber(Long examId, String paperNumber);
 
     void saveQuestions(MarkQuestionParams markQuestionParams);
+
+    List<MarkQuestion> listQuestionByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer number, Boolean isObjective);
 }

+ 23 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/MarkQuestionServiceImpl.java

@@ -26,7 +26,7 @@ import java.util.stream.Collectors;
 public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, MarkQuestion> implements MarkQuestionService {
 
     @Override
-    public String groupQuestionsByExamIdAndPaperNumberAndNumber(Long examId, String paperNumber, Integer groupNumber) {
+    public String getGroupQuestionsByExamIdAndPaperNumberAndNumber(Long examId, String paperNumber, Integer groupNumber) {
         return this.baseMapper.groupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, groupNumber);
     }
 
@@ -51,7 +51,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         }
 
         // 校验题号不能重复
-        Map<String, Long> longMap = questions.stream().collect(Collectors.groupingBy(m -> m.getMainNumber() + m.getSubNumber(), Collectors.counting()));
+        Map<String, Long> longMap = questions.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.getMainNumber()) + m.getSubNumber(), Collectors.counting()));
         long count = longMap.entrySet().stream().filter(m -> m.getValue().intValue() > 1).count();
         if (count > 0) {
             throw ExceptionResultEnum.ERROR.exception("大题号+小题号有重复数据");
@@ -83,6 +83,12 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                         if (markQuestion.getGroupNumber() != null && markQuestion.getGroupNumber().intValue() > 0 && markQuestion.getTotalScore().doubleValue() - question.getTotalScore().doubleValue() != 0) {
                             throw ExceptionResultEnum.ERROR.exception("大题号" + markQuestion.getMainNumber() + "小题号" + markQuestion.getSubNumber() + "已分组,不能修改小题满分");
                         }
+                        if (question.getTotalScore() <= 0) {
+                            throw ExceptionResultEnum.ERROR.exception("小题满分必须大于0");
+                        }
+                        if (question.getIntervalScore() <= 0) {
+                            throw ExceptionResultEnum.ERROR.exception("间隔分必须大于0");
+                        }
                         markQuestion.setTotalScore(question.getTotalScore());
                         saveOrUpdateList.add(markQuestion);
                         markQuestionList.remove(markQuestion);
@@ -91,14 +97,27 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                     }
                 }
             }
-            // 删除的结构
+            // 删除的结构
             if (CollectionUtils.isNotEmpty(markQuestionList)) {
                 List<Long> deleteIds = markQuestionList.stream().map(MarkQuestion::getId).collect(Collectors.toList());
                 this.removeByIds(deleteIds);
             }
             this.saveOrUpdateBatch(saveOrUpdateList);
-
         }
 
     }
+
+    @Override
+    public List<MarkQuestion> listQuestionByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer number, Boolean isObjective) {
+        QueryWrapper<MarkQuestion> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkQuestion::getExamId, examId)
+                .eq(MarkQuestion::getPaperNumber, paperNumber)
+                .eq(MarkQuestion::getGroupNumber, number);
+        if (isObjective != null) {
+            queryWrapper.lambda().eq(MarkQuestion::getObjective, isObjective);
+        }
+        queryWrapper.lambda().orderByAsc(MarkQuestion::getMainNumber)
+                .orderByAsc(MarkQuestion::getSubNumber);
+        return this.list(queryWrapper);
+    }
 }

+ 31 - 16
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserClass.java

@@ -1,15 +1,14 @@
 package com.qmth.teachcloud.mark.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 评卷员班级
@@ -19,7 +18,7 @@ import io.swagger.annotations.ApiModelProperty;
  * @since 2023-09-22
  */
 @TableName("mark_user_class")
-@ApiModel(value="MarkUserClass对象", description="评卷员班级")
+@ApiModel(value = "MarkUserClass对象", description = "评卷员班级")
 public class MarkUserClass implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -32,6 +31,9 @@ public class MarkUserClass implements Serializable {
     @ApiModelProperty(value = "考试ID")
     private Long examId;
 
+    @ApiModelProperty(value = "分组号")
+    private Integer groupNumber;
+
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
@@ -40,7 +42,7 @@ public class MarkUserClass implements Serializable {
     private Long userId;
 
     @ApiModelProperty(value = "班级名称")
-    private String classsName;
+    private String className;
 
     public Long getId() {
         return Id;
@@ -49,6 +51,7 @@ public class MarkUserClass implements Serializable {
     public void setId(Long Id) {
         this.Id = Id;
     }
+
     public Long getExamId() {
         return examId;
     }
@@ -56,6 +59,15 @@ public class MarkUserClass implements Serializable {
     public void setExamId(Long examId) {
         this.examId = examId;
     }
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
     public String getPaperNumber() {
         return paperNumber;
     }
@@ -63,6 +75,7 @@ public class MarkUserClass implements Serializable {
     public void setPaperNumber(String paperNumber) {
         this.paperNumber = paperNumber;
     }
+
     public Long getUserId() {
         return userId;
     }
@@ -70,22 +83,24 @@ public class MarkUserClass implements Serializable {
     public void setUserId(Long userId) {
         this.userId = userId;
     }
-    public String getClasssName() {
-        return classsName;
+
+    public String getClassName() {
+        return className;
     }
 
-    public void setClasssName(String classsName) {
-        this.classsName = classsName;
+    public void setClassName(String className) {
+        this.className = className;
     }
 
     @Override
     public String toString() {
         return "MarkUserClass{" +
-            "Id=" + Id +
-            ", examId=" + examId +
-            ", paperNumber=" + paperNumber +
-            ", userId=" + userId +
-            ", classsName=" + classsName +
-        "}";
+                "Id=" + Id +
+                ", examId=" + examId +
+                ", groupNumber=" + groupNumber +
+                ", paperNumber=" + paperNumber +
+                ", userId=" + userId +
+                ", classsName=" + className +
+                "}";
     }
 }

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkUserGroupMapper.java

@@ -3,10 +3,13 @@ package com.qmth.teachcloud.mark.mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.teachcloud.common.bean.dto.mark.entrance.MarkEntranceDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUser;
 import com.qmth.teachcloud.mark.entity.MarkUserGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 评卷员表 Mapper 接口
@@ -18,4 +21,6 @@ import org.apache.ibatis.annotations.Param;
 public interface MarkUserGroupMapper extends BaseMapper<MarkUserGroup> {
 
     IPage<MarkEntranceDto> listEntranceGroup(@Param("page") Page<MarkUserGroup> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
+
+    List<MarkUser> listGroupUserByExamIdAndPaperNumberAndGroupNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber);
 }

+ 12 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkGroupService.java

@@ -1,8 +1,12 @@
 package com.qmth.teachcloud.mark.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupTaskDto;
+import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
 
+import java.util.List;
+
 /**
  * <p>
  * 评卷分组表 服务类
@@ -13,4 +17,12 @@ import com.qmth.teachcloud.mark.entity.MarkGroup;
  */
 public interface MarkGroupService extends IService<MarkGroup> {
 
+    MarkGroupTaskDto listGroupTaskByExamIdAndPaperNumber(Long examId, String paperNumber);
+    List<MarkGroup> listGroupByExamIdAndPaperNumber(Long examId, String paperNumber);
+
+    void deleteGroupByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
+
+    void updatePicListByExamIdAndPaperNumberAndGroupNumber(GroupPictureConfigParams groupPictureConfigParams);
+
+    void updateOpenMarkClassByExamIdAndPaperNumber(Long examId, String paperNumber, Boolean openMarkClass);
 }

+ 6 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserClassService.java

@@ -1,8 +1,11 @@
 package com.qmth.teachcloud.mark.service;
 
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUserClassDto;
 import com.qmth.teachcloud.mark.entity.MarkUserClass;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 评卷员班级 服务类
@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface MarkUserClassService extends IService<MarkUserClass> {
 
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
+
+    List<MarkUserClassDto> listMarkUserClassByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserGroupService.java

@@ -2,9 +2,12 @@ package com.qmth.teachcloud.mark.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.teachcloud.common.bean.dto.mark.entrance.MarkEntranceDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUser;
 import com.qmth.teachcloud.mark.entity.MarkUserGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 评卷员表 服务类
@@ -16,4 +19,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface MarkUserGroupService extends IService<MarkUserGroup> {
 
     IPage<MarkEntranceDto> listEntranceGroup(Long examId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize);
+
+    List<MarkUser> listGroupUserByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer number);
 }

+ 109 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -1,10 +1,30 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.alibaba.fastjson.JSON;
+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.bean.dto.mark.setting.MarkGroupDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupTaskDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.PictureConfig;
+import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
+import com.qmth.teachcloud.common.entity.MarkPaper;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.MarkPaperService;
+import com.qmth.teachcloud.common.service.MarkQuestionService;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
 import com.qmth.teachcloud.mark.mapper.MarkGroupMapper;
 import com.qmth.teachcloud.mark.service.MarkGroupService;
+import com.qmth.teachcloud.mark.service.MarkUserClassService;
+import com.qmth.teachcloud.mark.service.MarkUserGroupService;
+import org.apache.commons.collections4.CollectionUtils;
+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;
 
 /**
  * <p>
@@ -17,4 +37,93 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup> implements MarkGroupService {
 
+    @Resource
+    MarkQuestionService markQuestionService;
+
+    @Resource
+    MarkPaperService markPaperService;
+
+    @Resource
+    MarkUserGroupService markUserGroupService;
+
+    @Resource
+    MarkUserClassService markUserClassService;
+
+    @Override
+    public MarkGroupTaskDto listGroupTaskByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        MarkGroupTaskDto markGroupTaskDto = new MarkGroupTaskDto();
+        markGroupTaskDto.setExamId(examId);
+        markGroupTaskDto.setPaperNumber(paperNumber);
+
+        // 分组信息
+        List<MarkGroup> groupList = listGroupByExamIdAndPaperNumber(examId, paperNumber);
+        if (CollectionUtils.isNotEmpty(groupList)) {
+            List<MarkGroupDto> markGroupDtoList = new ArrayList<>();
+            for (MarkGroup markGroup : groupList) {
+                MarkGroupDto markGroupDto = new MarkGroupDto();
+                markGroupDto.setGroupNumber(markGroup.getNumber());
+                markGroupDto.setDoubleRate(markGroup.getDoubleRate());
+                markGroupDto.setArbitrateThreshold(markGroup.getArbitrateThreshold());
+                markGroupDto.setScorePolicy(markGroup.getScorePolicy());
+                if (StringUtils.isNotBlank(markGroup.getPicList())) {
+                    markGroupDto.setPictureConfigs(JSON.parseArray(markGroup.getPicList(), PictureConfig.class));
+                }
+                // 评卷员
+                markGroupDto.setMarkers(markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber()));
+                // 题目
+                markGroupDto.setQuestions(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber(), false));
+                markGroupDto.setGroupQuestions(markQuestionService.getGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, markGroup.getNumber()));
+                markGroupDtoList.add(markGroupDto);
+            }
+            markGroupTaskDto.setGroups(markGroupDtoList);
+        }
+        // 分班阅参数
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+        markGroupTaskDto.setOpenMarkClass(markPaper != null && markPaper.getOpenMarkClass());
+        return markGroupTaskDto;
+    }
+
+    @Override
+    public List<MarkGroup> listGroupByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        QueryWrapper<MarkGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkGroup::getExamId, examId)
+                .eq(MarkGroup::getPaperNumber, paperNumber)
+                .orderByAsc(MarkGroup::getNumber);
+        return null;
+    }
+
+    @Transactional
+    @Override
+    public void deleteGroupByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
+
+    }
+
+    @Override
+    public void updatePicListByExamIdAndPaperNumberAndGroupNumber(GroupPictureConfigParams groupPictureConfigParams) {
+        List<PictureConfig> pictureConfigs = groupPictureConfigParams.getPictureConfigs();
+        if (CollectionUtils.isEmpty(pictureConfigs)) {
+            throw ExceptionResultEnum.ERROR.exception("没有评卷区数据");
+        }
+        UpdateWrapper<MarkGroup> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkGroup::getPicList, JSON.toJSONString(pictureConfigs))
+                .eq(MarkGroup::getExamId, groupPictureConfigParams.getExamId())
+                .eq(MarkGroup::getPaperNumber, groupPictureConfigParams.getPaperNumber())
+                .eq(MarkGroup::getNumber, groupPictureConfigParams.getGroupNumber());
+        this.update(updateWrapper);
+    }
+
+    @Transactional
+    @Override
+    public void updateOpenMarkClassByExamIdAndPaperNumber(Long examId, String paperNumber, Boolean openMarkClass) {
+        UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkPaper::getOpenMarkClass, openMarkClass)
+                .eq(MarkPaper::getExamId, examId)
+                .eq(MarkPaper::getPaperNumber, paperNumber);
+        markPaperService.update(updateWrapper);
+
+        // 禁用,删除分班数据
+        if (!openMarkClass.booleanValue()) {
+            markUserClassService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        }
+    }
 }

+ 25 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserClassServiceImpl.java

@@ -1,11 +1,18 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUserClassDto;
+import com.qmth.teachcloud.common.entity.MarkStudent;
+import com.qmth.teachcloud.common.service.MarkStudentService;
 import com.qmth.teachcloud.mark.entity.MarkUserClass;
 import com.qmth.teachcloud.mark.mapper.MarkUserClassMapper;
 import com.qmth.teachcloud.mark.service.MarkUserClassService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  * 评卷员班级 服务实现类
@@ -17,4 +24,22 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, MarkUserClass> implements MarkUserClassService {
 
+    @Resource
+    MarkStudentService markStudentService;
+
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<MarkUserClass> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkUserClass::getExamId, examId)
+                .eq(MarkUserClass::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
+    @Override
+    public List<MarkUserClassDto> listMarkUserClassByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        // 课程下所有班级数据
+//        List<String> paperNumberClassList =
+
+        return null;
+    }
 }

+ 8 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.dto.mark.entrance.MarkEntranceDto;
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.MarkQuestionService;
@@ -16,6 +17,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -50,8 +52,13 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
             }
 
             // 分组题目
-            record.setGroupQuestions(markQuestionService.groupQuestionsByExamIdAndPaperNumberAndNumber(record.getExamId(), record.getPaperNumber(), record.getGroupNumber()));
+            record.setGroupQuestions(markQuestionService.getGroupQuestionsByExamIdAndPaperNumberAndNumber(record.getExamId(), record.getPaperNumber(), record.getGroupNumber()));
         }
         return markEntranceDtoIPage;
     }
+
+    @Override
+    public List<MarkUser> listGroupUserByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
+        return this.baseMapper.listGroupUserByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber);
+    }
 }

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

@@ -7,8 +7,9 @@
         <id column="Id" property="Id" />
         <result column="exam_id" property="examId" />
         <result column="paper_number" property="paperNumber" />
+        <result column="group_number" property="groupNumber" />
         <result column="user_id" property="userId" />
-        <result column="classs_name" property="classsName" />
+        <result column="class_name" property="className" />
     </resultMap>
 
 </mapper>

+ 18 - 0
teachcloud-mark/src/main/resources/mapper/MarkUserGroupMapper.xml

@@ -43,5 +43,23 @@
             and mug.user_id = #{userId}
         </where>
     </select>
+    <select id="listGroupUserByExamIdAndPaperNumberAndGroupNumber"
+            resultType="com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUser">
+        SELECT
+            su.id userId,
+            su.login_name loginName,
+            su.real_name name,
+            so.name orgName
+        FROM
+            mark_user_group mug
+                LEFT JOIN
+            sys_user su ON mug.user_id = su.id
+                LEFT JOIN
+            sys_org so ON su.org_id = so.id
+        WHERE
+            mug.exam_id = #{examId}
+          AND mug.paper_number = #{paperNumber}
+          AND mug.group_number = #{groupNumber}
+    </select>
 
 </mapper>