Ver Fonte

3.3.0 评卷员管理-重置

xiaofei há 1 ano atrás
pai
commit
b420e5f114
16 ficheiros alterados com 218 adições e 34 exclusões
  1. 42 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/SubjectiveStatus.java
  2. 3 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/MarkStudentService.java
  3. 12 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/MarkStudentServiceImpl.java
  4. 4 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkGroupStudent.java
  5. 7 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkTask.java
  6. 6 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserGroup.java
  7. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkGroupService.java
  8. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkService.java
  9. 7 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java
  10. 1 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTrackService.java
  11. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserGroupService.java
  12. 10 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java
  13. 58 23
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  14. 41 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java
  15. 8 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTrackServiceImpl.java
  16. 13 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java

+ 42 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/SubjectiveStatus.java

@@ -0,0 +1,42 @@
+package com.qmth.teachcloud.common.enums;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public enum SubjectiveStatus {
+
+    UNMARK("未评完"), MARKED("已评完");
+
+    private String name;
+
+    private static List<SubjectiveStatus> options;
+
+    private SubjectiveStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static SubjectiveStatus findByText(String text) {
+        for (SubjectiveStatus c : SubjectiveStatus.values()) {
+            if (c.toString().equalsIgnoreCase(text)) {
+                return c;
+            }
+        }
+        return null;
+    }
+
+    public static List<SubjectiveStatus> getOptionList() {
+        if (options == null) {
+            options = new LinkedList<>();
+            for (SubjectiveStatus status : SubjectiveStatus.values()) {
+                if (status != UNMARK) {
+                    options.add(status);
+                }
+            }
+        }
+        return options;
+    }
+}

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/MarkStudentService.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.common.service;
 
 import com.qmth.teachcloud.common.entity.MarkStudent;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.enums.SubjectiveStatus;
 
 import java.util.List;
 
@@ -16,4 +17,6 @@ import java.util.List;
 public interface MarkStudentService extends IService<MarkStudent> {
 
     List<String> listClassByExamIdAndCourseCode(Long examId, String paperNumber);
+
+    void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, int score, String scoreList);
 }

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/MarkStudentServiceImpl.java

@@ -1,8 +1,10 @@
 package com.qmth.teachcloud.common.service.impl;
 
 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.entity.MarkStudent;
+import com.qmth.teachcloud.common.enums.SubjectiveStatus;
 import com.qmth.teachcloud.common.mapper.MarkStudentMapper;
 import com.qmth.teachcloud.common.service.MarkStudentService;
 import org.apache.commons.collections4.CollectionUtils;
@@ -37,4 +39,14 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         }
         return classNameList;
     }
+
+    @Override
+    public void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, int score, String scoreList) {
+        UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status)
+                .set(MarkStudent::getSubjectiveScore, score)
+                .set(MarkStudent::getSubjectiveScoreList, scoreList)
+                .eq(MarkStudent::getId, studentId);
+        this.update(updateWrapper);
+    }
 }

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

