package com.qmth.teachcloud.mark.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.teachcloud.common.contant.SystemConstant;
import com.qmth.teachcloud.common.enums.mark.MarkMode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * <p>
 * 评卷员表
 * </p>
 *
 * @author xf
 * @since 2023-09-22
 */
@TableName("mark_user_group")
@ApiModel(value="MarkUserGroup对象", description="评卷员表")
public class MarkUserGroup implements Serializable {

    private static final long serialVersionUID = 1L;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "主键")
    @TableId(value = "id")
    private Long id;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "考试ID")
    private Long examId;

    @ApiModelProperty(value = "试卷编号")
    private String paperNumber;

    @ApiModelProperty(value = "分组编号")
    private Integer groupNumber;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    @ApiModelProperty(value = "强制评卷模式")
    private MarkMode mode;

    @ApiModelProperty(value = "评卷数上限")
    private Integer topCount;

    @ApiModelProperty(value = "完成数量")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer finishCount;
    @ApiModelProperty(value = "有效数量")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer validCount;
    @ApiModelProperty(value = "有效分数里-管理员直接打分数量")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer headerFinishCount;

    @ApiModelProperty(value = "平均分")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double avgScore;
    @ApiModelProperty(value = "最高分")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double maxScore;
    @ApiModelProperty(value = "最低分")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double minScore;

    @ApiModelProperty(value = "平均时长")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double avgSpeed;

    @ApiModelProperty(value = "标准差")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double stdevScore;

    public MarkUserGroup() {
    }

    public MarkUserGroup(Long examId, String paperNumber, Integer groupNumber, Long userId) {
        this.id = SystemConstant.getDbUuid();
        this.examId = examId;
        this.paperNumber = paperNumber;
        this.groupNumber = groupNumber;
        this.userId = userId;
    }

    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 Integer getGroupNumber() {
        return groupNumber;
    }

    public void setGroupNumber(Integer groupNumber) {
        this.groupNumber = groupNumber;
    }
    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public MarkMode getMode() {
        return mode;
    }

    public void setMode(MarkMode mode) {
        this.mode = mode;
    }
    public Integer getTopCount() {
        return topCount;
    }

    public void setTopCount(Integer topCount) {
        this.topCount = topCount;
    }
    public Integer getFinishCount() {
        return finishCount;
    }

    public void setFinishCount(Integer finishCount) {
        this.finishCount = finishCount;
    }

    public Integer getValidCount() {
        return validCount;
    }

    public void setValidCount(Integer validCount) {
        this.validCount = validCount;
    }

    public Integer getHeaderFinishCount() {
        return headerFinishCount;
    }

    public void setHeaderFinishCount(Integer headerFinishCount) {
        this.headerFinishCount = headerFinishCount;
    }

    public Double getAvgScore() {
        return avgScore;
    }

    public void setAvgScore(Double avgScore) {
        this.avgScore = avgScore;
    }

    public Double getMaxScore() {
        return maxScore;
    }

    public void setMaxScore(Double maxScore) {
        this.maxScore = maxScore;
    }

    public Double getMinScore() {
        return minScore;
    }

    public void setMinScore(Double minScore) {
        this.minScore = minScore;
    }

    public Double getAvgSpeed() {
        return avgSpeed;
    }

    public void setAvgSpeed(Double avgSpeed) {
        this.avgSpeed = avgSpeed;
    }
    public Double getStdevScore() {
        return stdevScore;
    }

    public void setStdevScore(Double stdevScore) {
        this.stdevScore = stdevScore;
    }

    @Override
    public String toString() {
        return "MarkUserGroup{" +
            "id=" + id +
            ", examId=" + examId +
            ", paperNumber=" + paperNumber +
            ", groupNumber=" + groupNumber +
            ", userId=" + userId +
            ", mode=" + mode +
            ", topCount=" + topCount +
            ", finishCount=" + finishCount +
            ", validCount=" + validCount +
            ", headerFinishCount=" + headerFinishCount +
            ", avgScore=" + avgScore +
            ", maxScore=" + maxScore +
            ", minScore=" + minScore +
            ", avgSpeed=" + avgSpeed +
            ", stdevScore=" + stdevScore +
        "}";
    }
}
