package com.ygtx.worklog.domain;

import java.util.Date;
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_weekly_report
 *
 * @author ruoyi
 * @date 2025-10-21
 */
public class WeeklyReport extends BaseEntity
{
    private static final long serialVersionUID = 1L;

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

    /** 周数（一年中的第几周） */
    @Excel(name = "周数")
    private Integer weekNum;

    /** 年份 */
    @Excel(name = "年份")
    private Integer year;

    /** 起始日期（周一） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "起始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 结束日期（周日） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

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

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

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

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

    /** 周计划（基于日报汇总） */
    @Excel(name = "周计划")
    private String weekPlan;

    /** 完成情况（基于日报汇总） */
    @Excel(name = "完成情况")
    private String completionStatus;

    /** 问题及建议（基于日报汇总） */
    @Excel(name = "问题及建议")
    private String issuesSuggestions;

    /** 是否自动生成（0手动编辑 1自动总结） */
    @Excel(name = "生成方式", readConverterExp = "0=手动编辑,1=自动总结")
    private String isAutoGenerated;

    /** 关联的日报ID列表（逗号分隔） */
    private String dailyReportIds;

    /** 状态（0草稿 1已发布） */
    @Excel(name = "状态", readConverterExp = "0=草稿,1=已发布")
    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;

    public void setIsAutoGenerated(String isAutoGenerated)
    {
        this.isAutoGenerated = isAutoGenerated;
    }

    public String getIsAutoGenerated()
    {
        return isAutoGenerated;
    }

    public void setDailyReportIds(String dailyReportIds)
    {
        this.dailyReportIds = dailyReportIds;
    }

    public String getDailyReportIds()
    {
        return dailyReportIds;
    }

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

    public Long getId()
    {
        return id;
    }

    public void setWeekNum(Integer weekNum)
    {
        this.weekNum = weekNum;
    }

    public Integer getWeekNum()
    {
        return weekNum;
    }

    public void setYear(Integer year)
    {
        this.year = year;
    }

    public Integer getYear()
    {
        return year;
    }

    public void setStartDate(Date startDate)
    {
        this.startDate = startDate;
    }

    public Date getStartDate()
    {
        return startDate;
    }

    public void setEndDate(Date endDate)
    {
        this.endDate = endDate;
    }

    public Date getEndDate()
    {
        return endDate;
    }

    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 setWeekPlan(String weekPlan)
    {
        this.weekPlan = weekPlan;
    }

    public String getWeekPlan()
    {
        return weekPlan;
    }

    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 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;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("weekNum", getWeekNum())
            .append("year", getYear())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("userId", getUserId())
            .append("userName", getUserName())
            .append("deptId", getDeptId())
            .append("deptName", getDeptName())
            .append("weekPlan", getWeekPlan())
            .append("completionStatus", getCompletionStatus())
            .append("issuesSuggestions", getIssuesSuggestions())
            .append("status", getStatus())
            .append("publishTime", getPublishTime())
            .append("isOverdue", getIsOverdue())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