@@ -1,12 +1,12 @@
 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.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.SubjectiveStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -40,7 +40,7 @@ public class MarkGroupStudent implements Serializable {
     private String paperNumber;
 
     @ApiModelProperty(value = "状态")
-    private String status;
+    private SubjectiveStatus status;
 
     public Long getStudentId() {
         return studentId;
@@ -70,11 +70,11 @@ public class MarkGroupStudent implements Serializable {
     public void setPaperNumber(String paperNumber) {
         this.paperNumber = paperNumber;
     }
-    public String getStatus() {
+    public SubjectiveStatus getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(SubjectiveStatus status) {
         this.status = status;
     }
 

+ 7 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkTask.java

@@ -1,8 +1,6 @@
 package com.qmth.teachcloud.mark.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-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.MarkTaskStatus;
@@ -65,15 +63,19 @@ public class MarkTask implements Serializable {
     private Long userId;
 
     @ApiModelProperty(value = "评卷时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long markerTime;
 
     @ApiModelProperty(value = "评卷总分")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double markerScore;
 
     @ApiModelProperty(value = "评卷给分明细")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String markerScoreList;
 
     @ApiModelProperty(value = "评卷时长")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer markerSpent;
 
     @JsonSerialize(using = ToStringSerializer.class)
@@ -84,9 +86,11 @@ public class MarkTask implements Serializable {
     private Long headerTime;
 
     @ApiModelProperty(value = "科组长总分")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double headerScore;
 
     @ApiModelProperty(value = "科组长给分明细")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String headerScoreList;
 
     public Long getId() {

+ 6 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserGroup.java

@@ -1,8 +1,7 @@
 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 com.baomidou.mybatisplus.annotation.*;
+
 import java.io.Serializable;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -51,15 +50,19 @@ public class MarkUserGroup implements Serializable {
     private Integer topCount;
 
     @ApiModelProperty(value = "完成数量")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer finishCount;
 
     @ApiModelProperty(value = "平均分")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double avgScore;
 
     @ApiModelProperty(value = "平均时长")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double avgSpeed;
 
     @ApiModelProperty(value = "标准差")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Double stdevScore;
 
     public MarkUserGroup() {

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

@@ -34,4 +34,6 @@ public interface MarkGroupService extends IService<MarkGroup> {
     MarkGroupSummaryProgressDto summaryGroupProgress(Long examId, String paperNumber);
 
     IPage<MarkGroupClassProgressDto> summaryGroupClassProgress(Long examId, String paperNumber, Integer pageNumber, Integer pageSize);
+
+    void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber, int count);
 }

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

@@ -16,4 +16,6 @@ public interface MarkService {
     int applyCurrentCount(MarkGroup markGroup, Long markUserGroupId);
 
     void resetMarker(MarkUserGroup markUserGroup);
+
+    void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber);
 }

+ 7 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -31,4 +32,10 @@ public interface MarkTaskService extends IService<MarkTask> {
     Double calcPercent(Integer markedCount, Integer taskCount);
 
     int countByExamIdAndPaperNumberAndGroupNumberAndUserId(Long examId, String paperNumber, Integer groupNumber, Long userId);
+
+    List<MarkTask> listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndStatusNotIn(Long examId, String paperNumber, Integer groupNumber, Long userId, List<MarkTaskStatus> statusList);
+
+    void resetById(Long markTaskId, Long userId, Long rejecterId, Long date, MarkTaskStatus newStatus);
+
+    int countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(Long examId, String paperNumber, Integer groupNumber, List<MarkTaskStatus> statusList);
 }

+ 1 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTrackService.java

@@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface MarkTrackService extends IService<MarkTrack> {
 
+    void deleteByTaskId(Long taskId);
 }

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

@@ -36,4 +36,6 @@ public interface MarkUserGroupService extends IService<MarkUserGroup> {
     void releaseMarker(List<Long> markUserGroupIds);
 
     boolean resetMarker(Long markUserGroupId);
+
+    void resetById(Long id);
 }

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

@@ -229,4 +229,14 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
         }
         return null;
     }
+
+    @Override
+    public void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber, int count) {
+        UpdateWrapper<MarkGroup> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkGroup::getMarkedCount, count)
+                .eq(MarkGroup::getExamId, examId)
+                .eq(MarkGroup::getPaperNumber, paperNumber)
+                .eq(MarkGroup::getNumber, groupNumber);
+        this.update(updateWrapper);
+    }
 }

+ 58 - 23
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -1,19 +1,24 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.itextpdf.text.pdf.languages.ArabicLigaturizer;
 import com.qmth.teachcloud.common.entity.MarkPaper;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.service.MarkPaperService;
-import com.qmth.teachcloud.mark.entity.MarkGroup;
-import com.qmth.teachcloud.mark.entity.MarkUserGroup;
-import com.qmth.teachcloud.mark.service.MarkGroupService;
-import com.qmth.teachcloud.mark.service.MarkService;
-import com.qmth.teachcloud.mark.service.MarkUserGroupService;
+import com.qmth.teachcloud.common.service.MarkStudentService;
+import com.qmth.teachcloud.mark.entity.*;
+import com.qmth.teachcloud.mark.enums.LockType;
+import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
+import com.qmth.teachcloud.common.enums.SubjectiveStatus;
+import com.qmth.teachcloud.mark.lock.LockService;
+import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.TaskLock;
 import com.qmth.teachcloud.mark.utils.TaskLockUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
+import java.util.zip.GZIPOutputStream;
 
 @Service
 public class MarkServiceImpl implements MarkService {
@@ -24,6 +29,16 @@ public class MarkServiceImpl implements MarkService {
     private MarkGroupService markGroupService;
     @Resource
     private MarkUserGroupService markUserGroupService;
+    @Resource
+    private MarkTaskService markTaskService;
+    @Resource
+    private MarkTrackService markTrackService;
+    @Resource
+    private MarkStudentService markStudentService;
+    @Resource
+    private MarkGroupStudentService markGroupStudentService;
+    @Resource
+    LockService lockService;
 
     /**
      * 某个评卷分组已申请的评卷任务数量
@@ -74,31 +89,51 @@ public class MarkServiceImpl implements MarkService {
 
     @Override
     public void resetMarker(MarkUserGroup markUserGroup) {
-        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markUserGroup.getExamId(), markUserGroup.getPaperNumber());
+        Long examId = markUserGroup.getExamId();
+        String paperNumber = markUserGroup.getPaperNumber();
+        Integer groupNumber = markUserGroup.getGroupNumber();
+        Long userId = markUserGroup.getUserId();
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         if (markPaper == null || markUserGroupService.getById(markUserGroup.getId()) == null) {
             return;
         }
-        /*if (markPaper.getStatus() == MarkPaperStatus.FORMAL) {
+        if (markPaper.getStatus() == MarkPaperStatus.FORMAL) {
             // 遍历相关评卷任务的模式
-            List<MarkLibrary> list = libraryDao.findByMarkerIdAndStatusNotIn(marker.getId(), LibraryStatus.ARBITRATED,
-                    LibraryStatus.WAIT_ARBITRATE, LibraryStatus.PROBLEM);
-            for (MarkLibrary library : list) {
-                trackDao.deleteByLibraryId(library.getId());
-                specialTagDao.deleteByLibraryId(library.getId());
-                libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
-                        library.getStatus());
-                lockService.waitlock(LockType.STUDENT, library.getStudentId());
-                updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
-                        library.getGroupNumber(), SubjectiveStatus.UNMARK);
-                studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0, null);
-                inspectedService.cancelByStudent(library.getStudentId());
-                lockService.unlock(LockType.STUDENT, library.getStudentId());
+            List<MarkTaskStatus> statusList = Arrays.asList(MarkTaskStatus.ARBITRATED, MarkTaskStatus.WAIT_ARBITRATE, MarkTaskStatus.PROBLEM);
+            List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndStatusNotIn(examId, paperNumber, groupNumber, userId, statusList);
+            for (MarkTask markTask : markTaskList) {
+                Long studentId = markTask.getStudentId();
+                markTrackService.deleteByTaskId(markTask.getId());
+//                specialTagDao.deleteByLibraryId(library.getId());
+                markTaskService.resetById(markTask.getId(), null, null, null, MarkTaskStatus.WAITING);
+                lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
+                updateStudentGroupStatus(studentId, examId, paperNumber, groupNumber, SubjectiveStatus.UNMARK);
+                markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0, null);
+//                inspectedService.cancelByStudent(library.getStudentId());
+                lockService.unlock(LockType.STUDENT, markTask.getStudentId());
             }
-            markerDao.resetById(marker.getId());
+            markUserGroupService.resetById(markUserGroup.getId());
         }
-        updateMarkedCount(group);
+        this.updateMarkedCount(examId, paperNumber, groupNumber);
         releaseByMarkUserGroup(markUserGroup);
-        inspectHistoryService.deleteByExamIdAndSubjectCode(marker.getExamId(), marker.getSubjectCode());*/
+//        inspectHistoryService.deleteByExamIdAndSubjectCode(marker.getExamId(), marker.getSubjectCode());
+    }
+
+    @Override
+    public void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber) {
+        List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
+        int count = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(examId, paperNumber, groupNumber, markTaskStatuses);
+        markGroupService.updateMarkedCount(examId, paperNumber, groupNumber, count);
+    }
+
+    private void updateStudentGroupStatus(Long studentId, Long examId, String paperNumber, Integer groupNumber, SubjectiveStatus status) {
+        MarkGroupStudent gs = new MarkGroupStudent();
+        gs.setStudentId(studentId);
+        gs.setExamId(examId);
+        gs.setPaperNumber(paperNumber);
+        gs.setGroupNumber(groupNumber);
+        gs.setStatus(status);
+        markGroupStudentService.save(gs);
     }
 
     private String getGroupKey(MarkGroup markGroup) {

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -1,6 +1,8 @@
 package com.qmth.teachcloud.mark.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+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;
@@ -21,6 +23,7 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.text.DecimalFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -109,4 +112,42 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
                 .eq(MarkTask::getUserId, userId);
         return this.count(queryWrapper);
     }
+
+    @Override
+    public List<MarkTask> listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndStatusNotIn(Long examId, String paperNumber, Integer groupNumber, Long userId, List<MarkTaskStatus> statusList) {
+        QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkTask::getExamId, examId)
+                .eq(MarkTask::getPaperNumber, paperNumber)
+                .eq(MarkTask::getGroupNumber, groupNumber)
+                .eq(MarkTask::getUserId, userId)
+                .notIn(MarkTask::getStatus, statusList);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public void resetById(Long markTaskId, Long userId, Long rejecterId, Long date, MarkTaskStatus newStatus) {
+        UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkTask::getStatus, newStatus)
+                .set(MarkTask::getUserId, userId)
+                .set(MarkTask::getMarkerTime, null)
+                .set(MarkTask::getMarkerScore, null)
+                .set(MarkTask::getMarkerScoreList, null)
+                .set(MarkTask::getMarkerSpent, null)
+                .set(MarkTask::getHeaderId, rejecterId)
+                .set(MarkTask::getHeaderTime, date)
+                .set(MarkTask::getHeaderScore, null)
+                .set(MarkTask::getHeaderScoreList, null)
+                .eq(MarkTask::getId, markTaskId);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public int countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(Long examId, String paperNumber, Integer groupNumber, List<MarkTaskStatus> statusList) {
+        QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkTask::getExamId, examId)
+                .eq(MarkTask::getPaperNumber, paperNumber)
+                .eq(MarkTask::getGroupNumber, groupNumber)
+                .in(MarkTask::getStatus, statusList);
+        return this.count(queryWrapper);
+    }
 }

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

@@ -1,9 +1,10 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.mark.entity.MarkTrack;
 import com.qmth.teachcloud.mark.mapper.MarkTrackMapper;
 import com.qmth.teachcloud.mark.service.MarkTrackService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +18,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarkTrackServiceImpl extends ServiceImpl<MarkTrackMapper, MarkTrack> implements MarkTrackService {
 
+    @Override
+    public void deleteByTaskId(Long taskId) {
+        UpdateWrapper<MarkTrack> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkTrack::getTaskId, taskId);
+        this.remove(updateWrapper);
+    }
 }

+ 13 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java

@@ -1,6 +1,8 @@
 package com.qmth.teachcloud.mark.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+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;
@@ -180,4 +182,15 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
         }
         return true;
     }
+
+    @Override
+    public void resetById(Long id) {
+        UpdateWrapper<MarkUserGroup> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkUserGroup::getFinishCount, null)
+                .set(MarkUserGroup::getAvgScore, null)
+                .set(MarkUserGroup::getAvgSpeed, null)
+                .set(MarkUserGroup::getStdevScore, null)
+                .eq(MarkUserGroup::getId, id);
+        this.update(updateWrapper);
+    }
 }