package com.ruoyi.education.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.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 开课计划对象 edu_course_class
 * 
 * @author ruoyi
 * @date 2024-09-26
 */
public class EduCourseClass extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 开课ID */
    private Long classId;

    /** 课程ID */
    @Excel(name = "课程ID")
    private Long courseId;

    /** 学期ID */
    @Excel(name = "学期ID")
    private Long semesterId;

    /** 授课教师ID */
    @Excel(name = "授课教师ID")
    private Long teacherId;

    /** 班级编号 */
    @Excel(name = "班级编号")
    private String classCode;

    /** 容量上限 */
    @Excel(name = "容量上限")
    private Integer capacity;

    /** 选课人数上限，0表示同容量 */
    @Excel(name = "选课人数上限")
    private Integer enrollLimit;

    /** 已选人数 */
    @Excel(name = "已选人数")
    private Integer enrolledCount;

    /** 授课教室 */
    @Excel(name = "授课教室")
    private Long classroomId;

    /** 选课开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "选课开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date enrollStartTime;

    /** 选课结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "选课结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date enrollEndTime;

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

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

    /** 上课星期描述，例如 周一 */
    @Excel(name = "上课星期")
    private String weekday;

    /** 上课节次描述，例如 第1-2节 */
    @Excel(name = "上课节次")
    private String timeSlot;

    /** 状态（0待发布 1可选课 2已满额 3已结课） */
    @Excel(name = "状态", readConverterExp = "0=待发布,1=可选课,2=已满额,3=已结课")
    private String status;

    /** 课程名称 - 关联查询字段 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 课程编码 - 关联查询字段 */
    @Excel(name = "课程编码")
    private String courseCode;

    /** 教师姓名 - 关联查询字段 */
    @Excel(name = "教师姓名")
    private String teacherName;

    /** 学期名称 - 关联查询字段 */
    @Excel(name = "学期名称")
    private String semesterName;

    /** 教室名称 - 关联查询字段 */
    @Excel(name = "教室名称")
    private String classroomName;

    public void setClassId(Long classId) 
    {
        this.classId = classId;
    }

    public Long getClassId() 
    {
        return classId;
    }
    public void setCourseId(Long courseId) 
    {
        this.courseId = courseId;
    }

    public Long getCourseId() 
    {
        return courseId;
    }
    public void setSemesterId(Long semesterId) 
    {
        this.semesterId = semesterId;
    }

    public Long getSemesterId() 
    {
        return semesterId;
    }
    public void setTeacherId(Long teacherId) 
    {
        this.teacherId = teacherId;
    }

    public Long getTeacherId() 
    {
        return teacherId;
    }
    public void setClassCode(String classCode) 
    {
        this.classCode = classCode;
    }

    public String getClassCode() 
    {
        return classCode;
    }
    public void setCapacity(Integer capacity) 
    {
        this.capacity = capacity;
    }

    public Integer getCapacity() 
    {
        return capacity;
    }
    public void setEnrollLimit(Integer enrollLimit) 
    {
        this.enrollLimit = enrollLimit;
    }

    public Integer getEnrollLimit() 
    {
        return enrollLimit;
    }
    public void setEnrolledCount(Integer enrolledCount) 
    {
        this.enrolledCount = enrolledCount;
    }

    public Integer getEnrolledCount() 
    {
        return enrolledCount;
    }
    public void setClassroomId(Long classroomId) 
    {
        this.classroomId = classroomId;
    }

    public Long getClassroomId() 
    {
        return classroomId;
    }
    public void setEnrollStartTime(Date enrollStartTime) 
    {
        this.enrollStartTime = enrollStartTime;
    }

    public Date getEnrollStartTime() 
    {
        return enrollStartTime;
    }
    public void setEnrollEndTime(Date enrollEndTime) 
    {
        this.enrollEndTime = enrollEndTime;
    }

    public Date getEnrollEndTime() 
    {
        return enrollEndTime;
    }
    public void setTeachStartDate(Date teachStartDate) 
    {
        this.teachStartDate = teachStartDate;
    }

    public Date getTeachStartDate() 
    {
        return teachStartDate;
    }
    public void setTeachEndDate(Date teachEndDate) 
    {
        this.teachEndDate = teachEndDate;
    }

    public Date getTeachEndDate() 
    {
        return teachEndDate;
    }
    public void setWeekday(String weekday) 
    {
        this.weekday = weekday;
    }

    public String getWeekday() 
    {
        return weekday;
    }
    public void setTimeSlot(String timeSlot) 
    {
        this.timeSlot = timeSlot;
    }

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

    public String getStatus() 
    {
        return status;
    }

    public String getCourseName() 
    {
        return courseName;
    }

    public void setCourseName(String courseName) 
    {
        this.courseName = courseName;
    }

    public String getCourseCode() 
    {
        return courseCode;
    }

    public void setCourseCode(String courseCode) 
    {
        this.courseCode = courseCode;
    }

    public String getTeacherName() 
    {
        return teacherName;
    }

    public void setTeacherName(String teacherName) 
    {
        this.teacherName = teacherName;
    }

    public String getSemesterName() 
    {
        return semesterName;
    }

    public void setSemesterName(String semesterName) 
    {
        this.semesterName = semesterName;
    }

    public String getClassroomName() 
    {
        return classroomName;
    }

    public void setClassroomName(String classroomName) 
    {
        this.classroomName = classroomName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("classId", getClassId())
            .append("courseId", getCourseId())
            .append("semesterId", getSemesterId())
            .append("teacherId", getTeacherId())
            .append("classCode", getClassCode())
            .append("capacity", getCapacity())
            .append("enrollLimit", getEnrollLimit())
            .append("enrolledCount", getEnrolledCount())
            .append("classroomId", getClassroomId())
            .append("enrollStartTime", getEnrollStartTime())
            .append("enrollEndTime", getEnrollEndTime())
            .append("teachStartDate", getTeachStartDate())
            .append("teachEndDate", getTeachEndDate())
            .append("weekday", getWeekday())
            .append("timeSlot", getTimeSlot())
            .append("status", getStatus())
            .append("remark", getRemark())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}