Browse Source

3.3.0 仲裁管理

xiaofei 1 year ago
parent
commit
1b7c2c7563

+ 29 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkArbitrateController.java

@@ -1,13 +1,25 @@
 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.bean.dto.mark.manage.MarkArbitrateDto;
 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.MarkArbitrateHistoryService;
 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 javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
 /**
  * <p>
  * 仲裁记录表 前端控制器
@@ -21,4 +33,20 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/arbitrate")
 public class MarkArbitrateController {
 
+    @Resource
+    private MarkArbitrateHistoryService markArbitrateHistoryService;
+
+    /**
+     * 问题试卷列表查询
+     */
+    @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,
+                       @ApiParam(value = "分组号") @RequestParam(required = false) Integer groupNumber,
+                       @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                       @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        IPage<MarkArbitrateDto> markArbitrateDtoIPage = markArbitrateHistoryService.pageArbitrate(examId, paperNumber, groupNumber, pageNumber, pageSize);
+        return ResultUtil.ok(markArbitrateDtoIPage);
+    }
 }

+ 148 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/manage/MarkArbitrateDto.java

@@ -0,0 +1,148 @@
+package com.qmth.teachcloud.common.bean.dto.mark.manage;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.mark.MarkArbitrateStatus;
+
+public class MarkArbitrateDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long studentId;
+    private String paperNumber;
+    private String studentName;
+    private String studentCode;
+    private Long createTime;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long updateUserId;
+    private String updateUserLoginName;
+    private String updateUserName;
+    private Long updateTime;
+    private MarkArbitrateStatus status;
+    private String statusName;
+    private Integer groupNumber;
+    private String groupQuestions;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    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 Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateUserId() {
+        return updateUserId;
+    }
+
+    public void setUpdateUserId(Long updateUserId) {
+        this.updateUserId = updateUserId;
+    }
+
+    public String getUpdateUserLoginName() {
+        return updateUserLoginName;
+    }
+
+    public void setUpdateUserLoginName(String updateUserLoginName) {
+        this.updateUserLoginName = updateUserLoginName;
+    }
+
+    public String getUpdateUserName() {
+        return updateUserName;
+    }
+
+    public void setUpdateUserName(String updateUserName) {
+        this.updateUserName = updateUserName;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public MarkArbitrateStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(MarkArbitrateStatus status) {
+        this.status = status;
+    }
+
+    public String getStatusName() {
+        return statusName;
+    }
+
+    public void setStatusName(String statusName) {
+        this.statusName = statusName;
+    }
+
+    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;
+    }
+}

+ 5 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/manage/MarkProblemDto.java

