SchedulePlan.java 4.92 KB
package com.bsth.entity.schedule;

import com.bsth.entity.Line;
import com.bsth.entity.schedule.rule.ScheduleRule1;
import com.bsth.entity.sys.SysUser;
import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 排班计划。
 */
@Entity
@Table(name = "bsth_c_s_sp")
@NamedEntityGraphs({
        @NamedEntityGraph(name = "schedulePlan_xl_ttinfo", attributeNodes = {
            @NamedAttributeNode("xl"),
            @NamedAttributeNode("ttInfo")
        })
})
public class SchedulePlan {

    /** 主键Id */
    @Id
    @GeneratedValue
    private Long id;

    /** 关联的线路 */
    @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    private Line xl;
    /** 关联的时刻表/模版 */
    @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    private TTInfo ttInfo;
    /** TODO:关联的排班规则(这里暂时改成可以不关联规则,直接生成排班) */
    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    private ScheduleRule1 scheduleRule1;

    // TODO: 新字段,测试完后删除旧的字段

    /** 使用的时刻表名字列表(用逗号连接) */
    private String ttInfoNames;
    /** 使用的时刻表id列表(用逗号连接) */
    private String ttInfoId;
    /** 使用的规则1列表(用逗号连接) */
    private String rule1Ids;

    /** 排班计划的开始时间 */
    @Column(nullable = false)
    private Date scheduleFromTime;
    /** 排班计划的结束时间 */
    @Column(nullable = false)
    private Date scheduleToTime;

    @JsonIgnore
    /** 使用中间表的一对多关联 明细信息 */
    @OneToMany(mappedBy = "schedulePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<SchedulePlanInfo> schedulePlanInfoList = new ArrayList<>();

    /** 创建人 */
    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    private SysUser createBy;
    /** 修改人 */
    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    private SysUser updateBy;
    /** 创建日期 */
    @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date createDate;
    /** 修改日期 */
    @Column(name = "update_date", columnDefinition = "TIMESTAMP  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
    private Date updateDate;

    public Long getId() {
        return id;
    }

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

    public Line getXl() {
        return xl;
    }

    public void setXl(Line xl) {
        this.xl = xl;
    }

    public TTInfo getTtInfo() {
        return ttInfo;
    }

    public void setTtInfo(TTInfo ttInfo) {
        this.ttInfo = ttInfo;
    }

    public ScheduleRule1 getScheduleRule1() {
        return scheduleRule1;
    }

    public void setScheduleRule1(ScheduleRule1 scheduleRule1) {
        this.scheduleRule1 = scheduleRule1;
    }

    public Date getScheduleFromTime() {
        return scheduleFromTime;
    }

    public void setScheduleFromTime(Date scheduleFromTime) {
        this.scheduleFromTime = scheduleFromTime;
    }

    public Date getScheduleToTime() {
        return scheduleToTime;
    }

    public void setScheduleToTime(Date scheduleToTime) {
        this.scheduleToTime = scheduleToTime;
    }

    public List<SchedulePlanInfo> getSchedulePlanInfoList() {
        return schedulePlanInfoList;
    }

    public void setSchedulePlanInfoList(List<SchedulePlanInfo> schedulePlanInfoList) {
        this.schedulePlanInfoList = schedulePlanInfoList;
    }

    public SysUser getCreateBy() {
        return createBy;
    }

    public void setCreateBy(SysUser createBy) {
        this.createBy = createBy;
    }

    public SysUser getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(SysUser updateBy) {
        this.updateBy = updateBy;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }

    public String getTtInfoNames() {
        return ttInfoNames;
    }

    public void setTtInfoNames(String ttInfoNames) {
        this.ttInfoNames = ttInfoNames;
    }

    public String getTtInfoId() {
        return ttInfoId;
    }

    public void setTtInfoId(String ttInfoId) {
        this.ttInfoId = ttInfoId;
    }

    public String getRule1Ids() {
        return rule1Ids;
    }

    public void setRule1Ids(String rule1Ids) {
        this.rule1Ids = rule1Ids;
    }
}