package com.ruoyi.system.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.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 出差记录信息对象 business_trip
 * 
 * @author ruoyi
 * @date 2025-06-23
 */
public class BusinessTrip extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 单程/往返 1：单程 2：往返 */
    @Excel(name = "单程/往返 1：单程 2：往返")
    private String type;

    /** 交通工具（1：高铁，2：飞机，3：大巴，4：轿车，5：轮船） */
    @Excel(name = "交通工具1：高铁，2：飞机，3：大巴，4：轿车，5：轮船")
    private String transportation;

    /** 出发地 */
    @Excel(name = "出发地")
    private String departurePlace;

    /** 目的地 */
    @Excel(name = "目的地")
    private String destination;

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

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

    /** 时长（天） */
    @Excel(name = "时长（天）")
    private String duration;

    /** 出差事由 */
    @Excel(name = "出差事由")
    private String reason;

    /** 出差照片地址 */
    @Excel(name = "出差照片地址")
    private String photo;

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

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

    /** 发起人id */
    @Excel(name = "发起人id")
    private Long initiatorId;

    /** 发起人姓名 */
    @Excel(name = "发起人姓名")
    private String initiatorName;

    /** 同行人员 */
    @Excel(name = "同行人员")
    private String absenteeName;

    /** 审批人员id */
    @Excel(name = "审批人员id")
    private Long examinersId;

    /** 审批人员姓名 */
    @Excel(name = "审批人员姓名")
    private String examinersName;

    /** 是否通过 0：未处理，1：不通过，2：通过 */
    @Excel(name = "是否通过 0：未处理，1：不通过，2：通过")
    private String isPass;

    /** 驳回原因 */
    @Excel(name = "驳回原因")
    private String reject;

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

    private List<BusinessUser> businessUserList;

    private Long userId;

    /** 当前所属部门id合集 */
    private List<Long> deptIds;

    public List<Long> getDeptIds() {
        return deptIds;
    }

    public void setDeptIds(List<Long> deptIds) {
        this.deptIds = deptIds;
    }

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

    public Long getId() 
    {
        return id;
    }
    public void setType(String type) 
    {
        this.type = type;
    }

    public String getType() 
    {
        return type;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setReason(String reason) 
    {
        this.reason = reason;
    }

    public String getReason() 
    {
        return reason;
    }
    public void setPhoto(String photo) 
    {
        this.photo = photo;
    }

    public String getPhoto() 
    {
        return photo;
    }
    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 setAbsenteeName(String absenteeName) 
    {
        this.absenteeName = absenteeName;
    }

    public String getAbsenteeName() 
    {
        return absenteeName;
    }
    public void setExaminersId(Long examinersId) 
    {
        this.examinersId = examinersId;
    }

    public Long getExaminersId() 
    {
        return examinersId;
    }
    public void setExaminersName(String examinersName) 
    {
        this.examinersName = examinersName;
    }

    public String getExaminersName() 
    {
        return examinersName;
    }
    public void setIsPass(String isPass) 
    {
        this.isPass = isPass;
    }

    public String getIsPass() 
    {
        return isPass;
    }
    public void setReject(String reject) 
    {
        this.reject = reject;
    }

    public String getReject() 
    {
        return reject;
    }
    public void setSubmitTime(Date submitTime) 
    {
        this.submitTime = submitTime;
    }

    public Date getSubmitTime() 
    {
        return submitTime;
    }

    public List<BusinessUser> getBusinessUserList() {
        return businessUserList;
    }

    public void setBusinessUserList(List<BusinessUser> businessUserList) {
        this.businessUserList = businessUserList;
    }

    public String getTransportation() {
        return transportation;
    }

    public void setTransportation(String transportation) {
        this.transportation = transportation;
    }

    public String getDeparturePlace() {
        return departurePlace;
    }

    public void setDeparturePlace(String departurePlace) {
        this.departurePlace = departurePlace;
    }

    public String getDestination() {
        return destination;
    }

    public void setDestination(String destination) {
        this.destination = destination;
    }

    public String getDuration() {
        return duration;
    }

    public void setDuration(String duration) {
        this.duration = duration;
    }

    public Long getUserId() {
        return userId;
    }

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

    public Long getInitiatorId() {
        return initiatorId;
    }

    public void setInitiatorId(Long initiatorId) {
        this.initiatorId = initiatorId;
    }

    public String getInitiatorName() {
        return initiatorName;
    }

    public void setInitiatorName(String initiatorName) {
        this.initiatorName = initiatorName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("type", getType())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("reason", getReason())
            .append("photo", getPhoto())
            .append("deptId", getDeptId())
            .append("deptName", getDeptName())
            .append("absenteeName", getAbsenteeName())
            .append("examinersId", getExaminersId())
            .append("examinersName", getExaminersName())
            .append("isPass", getIsPass())
            .append("reject", getReject())
            .append("submitTime", getSubmitTime())
            .toString();
    }
}
