package com.zd.laboratory.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.zd.common.core.web.domain.BaseEntity;
import org.hibernate.validator.constraints.Length;

/**
 * 负面清单历史记录/违规历史记录 lab_negativelist_history
 *
 * @author zd
 * @date 2021-12-17
 */
@ApiModel("负面清单历史记录/违规历史记录 data_type:0违规,1:负面清单")
public class LabNegativelistHistory extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键id */
    @ApiModelProperty(value = "${comment}")
    private Long id;
    /** 关联负面清单列表id */
    @Excel(name = "关联负面清单列表id")
    @ApiModelProperty(value = "关联负面清单列表id")
    private Long blackId;
    /** 进入负面清单原因 */
    @Excel(name = "进入负面清单原因")
    @Length(message = "进入负面清单原因长度不能超过200")
    @ApiModelProperty(value = "进入负面清单原因")
    private String reason;
    /** 处理方式，这个用于只存字符串的记录，如：学习、做题 */
    @Excel(name = "处理方式，这个用于只存字符串的记录，如：学习、做题")
    @Length(message = "处理方式，这个用于只存字符串的记录，如：学习、做题长度不能超过200")
    @ApiModelProperty(value = "处理方式，这个用于只存字符串的记录，如：学习、做题")
    private String treatmentMethod;
    /** 学习状态：1已完成，0未完成  -1表示没有 */
    @Excel(name = "学习状态：1已完成，0未完成  -1表示没有")
    @ApiModelProperty(value = "学习状态：1已完成，0未完成  -1表示没有")
    private Integer learnStatus;
    /** 考试状态：1已完成，0未完成  -1表示没有 */
    @Excel(name = "考试状态：1已完成，0未完成  -1表示没有")
    @ApiModelProperty(value = "考试状态：1已完成，0未完成  -1表示没有")
    private Integer testStatus;
    /** 做题状态：1已完成，0未完成  -1表示没有 */
    @Excel(name = "做题状态：1已完成，0未完成  -1表示没有")
    @ApiModelProperty(value = "做题状态：1已完成，0未完成  -1表示没有")
    private Integer practiceStatus;
    /** 状态：1:已完成，0:未完成，-1:无 */
    @Excel(name = "状态：1:已完成，0:未完成，-1:无")
    @ApiModelProperty(value = "状态：1:已完成，0:未完成，-1:无")
    private Integer overStatus;
    /** 处理未完成最后期限 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "处理未完成最后期限", width = 30, dateFormat = "YYYY-MM-DD hh:mm:ss")
    @ApiModelProperty(value = "处理未完成最后期限")
    private Date handleDay;
    /** 信用分 */
    @Excel(name = "信用分")
    @ApiModelProperty(value = "信用分")
    private Long creditScore;
    /** 题目数量，只有练习状态不是-1的时候，才用这个字段 */
    @Excel(name = "题目数量，只有练习状态不是-1的时候，才用这个字段")
    @ApiModelProperty(value = "题目数量，只有练习状态不是-1的时候，才用这个字段")
    private Integer numberTopics;
    /** 做题准确率，只有做题的时候才用 */
    @Excel(name = "做题准确率，只有做题的时候才用")
    @ApiModelProperty(value = "做题准确率，只有做题的时候才用")
    private Integer numberAccuracy;
    /** 学习时长，只有学习状态不是-1的时候，才用这个字段，以秒为单位 */
    @Excel(name = "学习时长，只有学习状态不是-1的时候，才用这个字段，以秒为单位")
    @ApiModelProperty(value = "学习时长，只有学习状态不是-1的时候，才用这个字段，以秒为单位")
    private Long learnTime;
    /** 实验室 */
    @Excel(name = "实验室")
    @Length(message = "实验室长度不能超过20")
    @ApiModelProperty(value = "实验室")
    private String laboratoryName;
    /** 实验室id */
    @Excel(name = "实验室id")
    @ApiModelProperty(value = "实验室id")
    private Long laboratoryId;
    /** 扣分值 */
    @Excel(name = "扣分值")
    @ApiModelProperty(value = "扣分值")
    private Long deductionVal;

    @Excel(name = "类型：0:违规历史记录,1:负面清单历史记录")
    @ApiModelProperty(value = "类型：0:违规历史记录,1:负面清单历史记录")
    private int dataType;

    /**
     * 警告
     */
    private Integer warningStatus;
    /**
     * 约谈
     */
    private Integer interviewStatus;

    /**
     * 姓名
     */
    private String userName;

    /**
     * 违规类型，1是负面清单，2是黑名单
     */
    private Integer violationType;

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

    public Long getId()
    {
        return id;
    }
    public void setBlackId(Long blackId)
    {
        this.blackId = blackId;
    }

    public Long getBlackId()
    {
        return blackId;
    }
    public void setReason(String reason)
    {
        this.reason = reason;
    }

    public String getReason()
    {
        return reason;
    }
    public void setTreatmentMethod(String treatmentMethod)
    {
        this.treatmentMethod = treatmentMethod;
    }

    public String getTreatmentMethod()
    {
        return treatmentMethod;
    }
    public void setLearnStatus(Integer learnStatus)
    {
        this.learnStatus = learnStatus;
    }

    public Integer getLearnStatus()
    {
        return learnStatus;
    }
    public void setTestStatus(Integer testStatus)
    {
        this.testStatus = testStatus;
    }

    public Integer getTestStatus()
    {
        return testStatus;
    }
    public void setPracticeStatus(Integer practiceStatus)
    {
        this.practiceStatus = practiceStatus;
    }

    public Integer getPracticeStatus()
    {
        return practiceStatus;
    }
    public void setOverStatus(Integer overStatus)
    {
        this.overStatus = overStatus;
    }

    public Integer getOverStatus()
    {
        return overStatus;
    }
    public void setHandleDay(Date handleDay)
    {
        this.handleDay = handleDay;
    }

    public Date getHandleDay()
    {
        return handleDay;
    }
    public void setCreditScore(Long creditScore)
    {
        this.creditScore = creditScore;
    }

    public Long getCreditScore()
    {
        return creditScore;
    }
    public void setNumberTopics(Integer numberTopics)
    {
        this.numberTopics = numberTopics;
    }

    public Integer getNumberTopics()
    {
        return numberTopics;
    }
    public void setNumberAccuracy(Integer numberAccuracy)
    {
        this.numberAccuracy = numberAccuracy;
    }

    public Integer getNumberAccuracy()
    {
        return numberAccuracy;
    }
    public void setLearnTime(Long learnTime)
    {
        this.learnTime = learnTime;
    }

    public Long getLearnTime()
    {
        return learnTime;
    }
    public void setLaboratoryName(String laboratoryName)
    {
        this.laboratoryName = laboratoryName;
    }

    public String getLaboratoryName()
    {
        return laboratoryName;
    }
    public void setLaboratoryId(Long laboratoryId)
    {
        this.laboratoryId = laboratoryId;
    }

    public Long getLaboratoryId()
    {
        return laboratoryId;
    }
    public void setDeductionVal(Long deductionVal)
    {
        this.deductionVal = deductionVal;
    }

    public Long getDeductionVal()
    {
        return deductionVal;
    }

    public int getDataType() {
        return dataType;
    }

    public void setDataType(int dataType) {
        this.dataType = dataType;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getWarningStatus() {
        return warningStatus;
    }

    public void setWarningStatus(Integer warningStatus) {
        this.warningStatus = warningStatus;
    }

    public Integer getInterviewStatus() {
        return interviewStatus;
    }

    public void setInterviewStatus(Integer interviewStatus) {
        this.interviewStatus = interviewStatus;
    }

    public Integer getViolationType() {
        return violationType;
    }

    public void setViolationType(Integer violationType) {
        this.violationType = violationType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("blackId", getBlackId())
            .append("reason", getReason())
            .append("treatmentMethod", getTreatmentMethod())
            .append("learnStatus", getLearnStatus())
            .append("testStatus", getTestStatus())
            .append("practiceStatus", getPracticeStatus())
            .append("overStatus", getOverStatus())
            .append("handleDay", getHandleDay())
            .append("creditScore", getCreditScore())
            .append("numberTopics", getNumberTopics())
            .append("numberAccuracy", getNumberAccuracy())
            .append("learnTime", getLearnTime())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("laboratoryName", getLaboratoryName())
            .append("laboratoryId", getLaboratoryId())
            .append("deductionVal", getDeductionVal())
            .toString();
    }
}
