package com.qmth.teachcloud.report.business.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.teachcloud.common.contant.SystemConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * <p>
 * 参考课程考生各考查点维度分析表
 * </p>
 *
 * @author wangliang
 * @since 2021-06-01
 */
@ApiModel(value = "TAExamCourseRecordDio对象", description = "参考课程考生各考查点维度分析表")
public class TAExamCourseRecordDio implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @ApiModelProperty(value = "基础考生成绩记录表id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "exam_record_id")
    private Long examRecordId;

    @ApiModelProperty(value = "学校id（冗余）")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "school_id")
    private Long schoolId;

    @ApiModelProperty(value = "试卷id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "paper_id")
    private Long paperId;

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

    @ApiModelProperty(value = "模块类型")
    @TableField(value = "dimension_type")
    private String dimensionType;

    @ApiModelProperty(value = "课程编号")
    @TableField(value = "course_code")
    private String courseCode;

    @ApiModelProperty(value = "课程名称")
    @TableField(value = "course_name")
    private String courseName;

    @ApiModelProperty(value = "学生id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "student_id")
    private Long studentId;

    @ApiModelProperty(value = "考号")
    @TableField(value = "student_code")
    private String studentCode;

    @ApiModelProperty(value = "维度编号")
    @TableField(value = "dimension_code")
    private String dimensionCode;

    @ApiModelProperty(value = "该学生在该知识点的得分")
    @TableField(value = "student_score")
    private BigDecimal studentScore;

    @ApiModelProperty(value = "得分率")
    @TableField(value = "score_rate")
    private BigDecimal scoreRate;

    @ApiModelProperty(value = "熟练度等级")
    @TableField(value = "proficiency")
    private String proficiency;

    @ApiModelProperty(value = "所属考查学院id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "inspect_college_id")
    private Long inspectCollegeId;

    @ApiModelProperty(value = "所属考查学院名称")
    @TableField(value = "inspect_college_name")
    private String inspectCollegeName;

    @ApiModelProperty(value = "所属考查学院id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "teacher_id")
    private Long teacherId;

    @ApiModelProperty(value = "所属考查学院名称")
    @TableField(value = "teacher_name")
    private String teacherName;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getExamRecordId() {
        return examRecordId;
    }

    public void setExamRecordId(Long examRecordId) {
        this.examRecordId = examRecordId;
    }

    public Long getPaperId() {
        return paperId;
    }

    public void setPaperId(Long paperId) {
        this.paperId = paperId;
    }

    public String getDimensionType() {
        return dimensionType;
    }

    public void setDimensionType(String dimensionType) {
        this.dimensionType = dimensionType;
    }

    public String getDimensionCode() {
        return dimensionCode;
    }

    public void setDimensionCode(String dimensionCode) {
        this.dimensionCode = dimensionCode;
    }

    public BigDecimal getStudentScore() {
        if (Objects.nonNull(studentScore)) {
            return studentScore.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
        } else {
            return studentScore;
        }
    }

    public void setStudentScore(BigDecimal studentScore) {
        this.studentScore = studentScore;
    }

    public BigDecimal getScoreRate() {
        if (Objects.nonNull(scoreRate)) {
            return scoreRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
        } else {
            return scoreRate;
        }
    }

    public void setScoreRate(BigDecimal scoreRate) {
        this.scoreRate = scoreRate;
    }

    public String getProficiency() {
        return proficiency;
    }

    public void setProficiency(String proficiency) {
        this.proficiency = proficiency;
    }

    public Long getExamId() {
        return examId;
    }

    public void setExamId(Long examId) {
        this.examId = examId;
    }

    public String getCourseCode() {
        return courseCode;
    }

    public void setCourseCode(String courseCode) {
        this.courseCode = courseCode;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getStudentCode() {
        return studentCode;
    }

    public void setStudentCode(String studentCode) {
        this.studentCode = studentCode;
    }

    public Long getInspectCollegeId() {
        return inspectCollegeId;
    }

    public void setInspectCollegeId(Long inspectCollegeId) {
        this.inspectCollegeId = inspectCollegeId;
    }

    public String getInspectCollegeName() {
        return inspectCollegeName;
    }

    public void setInspectCollegeName(String inspectCollegeName) {
        this.inspectCollegeName = inspectCollegeName;
    }

    public Long getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(Long schoolId) {
        this.schoolId = schoolId;
    }

    public Long getStudentId() {
        return studentId;
    }

    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }

    public Long getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Long teacherId) {
        this.teacherId = teacherId;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }
}
