package com.ygtx.worklog.domain;

import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ygtx.common.annotation.Excel;
import com.ygtx.common.core.domain.BaseEntity;

/**
 * 日报对象 wl_daily_report
 *
 * @author ruoyi
 * @date 2025-10-21
 */
public class DailyReport extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 日报ID */
    private Long id;

    /** 所属周报ID */
    @Excel(name = "所属周报ID")
    private Long weeklyReportId;

    /** 日报日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "日报日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reportDate;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 用户姓名 */
    @Excel(name = "用户姓名")
    private String userName;

    /** 部门ID */
    @Excel(name = "部门ID")
    private Long deptId;

    /** 部门名称 */
    @Excel(name = "部门名称")
    private String deptName;

    /** 所属项目ID */
    @Excel(name = "所属项目ID")
    private Long projectId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 今日计划（来源于前一天的明日计划） */
    @Excel(name = "今日计划")
    private String todayPlan;

    /** 完成情况（富文本） */
    @Excel(name = "完成情况")
    private String completionStatus;

    /** 问题及建议（富文本） */
    @Excel(name = "问题及建议")
    private String issuesSuggestions;

    /** 明日计划（富文本） */
    @Excel(name = "明日计划")
    private String tomorrowPlan;

    /** 状态（0草稿 1已发布 2补交） */
    @Excel(name = "状态", readConverterExp = "0=草稿,1=已发布,2=补交")
    private String status;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    /** 是否逾期（0否 1是） */
    @Excel(name = "是否逾期", readConverterExp = "0=否,1=是")
    private String isOverdue;

    /** 附件列表 */
    private List<ReportAttachment> attachmentList;

    /** 协作任务列表 */
    private List<CollaborateTask> collaborateTaskList;

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

    public Long getId()
    {
        return id;
    }

    public void setWeeklyReportId(Long weeklyReportId)
    {
        this.weeklyReportId = weeklyReportId;
    }

    public Long getWeeklyReportId()
    {
        return weeklyReportId;
    }

    public void setReportDate(Date reportDate)
    {
        this.reportDate = reportDate;
    }

    public Date getReportDate()
    {
        return reportDate;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

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

    public String getUserName()
    {
        return userName;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }

    public String getDeptName()
    {
        return deptName;
    }

    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId()
    {
        return projectId;
    }

    public void setProjectName(String projectName)
    {
        this.projectName = projectName;
    }

    public String getProjectName()
    {
        return projectName;
    }

    public void setTodayPlan(String todayPlan)
    {
        this.todayPlan = todayPlan;
    }

    public String getTodayPlan()
    {
        return todayPlan;
    }

    public void setCompletionStatus(String completionStatus)
    {
        this.completionStatus = completionStatus;
    }

    public String getCompletionStatus()
    {
        return completionStatus;
    }

    public void setIssuesSuggestions(String issuesSuggestions)
    {
        this.issuesSuggestions = issuesSuggestions;
    }

    public String getIssuesSuggestions()
    {
        return issuesSuggestions;
    }

    public void setTomorrowPlan(String tomorrowPlan)
    {
        this.tomorrowPlan = tomorrowPlan;
    }

    public String getTomorrowPlan()
    {
        return tomorrowPlan;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setPublishTime(Date publishTime)
    {
        this.publishTime = publishTime;
    }

    public Date getPublishTime()
    {
        return publishTime;
    }

    public void setIsOverdue(String isOverdue)
    {
        this.isOverdue = isOverdue;
    }

    public String getIsOverdue()
    {
        return isOverdue;
    }

    public List<ReportAttachment> getAttachmentList()
    {
        return attachmentList;
    }

    public void setAttachmentList(List<ReportAttachment> attachmentList)
    {
        this.attachmentList = attachmentList;
    }

    public List<CollaborateTask> getCollaborateTaskList()
    {
        return collaborateTaskList;
    }

    public void setCollaborateTaskList(List<CollaborateTask> collaborateTaskList)
    {
        this.collaborateTaskList = collaborateTaskList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("weeklyReportId", getWeeklyReportId())
            .append("reportDate", getReportDate())
            .append("userId", getUserId())
            .append("userName", getUserName())
            .append("deptId", getDeptId())
            .append("deptName", getDeptName())
            .append("projectId", getProjectId())
            .append("projectName", getProjectName())
            .append("todayPlan", getTodayPlan())
            .append("completionStatus", getCompletionStatus())
            .append("issuesSuggestions", getIssuesSuggestions())
            .append("tomorrowPlan", getTomorrowPlan())
            .append("status", getStatus())
            .append("publishTime", getPublishTime())
            .append("isOverdue", getIsOverdue())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("attachmentList", getAttachmentList())
            .append("collaborateTaskList", getCollaborateTaskList())
            .toString();
    }
}
