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

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.contant.SystemConstant;
import com.qmth.teachcloud.common.enums.TaskResultEnum;
import com.qmth.teachcloud.common.enums.TaskStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * <p>
 * 同步考生成绩汇总表
 * </p>
 */
@ApiModel(value = "TSyncExamLog对象", description = "同步考生成绩汇总表")
public class TSyncExamLog implements Serializable {

    private static final long serialVersionUID = 1L;

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

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

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

    @ApiModelProperty(value = "云阅卷考试id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long thirdRelateId;

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

    @ApiModelProperty(value = "云阅卷考试名称")
    private String examName;

    @ApiModelProperty(value = "任务状态，INIT：未开始，RUNNING：进行中，FINISH：已完成")
    @TableField(value = "status")
    private TaskStatusEnum status;

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

    @ApiModelProperty(value = "开始同步时间")
    private Long startTime;

    @ApiModelProperty(value = "结束同步时间")
    private Long endTime;

    @ApiModelProperty(value = "时实信息")
    private String summary;

    @ApiModelProperty(value = "总课程数")
    private Integer totalCourses;

    @ApiModelProperty(value = "总命题任务数")
    private Integer totalExamTasks;

    @ApiModelProperty(value = "总考生数")
    private Integer totalStudents;

    @ApiModelProperty(value = "成功考生数")
    private Integer successStudents;

    @ApiModelProperty(value = "失败考生数")
    private Integer failStudents;

    @ApiModelProperty(value = "错误数据文件路径")
    @TableField(value = "error_file_path")
    private String errorFilePath;
    @ApiModelProperty(value = "创建人id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long createId;

    @ApiModelProperty(value = "创建时间")
    private Long createTime;

    @TableField(exist = false)
    @ApiModelProperty(value = "错误文件访问地址")
    String errorFileUrl;

    @TableField(exist = false)
    @ApiModelProperty(value = "状态")
    String statusStr;

    @TableField(exist = false)
    @ApiModelProperty(value = "结果")
    String resultStr;

    public TSyncExamLog() {
    }

    public TSyncExamLog(Long schoolId, Long semesterId, Long examId, Long thirdRelateId, String examName, TaskStatusEnum status, Long createId, Long createTime) {
        this.id = SystemConstant.getDbUuid();
        this.schoolId = schoolId;
        this.examId = examId;
        this.semesterId = semesterId;
        this.thirdRelateId = thirdRelateId;
        this.examName = examName;
        this.status = status;
        this.createId = createId;
        this.createTime = createTime;
    }

    public Long getId() {
        return id;
    }

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

    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 Long getExamId() {
        return examId;
    }

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

    public Long getThirdRelateId() {
        return thirdRelateId;
    }

    public void setThirdRelateId(Long thirdRelateId) {
        this.thirdRelateId = thirdRelateId;
    }

    public String getExamName() {
        return examName;
    }

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

    public TaskStatusEnum getStatus() {
        return status;
    }

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

    public TaskResultEnum getResult() {
        return result;
    }

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

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public Integer getTotalCourses() {
        return totalCourses;
    }

    public void setTotalCourses(Integer totalCourses) {
        this.totalCourses = totalCourses;
    }

    public Integer getTotalExamTasks() {
        return totalExamTasks;
    }

    public void setTotalExamTasks(Integer totalExamTasks) {
        this.totalExamTasks = totalExamTasks;
    }

    public Integer getTotalStudents() {
        return totalStudents;
    }

    public Integer getSuccessStudents() {
        return successStudents;
    }

    public void setSuccessStudents(Integer successStudents) {
        this.successStudents = successStudents;
    }

    public Integer getFailStudents() {
        return failStudents;
    }

    public void setFailStudents(Integer failStudents) {
        this.failStudents = failStudents;
    }

    public void setTotalStudents(Integer totalStudents) {
        this.totalStudents = totalStudents;
    }

    public String getErrorFilePath() {
        return errorFilePath;
    }

    public void setErrorFilePath(String errorFilePath) {
        this.errorFilePath = errorFilePath;
    }

    public Long getCreateId() {
        return createId;
    }

    public void setCreateId(Long createId) {
        this.createId = createId;
    }

    public Long getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }

    public String getErrorFileUrl() {
        return errorFileUrl;
    }

    public void setErrorFileUrl(String errorFileUrl) {
        this.errorFileUrl = errorFileUrl;
    }

    public String getStatusStr() {
        return this.status == null ? null : this.status.getTitle();
    }

    public String getResultStr() {
        return this.result == null ? null : this.result.getTitle();
    }

}