@@ -30,7 +30,7 @@ public class MarkProblemDto {
     private String updateUserName;
     private Long updateTime;
     private MarkProblemStatus status;
-    private String problemStatusName;
+    private String statusName;
     private Integer groupNumber;
     private String groupQuestions;
 
@@ -178,12 +178,12 @@ public class MarkProblemDto {
         this.status = status;
     }
 
-    public String getProblemStatusName() {
-        return problemStatusName;
+    public String getStatusName() {
+        return statusName;
     }
 
-    public void setProblemStatusName(String problemStatusName) {
-        this.problemStatusName = problemStatusName;
+    public void setStatusName(String statusName) {
+        this.statusName = statusName;
     }
 
     public Integer getGroupNumber() {

+ 47 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/mark/MarkArbitrateStatus.java

@@ -0,0 +1,47 @@
+package com.qmth.teachcloud.common.enums.mark;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public enum MarkArbitrateStatus {
+
+    WAITING("待处理", 0), MARKED("已给分", 1);
+
+    private String name;
+
+    private int value;
+
+    private static List<MarkArbitrateStatus> options;
+
+    private MarkArbitrateStatus(String name, int value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static MarkArbitrateStatus findByValue(int value) {
+        for (MarkArbitrateStatus c : MarkArbitrateStatus.values()) {
+            if (c.getValue() == value) {
+                return c;
+            }
+        }
+        return null;
+    }
+
+    public static List<MarkArbitrateStatus> getOptionList() {
+        if (options == null) {
+            options = new LinkedList<>();
+            for (MarkArbitrateStatus status : MarkArbitrateStatus.values()) {
+                options.add(status);
+            }
+        }
+        return options;
+    }
+}

+ 2 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/mark/MarkProblemStatus.java

@@ -5,7 +5,7 @@ import java.util.List;
 
 public enum MarkProblemStatus {
 
-    WAITING("待处理", 0), MARKED("已给分", 1), BACK("已打回", 2);
+    WAITING("待处理", 0), BACK("已打回", 2);
 
     private String name;
 
@@ -39,9 +39,7 @@ public enum MarkProblemStatus {
         if (options == null) {
             options = new LinkedList<>();
             for (MarkProblemStatus status : MarkProblemStatus.values()) {
-                if (status != BACK) {
-                    options.add(status);
-                }
+                options.add(status);
             }
         }
         return options;

+ 12 - 9
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkArbitrateHistory.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.mark.MarkArbitrateStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -50,11 +51,11 @@ public class MarkArbitrateHistory implements Serializable {
     private Long studentId;
 
     @ApiModelProperty(value = "状态")
-    private String status;
+    private MarkArbitrateStatus status;
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "处理人ID")
-    private Long userId;
+    private Long updateUserId;
 
     @ApiModelProperty(value = "总分")
     private Double totalScore;
@@ -117,20 +118,22 @@ public class MarkArbitrateHistory implements Serializable {
     public void setStudentId(Long studentId) {
         this.studentId = studentId;
     }
-    public String getStatus() {
+    public MarkArbitrateStatus getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(MarkArbitrateStatus status) {
         this.status = status;
     }
-    public Long getUserId() {
-        return userId;
+
+    public Long getUpdateUserId() {
+        return updateUserId;
     }
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
+    public void setUpdateUserId(Long updateUserId) {
+        this.updateUserId = updateUserId;
     }
+
     public Double getTotalScore() {
         return totalScore;
     }
@@ -171,7 +174,7 @@ public class MarkArbitrateHistory implements Serializable {
             ", secretNumber=" + secretNumber +
             ", studentId=" + studentId +
             ", status=" + status +
-            ", userId=" + userId +
+            ", updateUserId=" + updateUserId +
             ", totalScore=" + totalScore +
             ", scoreList=" + scoreList +
             ", createTime=" + createTime +

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

@@ -1,7 +1,11 @@
 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.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MarkArbitrateHistoryMapper extends BaseMapper<MarkArbitrateHistory> {
 
+    IPage<MarkArbitrateDto> pageArbitrate(@Param("page") Page<MarkArbitrateDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber);
 }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkArbitrateHistoryService.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.mark.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface MarkArbitrateHistoryService extends IService<MarkArbitrateHistory> {
 
+    IPage<MarkArbitrateDto> pageArbitrate(Long examId, String paperNumber, Integer groupNumber, Integer pageNumber, Integer pageSize);
 }

+ 31 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkArbitrateHistoryServiceImpl.java

@@ -1,11 +1,19 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+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.manage.MarkArbitrateDto;
+import com.qmth.teachcloud.common.entity.MarkStudent;
+import com.qmth.teachcloud.common.service.MarkQuestionService;
+import com.qmth.teachcloud.common.service.MarkStudentService;
 import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
 import com.qmth.teachcloud.mark.mapper.MarkArbitrateHistoryMapper;
 import com.qmth.teachcloud.mark.service.MarkArbitrateHistoryService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  * 仲裁记录表 服务实现类
@@ -17,4 +25,26 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarkArbitrateHistoryServiceImpl extends ServiceImpl<MarkArbitrateHistoryMapper, MarkArbitrateHistory> implements MarkArbitrateHistoryService {
 
+    @Resource
+    private MarkQuestionService markQuestionService;
+    @Resource
+    private MarkStudentService markStudentService;
+
+    @Override
+    public IPage<MarkArbitrateDto> pageArbitrate(Long examId, String paperNumber, Integer groupNumber, Integer pageNumber, Integer pageSize) {
+        Page<MarkArbitrateDto> page = new Page<>(pageNumber, pageSize);
+        IPage<MarkArbitrateDto> markArbitrateDtoIPage = this.baseMapper.pageArbitrate(page, examId, paperNumber, groupNumber);
+        for (MarkArbitrateDto arbitrateDto : markArbitrateDtoIPage.getRecords()) {
+            if (arbitrateDto.getStudentId() != null) {
+                MarkStudent markStudent = markStudentService.getById(arbitrateDto.getStudentId());
+                if (markStudent != null) {
+                    arbitrateDto.setStudentCode(markStudent.getStudentCode());
+                    arbitrateDto.setStudentName(markStudent.getStudentName());
+                }
+            }
+            arbitrateDto.setStatusName(arbitrateDto.getStatus().getName());
+            arbitrateDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, arbitrateDto.getGroupNumber()));
+        }
+        return markArbitrateDtoIPage;
+    }
 }

+ 9 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkProblemHistoryServiceImpl.java

@@ -59,17 +59,21 @@ public class MarkProblemHistoryServiceImpl extends ServiceImpl<MarkProblemHistor
             problemDto.setStudentName(markStudent.getStudentName());
             problemDto.setStudentCode(markStudent.getStudentCode());
             problemDto.setProblemTypeName(problemDto.getType().getName());
-            problemDto.setProblemStatusName(problemDto.getStatus().getName());
+            problemDto.setStatusName(problemDto.getStatus().getName());
             problemDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, groupNumber));
             if (problemDto.getUserId() != null) {
                 SysUser sysUser = sysUserService.getById(problemDto.getUserId());
-                problemDto.setUserLoginName(sysUser.getLoginName());
-                problemDto.setUserName(sysUser.getRealName());
+                if (sysUser != null) {
+                    problemDto.setUserLoginName(sysUser.getLoginName());
+                    problemDto.setUserName(sysUser.getRealName());
+                }
             }
             if (problemDto.getUpdateUserId() != null) {
                 SysUser sysUser = sysUserService.getById(problemDto.getUpdateUserId());
-                problemDto.setUpdateUserLoginName(sysUser.getLoginName());
-                problemDto.setUpdateUserName(sysUser.getRealName());
+                if (sysUser != null) {
+                    problemDto.setUpdateUserLoginName(sysUser.getLoginName());
+                    problemDto.setUpdateUserName(sysUser.getRealName());
+                }
             }
         }
         return markProblemDtoIPage;

+ 24 - 1
teachcloud-mark/src/main/resources/mapper/MarkArbitrateHistoryMapper.xml

@@ -12,11 +12,34 @@
         <result column="secret_number" property="secretNumber" />
         <result column="student_id" property="studentId" />
         <result column="status" property="status" />
-        <result column="user_id" property="userId" />
+        <result column="update_user_id" property="updateUserId" />
         <result column="total_score" property="totalScore" />
         <result column="score_list" property="scoreList" />
         <result column="create_time" property="createTime" />
         <result column="update_time" property="updateTime" />
     </resultMap>
+    <select id="pageArbitrate" resultType="com.qmth.teachcloud.common.bean.dto.mark.manage.MarkArbitrateDto">
+        SELECT
+            mah.id,
+            mah.exam_id examId,
+            mah.paper_number paperNumber,
+            mah.group_number groupNumber,
+            mah.student_id studentId,
+            mah.status,
+            mah.update_user_id updateUserId,
+            su.login_name updateUserLoginName,
+            su.real_name updateUserName,
+            mah.create_time createTime,
+            mah.update_time updateTime
+        FROM
+            mark_arbitrate_history mah
+                LEFT JOIN
+            sys_user su ON mah.update_user_id = su.id
+        where mah.exam_id = #{examId}
+            AND mah.paper_number = #{paperNumber}
+            <if test="groupNumber != null and groupNumber != ''">
+                AND group_number = #{groupNumber}
+            </if>
+    </select>
 
 </mapper>