package com.qmth.distributed.print.business.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.teachcloud.common.base.BaseEntity;
import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
import com.qmth.teachcloud.common.enums.TaskResultEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

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

/**
 * <p>
 * 分析-批次表
 * </p>
 *
 * @author wangliang
 * @since 2022-05-20
 */
@ApiModel(value = "GradeBatch对象", description = "分析-批次表")
public class GradeBatch extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

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

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

    @ApiModelProperty(value = "批次编号（在学校下唯一）")
    private String batchCode;

    @ApiModelProperty(value = "批次名称（2020~2021学年上学期期末考试）")
    private String batchName;

    @ApiModelProperty(value = "分析批次时刻")
    private Long batchTime;

    @ApiModelProperty(value = "批次状态")
    @TableField(value = "status", updateStrategy = FieldStrategy.IGNORED)
    private GradeAnalyzePaperStatusEnum status;

    @ApiModelProperty(value = "第三方考试id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long thirdExamId;

    @ApiModelProperty(value = "原始数据")
    private String source;

    @ApiModelProperty(value = "进度")
    @TableField(value = "progress", updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal progress;

    @ApiModelProperty(value = "报告路径")
    private String reportFilePath;

    @ApiModelProperty(value = "回调时间")
    private Long notifyTime;

    @ApiModelProperty(value = "数据结果，SUCCESS：成功，ERROR：失败")
    @TableField(value = "result", updateStrategy = FieldStrategy.IGNORED)
    private TaskResultEnum result;

    @ApiModelProperty(value = "教研分析学期id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long thirdSemesterId;

    public TaskResultEnum getResult() {
        return result;
    }

    public void setResult(TaskResultEnum result) {
        this.result = result;
    }

    public Long getNotifyTime() {
        return notifyTime;
    }

    public void setNotifyTime(Long notifyTime) {
        this.notifyTime = notifyTime;
    }

    public BigDecimal getProgress() {
        return progress;
    }

    public void setProgress(BigDecimal progress) {
        this.progress = progress;
    }

    public String getReportFilePath() {
        return reportFilePath;
    }

    public void setReportFilePath(String reportFilePath) {
        this.reportFilePath = reportFilePath;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public Long getSchoolId() {
        return schoolId;
    }

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

    public Long getSemesterId() {
        return semesterId;
    }

    public void setSemesterId(Long semesterId) {
        this.semesterId = semesterId;
    }

    public String getBatchCode() {
        return batchCode;
    }

    public void setBatchCode(String batchCode) {
        this.batchCode = batchCode;
    }

    public String getBatchName() {
        return batchName;
    }

    public void setBatchName(String batchName) {
        this.batchName = batchName;
    }

    public Long getBatchTime() {
        return batchTime;
    }

    public void setBatchTime(Long batchTime) {
        this.batchTime = batchTime;
    }

    public GradeAnalyzePaperStatusEnum getStatus() {
        return status;
    }

    public void setStatus(GradeAnalyzePaperStatusEnum status) {
        this.status = status;
    }

    public Long getThirdExamId() {
        return thirdExamId;
    }

    public void setThirdExamId(Long thirdExamId) {
        this.thirdExamId = thirdExamId;
    }

    public Long getThirdSemesterId() {
        return thirdSemesterId;
    }

    public void setThirdSemesterId(Long thirdSemesterId) {
        this.thirdSemesterId = thirdSemesterId;
    }
}
