package com.xmomen.module.system.entity;

import com.xmomen.framework.mybatis.model.BaseMybatisModel;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;

@Entity
@Table(name = "sys_task")
public class SysTask extends BaseMybatisModel {
    /**
     * 主键
     */
    private Integer id;

    /**
     * 任务头ID
     */
    private Integer taskHeadId;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 完成时间
     */
    private Date finishTime;

    /**
     * 执行人ID
     */
    private Integer executorId;

    /**
     * 任务状态：0-待分配，1-待执行，2-执行中，3-已完成，4-已取消
     */
    private Integer taskStatus;

    @Column(name = "ID")
    // 标识该字段为数据库表的主键
    @Id
    // 使用UUID生成器生成主键
    @GeneratedValue(generator = "UUIDGenerator")
    public Integer getId() {
        return id;
    }

    // 设置主键值
    public void setId(Integer id) {
        this.id = id;
        // 如果主键值为空，则移除有效字段
        if(id == null){
              removeValidField("id");
              return;
        }
        // 否则，添加有效字段
        addValidField("id");
    }

    // 注释：获取任务头ID
    @Column(name = "TASK_HEAD_ID")
    public Integer getTaskHeadId() {
        return taskHeadId;
    }

    // 注释：设置任务头ID
    public void setTaskHeadId(Integer taskHeadId) {
        this.taskHeadId = taskHeadId;
        // 注释：如果任务头ID为空，则移除有效字段
        if(taskHeadId == null){
              removeValidField("taskHeadId");
              return;
        }
        addValidField("taskHeadId");
    }

    // 获取创建时间
    @Column(name = "CREATE_TIME")
    public Date getCreateTime() {
        return createTime;
    }

    // 设置创建时间
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
        // 如果创建时间为空，则移除验证字段
        if(createTime == null){
              removeValidField("createTime");
              return;
        }
        addValidField("createTime");
    }

    // 获取开始时间
    @Column(name = "START_TIME")
    public Date getStartTime() {
        return startTime;
    }

    // 设置开始时间
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
        // 如果开始时间为空，则移除验证字段
        if(startTime == null){
              removeValidField("startTime");
              return;
        }
        // 否则，添加验证字段
        addValidField("startTime");
    }

    // 获取完成时间
    @Column(name = "FINISH_TIME")
    public Date getFinishTime() {
        return finishTime;
    }

    // 设置完成时间
    public void setFinishTime(Date finishTime) {
        this.finishTime = finishTime;
        // 如果完成时间为空
        if(finishTime == null){
              // 移除有效字段
              removeValidField("finishTime");
              return;
        }
        // 添加有效字段
        addValidField("finishTime");
    }
    // 获取执行者ID

    @Column(name = "EXECUTOR_ID")
    public Integer getExecutorId() {
        return executorId;
    }
    // 设置执行者ID

    public void setExecutorId(Integer executorId) {
        // 如果执行者ID为空，则移除验证字段
        this.executorId = executorId;
        if(executorId == null){
              removeValidField("executorId");
              return;
        }
        addValidField("executorId");
    }

    // 获取任务状态
    @Column(name = "TASK_STATUS")
    public Integer getTaskStatus() {
        return taskStatus;
    }

    // 设置任务状态
    public void setTaskStatus(Integer taskStatus) {
        // 设置任务状态
        this.taskStatus = taskStatus;
        // 如果taskStatus为空
        if(taskStatus == null){
              // 移除有效的字段
              removeValidField("taskStatus");
              // 返回
              return;
        }
        // 添加有效的字段
        addValidField("taskStatus");
    }
}