package com.agri.system.domain;

import com.agri.common.annotation.Excel;
import com.agri.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 需求清单对象 sys_require_list
 * 
 * @author lld
 * @date 2026-01-11
 */
@TableName("sys_require_list")
public class SysRequireList extends BaseEntity
{
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 需求标题 */
    @Excel(name = "需求标题")
    private String title;

    /** 需求详情（支持长文本） */
    @Excel(name = "需求详情", readConverterExp = "支=持长文本")
    private String detail;

    /** 优先级：1-高，2-中，3-低（默认中优先级） */
    @Excel(name = "优先级：1-高，2-中，3-低", readConverterExp = "默=认中优先级")
    private Long priority;

    /** 进度：0-未开始，1-已完成，2-进行中 */
    @Excel(name = "进度：0-未开始，1-已完成，2-进行中")
    private Long progress;

    /** 需求类型：1-功能需求，2-优化需求，3-BUG修复（可选扩展） */
    @Excel(name = "需求类型：1-功能需求，2-优化需求，3-BUG修复", readConverterExp = "可=选扩展")
    private Long reqType;

    /** 经办人ID（关联用户表，可选） */
    @Excel(name = "经办人ID", readConverterExp = "关=联用户表，可选")
    private Long assigneeId;

    /** 经办人名称（冗余存储，可选） */
    @Excel(name = "经办人名称", readConverterExp = "冗=余存储，可选")
    private String assigneeName;

    /** 需求版本号：初始为1，每修改核心内容递增1 */
    @Version
    private Long version;

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

    public Long getId() 
    {
        return id;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setDetail(String detail) 
    {
        this.detail = detail;
    }

    public String getDetail() 
    {
        return detail;
    }

    public void setPriority(Long priority) 
    {
        this.priority = priority;
    }

    public Long getPriority() 
    {
        return priority;
    }

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

    public Long getProgress() 
    {
        return progress;
    }

    public void setReqType(Long reqType) 
    {
        this.reqType = reqType;
    }

    public Long getReqType() 
    {
        return reqType;
    }

    public void setAssigneeId(Long assigneeId) 
    {
        this.assigneeId = assigneeId;
    }

    public Long getAssigneeId() 
    {
        return assigneeId;
    }

    public void setAssigneeName(String assigneeName) 
    {
        this.assigneeName = assigneeName;
    }

    public String getAssigneeName() 
    {
        return assigneeName;
    }

    public void setVersion(Long version) 
    {
        this.version = version;
    }

    public Long getVersion() 
    {
        return version;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("detail", getDetail())
            .append("priority", getPriority())
            .append("progress", getProgress())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("reqType", getReqType())
            .append("assigneeId", getAssigneeId())
            .append("assigneeName", getAssigneeName())
            .append("version", getVersion())
            .toString();
    }
}
