瀏覽代碼

add. 首页

caozixuan 10 月之前
父節點
當前提交
84a4d317eb

+ 3 - 0
distributed-print-business/src/main/resources/db/log/脚本-caozx.sql

@@ -0,0 +1,3 @@
+-- 2024-08-21
+INSERT INTO sys_privilege (id, name, url, type, parent_id, sequence, property, enable, default_auth, front_display) VALUES ('3055', '首页-评卷待办数量', '/api/admin/work/mark/task/ready_count', 'URL', '16', '11', 'SYS', '1', '1', '1');
+INSERT INTO sys_privilege (id, name, url, type, parent_id, sequence, property, enable, default_auth, front_display) VALUES ('3056', '首页-评卷待办列表', '/api/admin/work/mark/task/ready', 'URL', '16', '12', 'SYS', '1', '1', '1');

+ 28 - 25
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskAuditController.java

@@ -7,12 +7,16 @@ import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.GradeInitializeService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
+import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 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 com.qmth.teachcloud.mark.service.MarkUserGroupService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -40,13 +44,18 @@ public class ExamTaskAuditController {
 
     @Resource
     private ExamTaskService examTaskService;
+
     @Resource
     private ActivitiService activitiService;
+
     @Resource
     private GradeInitializeService gradeInitializeService;
+
     @Resource
     private MarkPaperService markPaperService;
 
+    @Resource
+    private MarkUserGroupService markUserGroupService;
 
     @ApiOperation(value = "审核-印刷员驳回后命题老师修改")
     @RequestMapping(value = "/apply_resave", method = RequestMethod.POST)
@@ -60,40 +69,31 @@ public class ExamTaskAuditController {
     @ApiOperation(value = "入库审核-查询-未审核")
     @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST)
     public Result taskReviewListUnaudited(@ApiParam(value = "学期ID") @RequestParam(value = "semesterId", required = false) Long semesterId,
-                                          @ApiParam(value = "考试ID") @RequestParam(value = "examId", required = false) Long examId,
-                                          @ApiParam(value = "开课学院id") @RequestParam(value = "openCollegeId", required = false) Long openCollegeId,
-                                          @ApiParam(value = "课程ID") @RequestParam(value = "courseId", required = false) Long courseId,
-                                          @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                          @ApiParam(value = "命题老师ID") @RequestParam(value = "userId", required = false) Long userId,
-                                          @ApiParam(value = "命题时间(开始)") @RequestParam(value = "startTime", required = false) Long startTime,
-                                          @ApiParam(value = "命题时间(结束)") @RequestParam(value = "endTime", required = false) Long endTime,
-                                          @ApiParam(value = "申请时间(开始)") @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
-                                          @ApiParam(value = "申请时间(结束)") @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
-                                          @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                          @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+            @ApiParam(value = "考试ID") @RequestParam(value = "examId", required = false) Long examId, @ApiParam(value = "开课学院id") @RequestParam(value = "openCollegeId", required = false) Long openCollegeId,
+            @ApiParam(value = "课程ID") @RequestParam(value = "courseId", required = false) Long courseId, @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
+            @ApiParam(value = "命题老师ID") @RequestParam(value = "userId", required = false) Long userId, @ApiParam(value = "命题时间(开始)") @RequestParam(value = "startTime", required = false) Long startTime,
+            @ApiParam(value = "命题时间(结束)") @RequestParam(value = "endTime", required = false) Long endTime, @ApiParam(value = "申请时间(开始)") @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
+            @ApiParam(value = "申请时间(结束)") @RequestParam(value = "endCreateTime", required = false) Long endCreateTime, @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+            @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         if (semesterId == null) {
             throw ExceptionResultEnum.SEMESTER_ID_IS_NULL.exception();
         }
         if (examId == null) {
             throw ExceptionResultEnum.EXAM_ID_IS_NULL.exception();
         }
-        return ResultUtil.ok(examTaskService.listTaskReviewUnaudited(semesterId, examId, openCollegeId, courseId, paperNumber, userId, startTime, endTime, startCreateTime, endCreateTime, pageNumber, pageSize));
+        return ResultUtil.ok(
+                examTaskService.listTaskReviewUnaudited(semesterId, examId, openCollegeId, courseId, paperNumber, userId, startTime, endTime, startCreateTime, endCreateTime, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "入库审核-查询-已审核")
     @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST)
     public Result taskReviewListAudited(@ApiParam(value = "学期ID") @RequestParam(value = "semesterId", required = false) Long semesterId,
-                                        @ApiParam(value = "考试ID") @RequestParam(value = "examId", required = false) Long examId,
-                                        @ApiParam(value = "开课学院id") @RequestParam(value = "openCollegeId", required = false) Long openCollegeId,
-                                        @ApiParam(value = "课程ID") @RequestParam(value = "courseId", required = false) Long courseId,
-                                        @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                        @ApiParam(value = "命题老师ID") @RequestParam(value = "userId", required = false) Long userId,
-                                        @ApiParam(value = "命题时间(开始)") @RequestParam(value = "startTime", required = false) Long startTime,
-                                        @ApiParam(value = "命题时间(结束)") @RequestParam(value = "endTime", required = false) Long endTime,
-                                        @ApiParam(value = "申请时间(开始)") @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
-                                        @ApiParam(value = "申请时间(结束)") @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
-                                        @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                        @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+            @ApiParam(value = "考试ID") @RequestParam(value = "examId", required = false) Long examId, @ApiParam(value = "开课学院id") @RequestParam(value = "openCollegeId", required = false) Long openCollegeId,
+            @ApiParam(value = "课程ID") @RequestParam(value = "courseId", required = false) Long courseId, @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
+            @ApiParam(value = "命题老师ID") @RequestParam(value = "userId", required = false) Long userId, @ApiParam(value = "命题时间(开始)") @RequestParam(value = "startTime", required = false) Long startTime,
+            @ApiParam(value = "命题时间(结束)") @RequestParam(value = "endTime", required = false) Long endTime, @ApiParam(value = "申请时间(开始)") @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
+            @ApiParam(value = "申请时间(结束)") @RequestParam(value = "endCreateTime", required = false) Long endCreateTime, @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+            @ApiParam(value = "分页参数") @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         if (examId == null) {
             throw ExceptionResultEnum.EXAM_ID_IS_NULL.exception();
         }
@@ -110,10 +110,13 @@ public class ExamTaskAuditController {
     @ApiOperation(value = "入库审核-查询-已审核数量")
     @RequestMapping(value = "/review_list_audited_count", method = RequestMethod.POST)
     public Result taskReviewListAuditedCount() {
-        int taskReviewAuditedCount = examTaskService.listTaskReviewAudited(null, null, null,null, null, null, null, null, null, null, SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords().size();
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        int taskReviewAuditedCount = examTaskService.listTaskReviewAudited(null, null, null, null, null, null, null,
+                null, null, null, SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords().size();
         long paperCount = markPaperService.countByPropositionTeacherId(true);
         long gradeCount = gradeInitializeService.countByPropositionTeacherId(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, true);
-        return ResultUtil.ok(taskReviewAuditedCount + paperCount + gradeCount);
+        int markTaskCount = markUserGroupService.countByMarkTask(requestUser.getId(), MarkPaperStatus.FINISH);
+        return ResultUtil.ok(taskReviewAuditedCount + paperCount + gradeCount + markTaskCount);
     }
 }
 

+ 39 - 26
distributed-print/src/main/java/com/qmth/distributed/print/api/WorkController.java

@@ -13,11 +13,13 @@ 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.enums.mark.MarkPaperStatus;
 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 com.qmth.teachcloud.mark.service.MarkUserGroupService;
 import io.swagger.annotations.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
@@ -46,51 +48,48 @@ public class WorkController {
 
     @Resource
     private ExamTaskService examTaskService;
+
     @Resource
     private ExamTaskDetailService examTaskDetailService;
+
     @Resource
     private MarkPaperService markPaperService;
+
     @Resource
     private GradeInitializeService gradeInitializeService;
 
-    @ApiOperation(value = "获取待办接口")
+    @Resource
+    private MarkUserGroupService markUserGroupService;
+
+    @ApiOperation(value = "首页-电子交卷待办列表")
     @RequestMapping(value = "/exam/task/ready", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = WorkResult.class)})
+    @ApiResponses({ @ApiResponse(code = 200, message = "返回信息", response = WorkResult.class) })
     public Result getFlowTaskReady(@ApiParam(value = "页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                   @ApiParam(value = "数量", required = true) @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+            @ApiParam(value = "数量", required = true) @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return ResultUtil.ok(examTaskService.getFlowTaskReadyList(new Page<>(pageNumber, pageSize), SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId(), sysUser.getId()));
     }
 
-    @ApiOperation(value = "获取待办计数接口")
+    @ApiOperation(value = "首页-电子交卷待办数量")
     @RequestMapping(value = "/exam/task/ready_count", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = WorkResult.class)})
+    @ApiResponses({ @ApiResponse(code = 200, message = "返回信息", response = WorkResult.class) })
     public Result getFlowTaskReadyCount() {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(examTaskService.getFlowTaskReadyList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE), SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId(), sysUser.getId()).getRecords().size());
+        return ResultUtil.ok(examTaskService.getFlowTaskReadyList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE),
+                SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId(), sysUser.getId()).getRecords().size());
     }
 
