xiaofei 1 жил өмнө
parent
commit
fdea923bdc

+ 23 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkGroupController.java

@@ -6,6 +6,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupSummaryProgressDto;
+import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupSingleDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupTaskDto;
 import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -47,6 +48,28 @@ public class MarkGroupController {
         return ResultUtil.ok(markGroupList);
     }
 
+    /**
+     * 提交
+     */
+    @ApiOperation(value = "提交")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result add(@RequestBody MarkGroupTaskDto markGroupTaskDto) {
+        markGroupService.saveGroupBatch(markGroupTaskDto);
+        return ResultUtil.ok(true);
+    }
+
+    /**
+     * 修改
+     */
+    @ApiOperation(value = "修改")
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    public Result update(@RequestBody MarkGroupSingleDto markGroupSingleDto) {
+        markGroupService.updateGroup(markGroupSingleDto);
+        return ResultUtil.ok(true);
+    }
+
     /**
      * 删除
      */

+ 4 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/setting/MarkGroupDto.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.dto.mark.setting;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkUser;
 import com.qmth.teachcloud.common.bean.dto.mark.PictureConfig;
 import com.qmth.teachcloud.mark.entity.MarkQuestion;
+import com.qmth.teachcloud.mark.enums.ScorePolicy;
 
 import java.util.List;
 
@@ -11,7 +12,7 @@ public class MarkGroupDto {
     private Integer groupNumber;
     private Double doubleRate;
     private Double arbitrateThreshold;
-    private String scorePolicy;
+    private ScorePolicy scorePolicy;
     private List<MarkUser> markers;
     private List<PictureConfig> pictureConfigs;
     private List<MarkQuestion> questions;
@@ -41,11 +42,11 @@ public class MarkGroupDto {
         this.arbitrateThreshold = arbitrateThreshold;
     }
 
-    public String getScorePolicy() {
+    public ScorePolicy getScorePolicy() {
         return scorePolicy;
     }
 
-    public void setScorePolicy(String scorePolicy) {
+    public void setScorePolicy(ScorePolicy scorePolicy) {
         this.scorePolicy = scorePolicy;
     }
 

+ 36 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/setting/MarkGroupSingleDto.java

@@ -0,0 +1,36 @@
+package com.qmth.teachcloud.mark.dto.mark.setting;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class MarkGroupSingleDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+    private String paperNumber;
+    private MarkGroupDto groupInfo;
+
+    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 MarkGroupDto getGroupInfo() {
+        return groupInfo;
+    }
+
+    public void setGroupInfo(MarkGroupDto groupInfo) {
+        this.groupInfo = groupInfo;
+    }
+}

+ 4 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkGroup.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -55,12 +56,15 @@ public class MarkGroup implements Serializable {
     private Double totalScore;
 
     @ApiModelProperty(value = "双评比例")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double doubleRate;
 
     @ApiModelProperty(value = "仲裁阈值")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double arbitrateThreshold;
 
     @ApiModelProperty(value = "合分策略")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private ScorePolicy scorePolicy;
 
     @ApiModelProperty(value = "任务总量")

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupSummaryProgressDto;
+import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupSingleDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupTaskDto;
 import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
@@ -36,4 +37,8 @@ public interface MarkGroupService extends IService<MarkGroup> {
     IPage<MarkGroupClassProgressDto> summaryGroupClassProgress(Long examId, String paperNumber, Integer pageNumber, Integer pageSize);
 
     void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber, int count);
+
+    void saveGroupBatch(MarkGroupTaskDto markGroupTaskDto);
+
+    void updateGroup(MarkGroupSingleDto markGroupSingleDto);
 }

+ 47 - 8
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -6,20 +6,19 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 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.MarkUser;
+import com.qmth.teachcloud.common.bean.dto.mark.PictureConfig;
+import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupSummaryProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupTotalProgressDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupDto;
+import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupSingleDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupTaskDto;
-import com.qmth.teachcloud.common.bean.dto.mark.MarkUser;
-import com.qmth.teachcloud.common.bean.dto.mark.PictureConfig;
-import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
-import com.qmth.teachcloud.mark.entity.MarkPaper;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.mark.service.MarkPaperService;
-import com.qmth.teachcloud.mark.service.MarkQuestionService;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
+import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import com.qmth.teachcloud.mark.entity.MarkUserGroup;
 import com.qmth.teachcloud.mark.mapper.MarkGroupMapper;
@@ -75,7 +74,7 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
                 markGroupDto.setGroupNumber(markGroup.getNumber());
                 markGroupDto.setDoubleRate(markGroup.getDoubleRate());
                 markGroupDto.setArbitrateThreshold(markGroup.getArbitrateThreshold());
-                markGroupDto.setScorePolicy(markGroup.getScorePolicy().name());
+                markGroupDto.setScorePolicy(markGroup.getScorePolicy());
                 if (StringUtils.isNotBlank(markGroup.getPicList())) {
                     markGroupDto.setPictureConfigs(JSON.parseArray(markGroup.getPicList(), PictureConfig.class));
                 }
@@ -239,4 +238,44 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
                 .eq(MarkGroup::getNumber, groupNumber);
         this.update(updateWrapper);
     }
+
+    @Transactional
+    @Override
+    public void saveGroupBatch(MarkGroupTaskDto markGroupTaskDto) {
+
+    }
+
+    @Transactional
+    @Override
+    public void updateGroup(MarkGroupSingleDto markGroupSingleDto) {
+        Long examId = markGroupSingleDto.getExamId();
+        String paperNumber = markGroupSingleDto.getPaperNumber();
+        MarkGroupDto markGroupDto = markGroupSingleDto.getGroupInfo();
+        MarkGroup markGroup = this.getByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
+        if (markGroup == null) {
+            throw ExceptionResultEnum.ERROR.exception("数据不存在");
+        }
+
+        markGroup.setDoubleRate(markGroupDto.getDoubleRate());
+        markGroup.setScorePolicy(markGroupDto.getScorePolicy());
+        markGroup.setArbitrateThreshold(markGroupDto.getArbitrateThreshold());
+        markGroup.setPicList(JSON.toJSONString(markGroupDto.getPictureConfigs()));
+        this.updateById(markGroup);
+
+        List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
+        if (CollectionUtils.isNotEmpty(markUserGroupList)) {
+            MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+            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);
+            }
+        }
+    }
 }