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 = "TAExamCourse对象", description = "考试课程维度分析表")
public class TAExamCourse 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_id")
    private Long examId;

    @ApiModelProperty(value = "考试名称（冗余）")
    @TableField(value = "exam_name")
    private String examName;

    @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 = "school_id")
    private Long schoolId;

    @ApiModelProperty(value = "开课学院id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "teach_college_id")
    private Long teachCollegeId;

    @ApiModelProperty(value = "开课学院名称")
    @TableField(value = "teach_college_name")
    private String teachCollegeName;

    @ApiModelProperty(value = "考查学院数量")
    @TableField(value = "inspect_college_count")
    private Integer inspectCollegeCount;

    @ApiModelProperty(value = "考查学院名称（','隔开）")
    @TableField(value = "inspect_college_names")
    private String inspectCollegeNames;

    @ApiModelProperty(value = "总体平均分")
    @TableField(value = "avg_score")
    private BigDecimal avgScore;

    @ApiModelProperty(value = "通过人数")
    @TableField(value = "pass_count")
    private Integer passCount;

    @ApiModelProperty(value = "通过率")
    @TableField(value = "pass_rate")
    private BigDecimal passRate;

    @ApiModelProperty(value = "应届通过人数")
    @TableField(value = "current_pass_count")
    private Integer currentPassCount;

    @ApiModelProperty(value = "应届通过率")
    @TableField(value = "current_pass_rate")
    private BigDecimal currentPassRate;

    @ApiModelProperty(value = "试卷满分")
    @TableField(value = "total_score")
    private BigDecimal totalScore;

    @ApiModelProperty(value = "实际参考人数")
    @TableField(value = "reality_count")
    private Integer realityCount;

    @ApiModelProperty(value = "缺考人数")
    @TableField(value = "absent_count")
    private Integer absentCount;

    @ApiModelProperty(value = "总应参考人数")
    @TableField(value = "total_count")
    private Integer totalCount;

    @ApiModelProperty(value = "最低分")
    @TableField(value = "current_min_score")
    private BigDecimal currentMinScore;

    @ApiModelProperty(value = "最高分")
    @TableField(value = "current_max_score")
    private BigDecimal currentMaxScore;

    @ApiModelProperty(value = "全体参考平均分")
    @TableField(value = "current_avg_score")
    private BigDecimal currentAvgScore;

    @ApiModelProperty(value = "难度系数（得分率）")
    @TableField(value = "current_score_rate")
    private BigDecimal currentScoreRate;

    @ApiModelProperty(value = "应届实际考试人数")
    @TableField(value = "current_reality_count")
    private Integer currentRealityCount;

    @ApiModelProperty(value = "应届缺考人数")
    @TableField(value = "current_absent_count")
    private Integer currentAbsentCount;

    @ApiModelProperty(value = "应届总考试人数")
    @TableField(value = "current_total_count")
    private Integer currentTotalCount;

    @ApiModelProperty(value = "应届实际考试人数占比")
    @TableField(value = "current_reality_rate")
    private BigDecimal currentRealityRate;

    @ApiModelProperty(value = "往届实际考试人数")
    @TableField(value = "past_reality_count")
    private Integer pastRealityCount;

    @ApiModelProperty(value = "往届缺考人数")
    @TableField(value = "past_absent_count")
    private Integer pastAbsentCount;

    @ApiModelProperty(value = "往届总人数")
    @TableField(value = "past_total_count")
    private Integer pastTotalCount;

    @ApiModelProperty(value = "往届实际考试人数占比")
    @TableField(value = "past_reality_rate")
    private BigDecimal pastRealityRate;

    @ApiModelProperty(value = "上四分位数")
    @TableField(value = "current_upper_quartile")
    private BigDecimal currentUpperQuartile;

    @ApiModelProperty(value = "中位数")
    @TableField(value = "current_median")
    private BigDecimal currentMedian;

    @ApiModelProperty(value = "下四分位数")
    @TableField(value = "current_lower_quartile")
    private BigDecimal currentLowerQuartile;

    @ApiModelProperty(value = "众数")
    @TableField(value = "current_mode")
    private String currentMode;

    @ApiModelProperty(value = "标准差")
    @TableField(value = "current_standard_deviation")
    private BigDecimal currentStandardDeviation;

    @ApiModelProperty(value = "本次科目难度（应届）")
    @TableField(value = "difficulty")
    private String difficulty;

    @ApiModelProperty(value = "总体卷面平均分")
    @TableField(value = "paper_avg_score")
    private BigDecimal paperAvgScore;

    @ApiModelProperty(value = "应届卷面平均分")
    @TableField(value = "paper_current_avg_score")
    private BigDecimal paperCurrentAvgScore;

    @ApiModelProperty(value = "总体卷面成绩通过率")
    @TableField(value = "paper_pass_rate")
    private BigDecimal paperPassRate;

    @ApiModelProperty(value = "应届卷面成绩通过率")
    @TableField(value = "paper_current_pass_rate")
    private BigDecimal paperCurrentPassRate;

    @ApiModelProperty(value = "赋分系数")
    @TableField(value = "coefficient")
    private String coefficient;

    @ApiModelProperty(value = "卷面总体通过人数")
    @TableField(value = "paper_pass_count")
    private int paperPassCount;

    @ApiModelProperty(value = "卷面应届通过人数")
    @TableField(value = "paper_current_pass_count")
    private int paperCurrentPassCount;

    @ApiModelProperty(value = "不及格率")
    @TableField(exist = false)
    private String notPassRate;

    @ApiModelProperty(value = "应届不及格率")
    @TableField(exist = false)
    private String currentNotPassRate;

    @ApiModelProperty(value = "不及格率人数")
    @TableField(exist = false)
    private Integer notPassCount;

    @ApiModelProperty(value = "应届不及格人数")
    @TableField(exist = false)
    private Integer currentNotPassCount;

    public String getCurrentNotPassRate() {
        return currentNotPassRate;
    }

    public void setCurrentNotPassRate(String currentNotPassRate) {
        this.currentNotPassRate = currentNotPassRate;
    }

    public Integer getNotPassCount() {
        return notPassCount;
    }

    public void setNotPassCount(Integer notPassCount) {
        this.notPassCount = notPassCount;
    }

    public Integer getCurrentNotPassCount() {
        return currentNotPassCount;
    }

    public void setCurrentNotPassCount(Integer currentNotPassCount) {
        this.currentNotPassCount = currentNotPassCount;
    }

    public String getNotPassRate() {
        return notPassRate;
    }

    public void setNotPassRate(String notPassRate) {
        this.notPassRate = notPassRate;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    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 getExamName() {
        return examName;
    }

    public void setExamName(String examName) {
        this.examName = examName;
    }

    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 Long getSchoolId() {
        return schoolId;
    }

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

    public Long getTeachCollegeId() {
        return teachCollegeId;
    }

    public void setTeachCollegeId(Long teachCollegeId) {
        this.teachCollegeId = teachCollegeId;
    }

    public String getTeachCollegeName() {
        return teachCollegeName;
    }

    public void setTeachCollegeName(String teachCollegeName) {
        this.teachCollegeName = teachCollegeName;
    }

    public Integer getInspectCollegeCount() {
        return inspectCollegeCount;
    }

    public void setInspectCollegeCount(Integer inspectCollegeCount) {
        this.inspectCollegeCount = inspectCollegeCount;
    }

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

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

    public Integer getPassCount() {
        return passCount;
    }

    public void setPassCount(Integer passCount) {
        this.passCount = passCount;
    }

    public BigDecimal getPassRate() {
        return passRate;
    }

    public void setPassRate(BigDecimal passRate) {
        this.passRate = passRate;
    }

    public Integer getCurrentPassCount() {
        return currentPassCount;
    }

    public void setCurrentPassCount(Integer currentPassCount) {
        this.currentPassCount = currentPassCount;
    }

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

    public void setCurrentPassRate(BigDecimal currentPassRate) {
        this.currentPassRate = currentPassRate;
    }

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

    public void setTotalScore(BigDecimal totalScore) {
        this.totalScore = totalScore;
    }

    public Integer getRealityCount() {
        return realityCount;
    }

    public void setRealityCount(Integer realityCount) {
        this.realityCount = realityCount;
    }

    public Integer getAbsentCount() {
        return absentCount;
    }

    public void setAbsentCount(Integer absentCount) {
        this.absentCount = absentCount;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

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

    public void setCurrentMinScore(BigDecimal currentMinScore) {
        this.currentMinScore = currentMinScore;
    }

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

    public void setCurrentMaxScore(BigDecimal currentMaxScore) {
        this.currentMaxScore = currentMaxScore;
    }

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

    public void setCurrentAvgScore(BigDecimal currentAvgScore) {
        this.currentAvgScore = currentAvgScore;
    }

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

    public void setCurrentScoreRate(BigDecimal currentScoreRate) {
        this.currentScoreRate = currentScoreRate;
    }

    public Integer getCurrentRealityCount() {
        return currentRealityCount;
    }

    public void setCurrentRealityCount(Integer currentRealityCount) {
        this.currentRealityCount = currentRealityCount;
    }

    public Integer getCurrentAbsentCount() {
        return currentAbsentCount;
    }

    public void setCurrentAbsentCount(Integer currentAbsentCount) {
        this.currentAbsentCount = currentAbsentCount;
    }

    public Integer getCurrentTotalCount() {
        return currentTotalCount;
    }

    public void setCurrentTotalCount(Integer currentTotalCount) {
        this.currentTotalCount = currentTotalCount;
    }

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

    public void setCurrentRealityRate(BigDecimal currentRealityRate) {
        this.currentRealityRate = currentRealityRate;
    }

    public Integer getPastRealityCount() {
        return pastRealityCount;
    }

    public void setPastRealityCount(Integer pastRealityCount) {
        this.pastRealityCount = pastRealityCount;
    }

    public Integer getPastAbsentCount() {
        return pastAbsentCount;
    }

    public void setPastAbsentCount(Integer pastAbsentCount) {
        this.pastAbsentCount = pastAbsentCount;
    }

    public Integer getPastTotalCount() {
        return pastTotalCount;
    }

    public void setPastTotalCount(Integer pastTotalCount) {
        this.pastTotalCount = pastTotalCount;
    }

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

    public void setPastRealityRate(BigDecimal pastRealityRate) {
        this.pastRealityRate = pastRealityRate;
    }

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

    public void setCurrentUpperQuartile(BigDecimal currentUpperQuartile) {
        this.currentUpperQuartile = currentUpperQuartile;
    }

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

    public void setCurrentMedian(BigDecimal currentMedian) {
        this.currentMedian = currentMedian;
    }

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

    public void setCurrentLowerQuartile(BigDecimal currentLowerQuartile) {
        this.currentLowerQuartile = currentLowerQuartile;
    }

    public String getCurrentMode() {
        return currentMode;
    }

    public void setCurrentMode(String currentMode) {
        this.currentMode = currentMode;
    }

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

    public void setCurrentStandardDeviation(BigDecimal currentStandardDeviation) {
        this.currentStandardDeviation = currentStandardDeviation;
    }

    public String getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(String difficulty) {
        this.difficulty = difficulty;
    }

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

    public void setPaperAvgScore(BigDecimal paperAvgScore) {
        this.paperAvgScore = paperAvgScore;
    }

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

    public void setPaperCurrentAvgScore(BigDecimal paperCurrentAvgScore) {
        this.paperCurrentAvgScore = paperCurrentAvgScore;
    }

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

    public void setPaperPassRate(BigDecimal paperPassRate) {
        this.paperPassRate = paperPassRate;
    }

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

    public void setPaperCurrentPassRate(BigDecimal paperCurrentPassRate) {
        this.paperCurrentPassRate = paperCurrentPassRate;
    }

    public String getCoefficient() {
        return coefficient;
    }

    public void setCoefficient(String coefficient) {
        this.coefficient = coefficient;
    }

    public String getInspectCollegeNames() {
        return inspectCollegeNames;
    }

    public void setInspectCollegeNames(String inspectCollegeNames) {
        this.inspectCollegeNames = inspectCollegeNames;
    }

    public int getPaperPassCount() {
        return paperPassCount;
    }

    public void setPaperPassCount(int paperPassCount) {
        this.paperPassCount = paperPassCount;
    }

    public int getPaperCurrentPassCount() {
        return paperCurrentPassCount;
    }

    public void setPaperCurrentPassCount(int paperCurrentPassCount) {
        this.paperCurrentPassCount = paperCurrentPassCount;
    }
}
