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 = "TAExamCourseCollegeTeacher对象", description = "参考课程学院下授课教师维度分析表")
public class TAExamCourseCollegeTeacher 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 = "学校id（冗余）")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "school_id")
    private Long schoolId;

    @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 = "teacher_id")
    private Long teacherId;

    @ApiModelProperty(value = "授课教师名称（冗余）")
    @TableField(value = "teacher_name")
    private String teacherName;

    @ApiModelProperty(value = "授课学生最低分（赋分）")
    @TableField(value = "min_score_assign")
    private BigDecimal minScoreAssign;

    @ApiModelProperty(value = "授课学生最高分（赋分）")
    @TableField(value = "max_score_assign")
    private BigDecimal maxScoreAssign;

    @ApiModelProperty(value = "授课学生平均分（赋分）")
    @TableField(value = "avg_score_assign")
    private BigDecimal avgScoreAssign;

    @ApiModelProperty(value = "授课学生平均分")
    @TableField(value = "avg_score")
    private BigDecimal avgScore;

    @ApiModelProperty(value = "授课学生分数上四分位数")
    @TableField(value = "upper_quartile")
    private BigDecimal upperQuartile;

    @ApiModelProperty(value = "授课学生中位数")
    @TableField(value = "median")
    private BigDecimal median;

    @ApiModelProperty(value = "授课学生分数下四分位数")
    @TableField(value = "lower_quartile")
    private BigDecimal lowerQuartile;

    @ApiModelProperty(value = "授课学生分数众数")
    @TableField(value = "mode")
    private String mode;

    @ApiModelProperty(value = "授课学生分数标准差")
    @TableField(value = "standard_deviation")
    private BigDecimal standardDeviation;

    @ApiModelProperty(value = "授课学生分数相对位置")
    @TableField(value = "relative_position")
    private BigDecimal relativePosition;

    @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 = "考查学院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 = "teach_college_id")
    private Long teachCollegeId;

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

    @ApiModelProperty(value = "在考查学院排名")
    @TableField(value = "teacher_rank")
    private Integer teacherRank;

    @ApiModelProperty(value = "在考查学院教师总人数")
    @TableField(value = "teacher_count")
    private Integer teacherCount;

    @ApiModelProperty(value = "其他学院授课学生最低分（赋分）")
    @TableField(value = "other_college_min_score_assign")
    private BigDecimal otherCollegeMinScoreAssign;

    @ApiModelProperty(value = "其他学院授课学生最高分（赋分）")
    @TableField(value = "other_college_max_score_assign")
    private BigDecimal otherCollegeMaxScoreAssign;

    @ApiModelProperty(value = "其他学院授课学生平均分（赋分）")
    @TableField(value = "other_college_avg_score_assign")
    private BigDecimal otherCollegeAvgScoreAssign;

    @ApiModelProperty(value = "其他学院授课学生分数上四分位数")
    @TableField(value = "other_college_upper_quartile")
    private BigDecimal otherCollegeUpperQuartile;

    @ApiModelProperty(value = "其他学院授课学生中位数")
    @TableField(value = "other_college_median")
    private BigDecimal otherCollegeMedian;

    @ApiModelProperty(value = "其他学院授课学生分数下四分位数")
    @TableField(value = "other_college_lower_quartile")
    private BigDecimal otherCollegeLowerQuartile;

    @ApiModelProperty(value = "其他学院授课学生分数众数")
    @TableField(value = "other_college_mode")
    private String otherCollegeMode;

    @ApiModelProperty(value = "其他学院授课学生实际参考人数")
    @TableField(value = "other_college_reality_count")
    private Integer otherCollegeRealityCount;

    @ApiModelProperty(value = "其他学院授课学生缺考人数")
    @TableField(value = "other_college_absent_count")
    private Integer otherCollegeAbsentCount;

    @ApiModelProperty(value = "其他学院总人数")
    @TableField(value = "other_college_total_count")
    private Integer otherCollegeTotalCount;

    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 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 getTeacherId() {
        return teacherId;
    }

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

    public String getTeacherName() {
        return teacherName;
    }

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

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

    public void setMinScoreAssign(BigDecimal minScoreAssign) {
        this.minScoreAssign = minScoreAssign;
    }

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

    public void setMaxScoreAssign(BigDecimal maxScoreAssign) {
        this.maxScoreAssign = maxScoreAssign;
    }

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

    public void setAvgScoreAssign(BigDecimal avgScoreAssign) {
        this.avgScoreAssign = avgScoreAssign;
    }

    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 BigDecimal getUpperQuartile() {
        if (Objects.nonNull(upperQuartile)) {
            return upperQuartile.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
        } else {
            return upperQuartile;
        }
    }

    public void setUpperQuartile(BigDecimal upperQuartile) {
        this.upperQuartile = upperQuartile;
    }

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

    public void setMedian(BigDecimal median) {
        this.median = median;
    }

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

    public void setLowerQuartile(BigDecimal lowerQuartile) {
        this.lowerQuartile = lowerQuartile;
    }

    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

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

    public void setStandardDeviation(BigDecimal standardDeviation) {
        this.standardDeviation = standardDeviation;
    }

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

    public void setRelativePosition(BigDecimal relativePosition) {
        this.relativePosition = relativePosition;
    }

    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 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 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 getTeacherRank() {
        return teacherRank;
    }

    public void setTeacherRank(Integer teacherRank) {
        this.teacherRank = teacherRank;
    }

    public Integer getTeacherCount() {
        return teacherCount;
    }

    public void setTeacherCount(Integer teacherCount) {
        this.teacherCount = teacherCount;
    }

    public Long getSchoolId() {
        return schoolId;
    }

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

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

    public void setOtherCollegeMinScoreAssign(BigDecimal otherCollegeMinScoreAssign) {
        this.otherCollegeMinScoreAssign = otherCollegeMinScoreAssign;
    }

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

    public void setOtherCollegeMaxScoreAssign(BigDecimal otherCollegeMaxScoreAssign) {
        this.otherCollegeMaxScoreAssign = otherCollegeMaxScoreAssign;
    }

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

    public void setOtherCollegeAvgScoreAssign(BigDecimal otherCollegeAvgScoreAssign) {
        this.otherCollegeAvgScoreAssign = otherCollegeAvgScoreAssign;
    }

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

    public void setOtherCollegeUpperQuartile(BigDecimal otherCollegeUpperQuartile) {
        this.otherCollegeUpperQuartile = otherCollegeUpperQuartile;
    }

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

    public void setOtherCollegeMedian(BigDecimal otherCollegeMedian) {
        this.otherCollegeMedian = otherCollegeMedian;
    }

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

    public void setOtherCollegeLowerQuartile(BigDecimal otherCollegeLowerQuartile) {
        this.otherCollegeLowerQuartile = otherCollegeLowerQuartile;
    }

    public String getOtherCollegeMode() {
        return otherCollegeMode;
    }

    public void setOtherCollegeMode(String otherCollegeMode) {
        this.otherCollegeMode = otherCollegeMode;
    }

    public Integer getOtherCollegeRealityCount() {
        return otherCollegeRealityCount;
    }

    public void setOtherCollegeRealityCount(Integer otherCollegeRealityCount) {
        this.otherCollegeRealityCount = otherCollegeRealityCount;
    }

    public Integer getOtherCollegeAbsentCount() {
        return otherCollegeAbsentCount;
    }

    public void setOtherCollegeAbsentCount(Integer otherCollegeAbsentCount) {
        this.otherCollegeAbsentCount = otherCollegeAbsentCount;
    }

    public Integer getOtherCollegeTotalCount() {
        return otherCollegeTotalCount;
    }

    public void setOtherCollegeTotalCount(Integer otherCollegeTotalCount) {
        this.otherCollegeTotalCount = otherCollegeTotalCount;
    }
}
