package com.ruoyi.oa.domain.bo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.time.LocalDateTime;
import java.util.Date;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 项目进度步骤跟踪业务对象 oa_project_schedule_step
 *
 * @author hdka
 * @date 2025-05-08
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class OaProjectScheduleStepBo extends BaseEntity {

    /**
     * 跟踪记录主键
     */
    private Long trackId;

    /**
     * 文件列表
     */
    private String accessory;

    /**
     * 所属项目进度ID
     */
    private Long scheduleId;

    /**
     * 步骤序号
     */
    private Long stepOrder;

    /**
     * 步骤名称(冗余存储模板名称)
     */
    private String stepName;

    /**
     * 计划开始
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date planStart;

    /**
     * 计划完成
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date planEnd;

    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date actualStart;

    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date actualEnd;

    /**
     * 0未开始 1进行中 2完成 3暂停
     */
    private Long status;


    private String description;

    private Long expectedDays;
    /**
     * 进度负责人
     */
    private String header;

    /**
     * 使用标志
     */
    private Long useFlag;

    private Long batchId;


    /**
     * tab节点
     */
    private String tabNode;

    /**
     * 一级节点（阶段节点）
     */
    private String firstLevelNode;

    /**
     * 二级节点（关键节点）
     */
    private String secondLevelNode;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 原定结束时间
     */
    private LocalDateTime originalEndTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 节点负责人
     */
    private String nodeHeader;

    /**
     * 相关资料
     */
    private String relatedDocs;

    /**
     * 相关图片
     */
    private String relatedImages;

    /**
     * 规范说明
     */
    private String specification;


    //排序字段
    private Integer sortNum;

    //供应商id
    private Long supplierId;

    //需求文件
    private String requirementFile;

    //其他
    private String other;

}
