package com.hotwj.platform.flow.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 流程任务对象 sys_flow_task
 *
 * @author shihongwei
 * @date 2026-01-25
 */
@Data
@TableName("sys_flow_task")
public class SysFlowTask implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 任务ID
     */
    @TableId(value = "task_id", type = IdType.ASSIGN_UUID)
    private String taskId;

    /**
     * 流程实例ID
     */
    private String instanceId;

    /**
     * 节点编码
     */
    private String nodeCode;

    /**
     * 节点名称
     */
    private String nodeName;

    /**
     * 审批人ID
     */
    private String approverId;

    @TableField(exist = false)
    private String approverName;

    /**
     * 租户/公司ID
     */
    private Long companyId;

    /**
     * 是否已读: 0-未读, 1-已读
     */
    private Integer isRead;

    /**
     * 创建者
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 流程名称 (非数据库字段)
     */
    @TableField(exist = false)
    private String flowName;

    /**
     * 流程编码 (非数据库字段)
     */
    @TableField(exist = false)
    private String flowCode;

    /**
     * 业务ID (非数据库字段)
     */
    @TableField(exist = false)
    private String businessId;

    /**
     * 计划ID (非数据库字段)
     */
    @TableField(exist = false)
    private Long planId;

    /**
     * 会议类型 (非数据库字段)
     */
    @TableField(exist = false)
    private String meetingType;

    /**
     * 开始时间 (非数据库字段)
     */
    @TableField(exist = false)
    private Date startTime;
}
