package com.xiaoniu.subsystem.business.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * <p>
 * 费用管理表
 * </p>
 *
 * @author sunsongtao
 * @since 2025-01-17 04:38:57
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("tb_expense")
@Schema(name = "Expense", description = "费用管理表")
public class Expense implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "费用ID")
    @TableId(value = "expense_id", type = IdType.AUTO)
    private Long expenseId;

    @Schema(description = "专业（班次）ID")
    private Long flightId;

    @Schema(description = "专业（班次）名称")
    private String flightName;

    @Schema(description = "专业（班次）编码")
    private String flightCode;

    @Schema(description = "承训单位ID")
    private Long trainingUnitId;

    @Schema(description = "承训单位名称")
    private String trainingUnitName;

    @Schema(description = "承训单位性质")
    private String trainingUnitNature;

    @Schema(description = "培训地点")
    private String trainingSite;

    @Schema(description = "机关预算金额")
    private String organBudgetedAmount;

    @Schema(description = "承训单位预算金额")
    private String trainingBudgetedAmount;

    @Schema(description = "限额标准")
    private String quotaStandard;

    @Schema(description = "结算金额")
    private String settlementAmount;

    @Schema(description = "房间个数")
    private String roomsNumber;

    @Schema(description = "房间单价")
    private String roomsUnitPrice;

    @Schema(description = "住宿费")
    private String accommodationCost;

    @Schema(description = "伙食费单价")
    private String mealsUnitPrice;

    @Schema(description = "伙食费")
    private String boardMoney;

    @Schema(description = "会议室个数")
    private String conferenceRoomNumber;

    @Schema(description = "会议室单价")
    private String conferenceRoomUnitPrice;

    @Schema(description = "场地费（会议室）")
    private String conferenceRoom;

    @Schema(description = "车间个数")
    private String workshopNumber;

    @Schema(description = "车间单价")
    private String workshopUnitPrice;

    @Schema(description = "场地费（生产车间）")
    private String productionWorkshop;

    @Schema(description = "其他费用（培训资料费）")
    private String trainingMaterialsFee;

    @Schema(description = "其他费用（交通费）")
    private String transportatioExpense;

    @Schema(description = "其他费用（讲课费）")
    private String lectureFee;

    @Schema(description = "其他费用（保障管理费）")
    private String supportManagementFee;

    @Schema(description = "其他费用")
    private String otherExpenses;

    @Schema(description = "合计")
    private BigDecimal total;

    @Schema(description = "实际参训人数")
    private String participantsNumber;

    @Schema(description = "计划参训人数")
    private String plannedNumber;

    @Schema(description = "培训天数")
    private String trainingDays;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "开训时间")
    private Date trainingTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "结束时间")
    private Date endTime;

    @Schema(description = "年度")
    private String year;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "结算单URL")
    private String settleAccountUrl;

    @Schema(description = "明细（住宿费-标间）金额")
    private BigDecimal accommodationCostDetail;

    @Schema(description = "明细（住宿费-标间）金额备注")
    private String accommodationCostRemark;

    @Schema(description = "明细（住宿费）小计")
    private BigDecimal accommodationCostDetailSubtotal;

    @Schema(description = "明细（住宿费）小计备注")
    private String accommodationCostRemarkSubtotal;

    @Schema(description = "明细（伙食-餐费）金额")
    private BigDecimal boardMoneyDetail;

    @Schema(description = "明细（伙食-餐费）金额备注")
    private String boardMoneyRemark;

    @Schema(description = "明细（伙食费）小计")
    private BigDecimal boardMoneyDetailSubtotal;

    @Schema(description = "明细（伙食费）小计备注")
    private String boardMoneyRemarkSubtotal;

    @Schema(description = "明细（场地-车间）金额")
    private BigDecimal productionWorkshopDetail;

    @Schema(description = "明细（场地-车间）金额备注")
    private String productionWorkshopRemark;

    @Schema(description = "明细（场地-会议室）金额")
    private BigDecimal conferenceRoomDetail;

    @Schema(description = "明细（场地-会议室）金额备注")
    private String conferenceRoomRemark;

    @Schema(description = "明细（场地费）小计")
    private BigDecimal venueCostDetailSubtotal;

    @Schema(description = "明细（场地费）小计备注")
    private String venueCostRemarkSubtotal;

    @Schema(description = "明细（其他-课酬费）金额")
    private BigDecimal lectureFeeDetail;

    @Schema(description = "明细（其他-课酬费）金额备注")
    private String lectureFeeRemark;

    @Schema(description = "明细（其他-培训学员证）金额")
    private BigDecimal studentCardFeeDetail;

    @Schema(description = "明细（其他-培训学员证）金额备注")
    private String studentCardFeeRemark;

    @Schema(description = "明细（其他-培训手册）金额")
    private BigDecimal manualCostDetail;

    @Schema(description = "明细（其他-培训手册）金额备注")
    private String manualCostRemark;

    @Schema(description = "明细（其他-培训资料）金额")
    private BigDecimal trainingMaterialsFeeDetail;

    @Schema(description = "明细（其他-培训资料）金额备注")
    private String trainingMaterialsFeeRemark;

    @Schema(description = "明细（其他-交通费）金额")
    private BigDecimal transportatioExpenseDetail;

    @Schema(description = "明细（其他-交通费）金额备注")
    private String transportatioExpenseRemark;

    @Schema(description = "明细（其他-保障管理费）金额")
    private BigDecimal supportManagementFeeDetail;

    @Schema(description = "明细（其他-保障管理费）金额备注")
    private String supportManagementFeeRemark;

    @Schema(description = "明细（其他费用）小计")
    private BigDecimal otherExpensesDetailSubtotal;

    @Schema(description = "明细（其他费用）小计备注")
    private String otherExpensesRemarkSubtotal;

    @Schema(description = "明细（合计）金额")
    private BigDecimal totalDetail;

    @Schema(description = "明细（合计）备注")
    private String totalDetailRemark;

    @Schema(description = "明细URL")
    private String detailUrl;

    @Schema(description = "创建人")
    private Long createUser;

    @Schema(description = "创建部门")
    private Long createDept;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间")
    private Date createTime;

    @Schema(description = "修改人")
    private Long updateUser;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "修改时间")
    private Date updateTime;

    @Schema(description = "状态")
    private Integer status;

    @Schema(description = "是否已删除")
    private Integer isDeleted;
}