-    /**
-     * 阅卷待办任务-数量
-     *
-     * @return
-     */
-    @ApiOperation(value = "阅卷待办任务-数量")
+    @ApiOperation(value = "首页-评卷任务设置待办数量")
     @RequestMapping(value = "/structure/task/ready_count", method = RequestMethod.POST)
     public Result countStructure() {
         return ResultUtil.ok(markPaperService.countByPropositionTeacherId(false));
     }
 
-    /**
-     * 阅卷待办任务-数量
-     *
-     * @return
-     */
-    @ApiOperation(value = "阅卷待办任务-列表")
+    @ApiOperation(value = "首页-评卷任务设置待办列表")
     @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) {
-        IPage<MarkSettingDto> markSettingDtoIPage = markPaperService.listPaperSetting(null, null,null, null, false, pageNumber, pageSize);
+    public Result list(@RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber, @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        IPage<MarkSettingDto> markSettingDtoIPage = markPaperService.listPaperSetting(null, null, null, null, false,
+                pageNumber, pageSize);
         for (MarkSettingDto record : markSettingDtoIPage.getRecords()) {
             ExamTaskDetail examTaskDetail = examTaskDetailService.findByExamIdAndCourseIdAndPaperNumber(record.getExamId(), record.getCourseId(), record.getPaperNumber());
             if (examTaskDetail != null) {
@@ -106,7 +105,7 @@ public class WorkController {
     /**
      * 教研待办任务-数量
      */
-    @ApiOperation(value = "教研待办任务-数量")
+    @ApiOperation(value = "首页-教研待办数量")
     @RequestMapping(value = "/grade/task/ready_count", method = RequestMethod.POST)
     public Result countReport() {
         return ResultUtil.ok(gradeInitializeService.countByPropositionTeacherId(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, false));
@@ -115,11 +114,25 @@ public class WorkController {
     /**
      * 教研待办任务
      */
-    @ApiOperation(value = "教研待办任务-列表")
+    @ApiOperation(value = "首页-教研待办列表")
     @RequestMapping(value = "/grade/task/ready", method = RequestMethod.POST)
-    public Result gradeList(@RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                            @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(gradeInitializeService.listNeedAnalyzedPaperToWork((SysUser) ServletUtil.getRequestUser(), pageNumber, pageSize, GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, false));
+    public Result gradeList(@RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber, @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(
+                gradeInitializeService.listNeedAnalyzedPaperToWork((SysUser) ServletUtil.getRequestUser(), pageNumber,
+                        pageSize, GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, false));
+    }
+
+    @ApiOperation(value = "首页-评卷待办数量")
+    @RequestMapping(value = "/mark/task/ready_count", method = RequestMethod.POST)
+    public Result markTaskCount() {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(markUserGroupService.countByMarkTask(requestUser.getId(), MarkPaperStatus.FORMAL));
+    }
+
+    @ApiOperation(value = "首页-评卷待办列表")
+    @RequestMapping(value = "/mark/task/ready", method = RequestMethod.POST)
+    public Result markTaskList(@RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber, @RequestParam @Min(2) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(markUserGroupService.listEntranceGroup(null, null, null, null, pageNumber, pageSize));
     }
 }
 

+ 18 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/entrance/MarkEntranceDto.java

@@ -10,6 +10,8 @@ public class MarkEntranceDto {
 
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
+    private String examName;
+    private String semesterName;
     private Integer groupNumber;
     private String courseCode;
     private String courseName;
@@ -33,6 +35,22 @@ public class MarkEntranceDto {
         this.examId = examId;
     }
 
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
     public Integer getGroupNumber() {
         return groupNumber;
     }

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

@@ -2,6 +2,7 @@ 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.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.mark.dto.mark.entrance.MarkEntranceDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkUserGroupProgressDto;
@@ -29,4 +30,6 @@ public interface MarkUserGroupMapper extends BaseMapper<MarkUserGroup> {
     IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndGroupNumber(@Param("page") Page<MarkUserGroupProgressDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("loginName") String loginName, @Param("className") String className);
 
     IPage<MarkQualityDto> pageQuality(@Param("page") Page<MarkQualityDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("loginName") String loginName);
+
+    int countByMarkTask(@Param("userId") Long userId, @Param("status") String status);
 }

+ 21 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserGroupService.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.teachcloud.common.enums.mark.MarkMode;
+import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.mark.dto.mark.entrance.MarkEntranceDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityChartDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkQualityDto;
@@ -22,17 +23,21 @@ import java.util.List;
  */
 public interface MarkUserGroupService extends IService<MarkUserGroup> {
 
-    IPage<MarkEntranceDto> listEntranceGroup(Long examId,Long openCollegeId, Long courseCode, String paperNumber, Integer pageNumber, Integer pageSize);
+    IPage<MarkEntranceDto> listEntranceGroup(Long examId, Long openCollegeId, Long courseCode, String paperNumber,
+            Integer pageNumber, Integer pageSize);
 
-    List<MarkUser> listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(Long examId, String paperNumber, Integer number, String className);
+    List<MarkUser> listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(Long examId, String paperNumber,
+            Integer number, String className);
 
-    IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber, String loginName, String className, Integer pageNumber, Integer pageSize);
+    IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber,
+            Integer groupNumber, String loginName, String className, Integer pageNumber, Integer pageSize);
 
     void addMarkUserGroup(Long examId, String paperNumber, Integer groupNumber, List<Long> userIds);
 
     void setTopCount(List<Long> markUserGroupIds, Integer topCount);
 
-    MarkUserGroup getByExamIdAndPaperNumberAndGroupNumberAndUserId(Long examId, String paperNumber, Integer groupNumber, Long userId);
+    MarkUserGroup getByExamIdAndPaperNumberAndGroupNumberAndUserId(Long examId, String paperNumber, Integer groupNumber,
+            Long userId);
 
     void deleteMarker(Long markUserGroupId);
 
@@ -48,10 +53,11 @@ public interface MarkUserGroupService extends IService<MarkUserGroup> {
 
     List<MarkUserGroup> listByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
 
-    void updateQualityById(Long markUserGroupId, int finishCount, int headerFinishCount, int validCount, double v, double avgScore, double stdevScore, double maxScore, double minScore);
+    void updateQualityById(Long markUserGroupId, int finishCount, int headerFinishCount, int validCount, double v,
+            double avgScore, double stdevScore, double maxScore, double minScore);
 
     List<MarkQualityChartDto> listQualityChart(Long examId, String paperNumber, Integer groupNumber);
-    
+
     List<MarkUserGroup> listByExamIdAndPaperNumberAndUserId(Long examId, String paperNumber, Long userId);
 
     void deleteByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
@@ -59,4 +65,13 @@ public interface MarkUserGroupService extends IService<MarkUserGroup> {
     void updateMode(Long examId, String paperNumber, Integer groupNumber, Long userId, MarkMode mode);
 
     List<String> listBindMarkers(Long examId, String paperNumber, Integer groupNumber);
+
+    /**
+     * 查询评卷任务待办/已办数量
+     *
+     * @param userId 用户id
+     * @param status 试卷状态
+     * @return 任务数量
+     */
+    int countByMarkTask(Long userId, MarkPaperStatus status);
 }

+ 5 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java

@@ -30,11 +30,9 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -349,4 +347,9 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
         }
         return userIds;
     }
+
+    @Override
+    public int countByMarkTask(Long userId, MarkPaperStatus status) {
+        return this.baseMapper.countByMarkTask(userId, status.name());
+    }
 }

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

@@ -29,7 +29,9 @@
             so.name openCollege,
             mg.paper_number paperNumber,
             ifnull(mg.task_count, 0) taskCount,
-            ifnull(mg.marked_count, 0) markedCount
+            ifnull(mg.marked_count, 0) markedCount,
+            be.name AS examName,
+            bs.name AS semesterName
         FROM
             mark_user_group mug
                 LEFT JOIN
@@ -40,8 +42,14 @@
             basic_course bc ON mg.course_id = bc.id
                 LEFT JOIN
             sys_org so ON bc.teaching_room_id = so.id
+                LEFT JOIN
+            basic_exam be ON mug.exam_id = be.id
+                LEFT JOIN
+            basic_semester bs ON be.semester_id = bs.id
         <where>
-            and mg.exam_id = #{examId}
+            <if test="examId != null">
+                and mg.exam_id = #{examId}
+            </if>
             <if test="openCollegeId != null">
                 and bc.teaching_room_id = #{openCollegeId}
             </if>
@@ -144,4 +152,22 @@
             </if>
     </select>
 
+    <select id="countByMarkTask" resultType="java.lang.Integer">
+        SELECT
+            count(*)
+        FROM
+            mark_user_group mug
+                LEFT JOIN
+            mark_group mg ON mug.exam_id = mg.exam_id
+                AND mug.paper_number = mg.paper_number
+                AND mug.group_number = mg.number
+        <where>
+            <if test="userId != null">
+                AND mug.user_id = #{userId} AND mg.task_count > 0
+            </if>
+            <if test="status != null and status != ''">
+                AND EXISTS (SELECT 1 FROM mark_paper mp WHERE mp.exam_id = mg.exam_id AND mp.paper_number = mg.paper_number AND mp.status = #{status})
+            </if>
+        </where>
+    </select>
 </mapper>