package com.ruoyi.oa.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.entity.SysUser;
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;

/**
 * cmc预算管理对象 cmc_budget
 *
 * @author cmc
 * @date 2024-03-26
 */
public class CmcBudget extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 预算id */
    private String budgetId;

    /** 项目id */
    private String projectId;
    @Excel(name = "项目编号")
    private String projectNumber;
    @Excel(name = "项目名称")
    private String projectName;

    private CmcProject project;

    /** 人员成本 */
    @Excel(name = "人员成本")
    private BigDecimal staffCost;

    /** 车辆成本 */
    @Excel(name = "车辆成本")
    private BigDecimal carCost;

    /** 设备成本 */
    @Excel(name = "设备成本")
    private BigDecimal deviceCost;

    /** 固定成本 */
    @Excel(name = "固定成本")
    private BigDecimal fixCost;

    /** 预结算额 */
    @Excel(name = "预结算额")
    private BigDecimal settleExpense;

    /** 外协费用 */
    @Excel(name = "外协费用")
    private BigDecimal outExpense;

    /** 经营费用 */
    @Excel(name = "经营费用")
    private BigDecimal businessExpense;

    /** 税费成本 */
    @Excel(name = "税费成本")
    private BigDecimal taxExpense;

    /** 车船租赁 */
    @Excel(name = "车船租赁")
    private BigDecimal rentExpense;

    /** 其他费用 */
    @Excel(name = "其他费用")
    private BigDecimal otherExpense;

    /** 外协费用备注 */
    @Excel(name = "外协费用备注")
    private String outRemark;

    /** 经营管理备注 */
    @Excel(name = "经营管理备注")
    private String businessRemark;

    /** 税费成本备注 */
    @Excel(name = "税费成本备注")
    private String taxRemark;

    /** 车船租赁备注 */
    @Excel(name = "车船租赁备注")
    private String rentRemark;

    /** 其他费用备注 */
    @Excel(name = "其他费用备注")
    private String otherRemark;

    /** 直接成本 */
    @Excel(name = "直接成本")
    private BigDecimal directExpense;

    /** 预算总额 */
    @Excel(name = "预算总额")
    private BigDecimal totalBudget;

    /** 编制人 */
    private Long compiler;

    /** 董事长 */
    private Long approver;

    /** 分管审核人 */
    private Long manager;

    @Excel(name = "编制人")
    private String compilerUserName;
    private SysUser compilerUser;

    @Excel(name = "分管审核人")
    private String managerUserName;
    private SysUser managerUser;

    @Excel(name = "总经理")
    private String zjlUserName;
    private SysUser zjlUser;

    @Excel(name = "董事长")
    private String dszUserName;
    private SysUser dszUser;

    /** 总经理 */
    private Long auditor;

    /** 总经理审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "总经理审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date zjlTime;

    /** 分管审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "分管审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date managerTime;

    /** 董事长批准时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "董事长批准时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dszTime;

    @Excel(name = "分管审核意见")
    private String managerComment;

    @Excel(name = "总经理审批意见")
    private String zjlComment;

    @Excel(name = "董事长批准意见")
    private String dszComment;

    public void setBudgetId(String budgetId)
    {
        this.budgetId = budgetId;
    }

    public String getBudgetId()
    {
        return budgetId;
    }
    public void setProjectId(String projectId)
    {
        this.projectId = projectId;
    }

    public String getProjectId()
    {
        return projectId;
    }
    public void setProject(CmcProject project)
    {
        this.project = project;
        this.projectNumber = project == null ? "" : project.getProjectNumber();
        this.projectName = project == null ? "" : project.getProjectName();
    }

    public CmcProject getProject()
    {
        return project;
    }
    public void setStaffCost(BigDecimal staffCost)
    {
        this.staffCost = staffCost;
    }

    public BigDecimal getStaffCost()
    {
        return staffCost;
    }
    public void setCarCost(BigDecimal carCost)
    {
        this.carCost = carCost;
    }

    public BigDecimal getCarCost()
    {
        return carCost;
    }
    public void setDeviceCost(BigDecimal deviceCost)
    {
        this.deviceCost = deviceCost;
    }

    public BigDecimal getDeviceCost()
    {
        return deviceCost;
    }
    public void setFixCost(BigDecimal fixCost)
    {
        this.fixCost = fixCost;
    }

    public BigDecimal getFixCost()
    {
        return fixCost;
    }
    public void setSettleExpense(BigDecimal settleExpense)
    {
        this.settleExpense = settleExpense;
    }

    public BigDecimal getSettleExpense()
    {
        return settleExpense;
    }
    public void setOutExpense(BigDecimal outExpense)
    {
        this.outExpense = outExpense;
    }

    public BigDecimal getOutExpense()
    {
        return outExpense;
    }
    public void setBusinessExpense(BigDecimal businessExpense)
    {
        this.businessExpense = businessExpense;
    }

    public BigDecimal getBusinessExpense()
    {
        return businessExpense;
    }
    public void setTaxExpense(BigDecimal taxExpense)
    {
        this.taxExpense = taxExpense;
    }

    public BigDecimal getTaxExpense()
    {
        return taxExpense;
    }
    public void setRentExpense(BigDecimal rentExpense)
    {
        this.rentExpense = rentExpense;
    }

    public BigDecimal getRentExpense()
    {
        return rentExpense;
    }
    public void setOtherExpense(BigDecimal otherExpense)
    {
        this.otherExpense = otherExpense;
    }

    public BigDecimal getOtherExpense()
    {
        return otherExpense;
    }
    public void setOutRemark(String outRemark)
    {
        this.outRemark = outRemark;
    }

    public String getOutRemark()
    {
        return outRemark;
    }
    public void setBusinessRemark(String businessRemark)
    {
        this.businessRemark = businessRemark;
    }

    public String getBusinessRemark()
    {
        return businessRemark;
    }
    public void setTaxRemark(String taxRemark)
    {
        this.taxRemark = taxRemark;
    }

    public String getTaxRemark()
    {
        return taxRemark;
    }
    public void setRentRemark(String rentRemark)
    {
        this.rentRemark = rentRemark;
    }

    public String getRentRemark()
    {
        return rentRemark;
    }
    public void setOtherRemark(String otherRemark)
    {
        this.otherRemark = otherRemark;
    }

    public String getOtherRemark()
    {
        return otherRemark;
    }
    public void setDirectExpense(BigDecimal directExpense)
    {
        this.directExpense = directExpense;
    }

    public BigDecimal getDirectExpense()
    {
        return directExpense;
    }
    public void setTotalBudget(BigDecimal totalBudget)
    {
        this.totalBudget = totalBudget;
    }

    public BigDecimal getTotalBudget()
    {
        return totalBudget;
    }
    public void setCompiler(Long compiler)
    {
        this.compiler = compiler;
    }

    public Long getCompiler()
    {
        return compiler;
    }
    public void setManager(Long manager)
    {
        this.manager = manager;
    }

    public Long getManager()
    {
        return manager;
    }
    public void setCompilerUser(SysUser compilerUser)
    {
        this.compilerUser = compilerUser;
        this.compilerUserName = compilerUser == null ? "" : compilerUser.getNickName();
    }

    public SysUser getCompilerUser()
    {
        return compilerUser;
    }

    public void setManagerUser(SysUser managerUser)
    {
        this.managerUser = managerUser;
        this.managerUserName = managerUser == null ? "" : managerUser.getNickName();
    }

    public SysUser getManagerUser()
    {
        return managerUser;
    }
    public void setZjlUser(SysUser zjlUser)
    {
        this.zjlUser = zjlUser;
        this.zjlUserName = zjlUser == null ? "" : zjlUser.getNickName();
    }

    public SysUser getZjlUser()
    {
        return zjlUser;
    }
    public void setAuditor(Long auditor)
    {
        this.auditor = auditor;
    }

    public Long getAuditor()
    {
        return auditor;
    }
    public void setApprover(Long approver)
    {
        this.approver = approver;
    }

    public Long getApprover()
    {
        return approver;
    }
    public void setDszUser(SysUser dszUser)
    {
        this.dszUser = dszUser;
        this.dszUserName = dszUser == null ? "" : dszUser.getNickName();
    }

    public SysUser getDszUser()
    {
        return dszUser;
    }
    public void setManagerTime(Date managerTime)
    {
        this.managerTime = managerTime;
    }

    public Date getManagerTime()
    {
        return managerTime;
    }
    public void setZjlTime(Date zjlTime)
    {
        this.zjlTime = zjlTime;
    }

    public Date getZjlTime()
    {
        return zjlTime;
    }
    public void setDszTime(Date dszTime)
    {
        this.dszTime = dszTime;
    }

    public Date getDszTime()
    {
        return dszTime;
    }
    public void setManagerComment(String managerComment)
    {
        this.managerComment = managerComment;
    }

    public String getManagerComment()
    {
        return managerComment;
    }
    public void setZjlComment(String zjlComment)
    {
        this.zjlComment = zjlComment;
    }

    public String getZjlComment()
    {
        return zjlComment;
    }
    public void setDszComment(String dszComment)
    {
        this.dszComment = dszComment;
    }

    public String getDszComment()
    {
        return dszComment;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("budgetId", getBudgetId())
                .append("projectId", getProjectId())
                .append("staffCost", getStaffCost())
                .append("carCost", getCarCost())
                .append("deviceCost", getDeviceCost())
                .append("fixCost", getFixCost())
                .append("settleExpense", getSettleExpense())
                .append("outExpense", getOutExpense())
                .append("businessExpense", getBusinessExpense())
                .append("rentExpense", getRentExpense())
                .append("otherExpense", getOtherExpense())
                .append("outRemark", getOutRemark())
                .append("businessRemark", getBusinessRemark())
                .append("taxRemark", getTaxRemark())
                .append("rentRemark", getRentRemark())
                .append("otherRemark", getOtherRemark())
                .append("directExpense", getDirectExpense())
                .append("totalBudget", getTotalBudget())
                .append("compiler", getCompiler())
                .append("auditor", getAuditor())
                .append("createTime", getCreateTime())
                .toString();
    }
}
